Oracle性能調優——查看執行計劃

在對oracle查詢進行優化的時候,我們可以通過查看SQL語句的解釋計劃,從而找到SQL查詢緩慢的原因以及對應的優化方法。具體來說,查看SQL的解釋計劃,有三種方式:explain plan for命令、PL/SQL Developer、Oracle SQL Developer。其中,explain plan for命令可以通過sqlplus執行,Oracle SQL Developer在安裝數據庫的時候應該已經安裝有了,沒有的話,也可以到網上去下載安裝。

Oracle性能調優——查看執行計劃

explain plan for命令

在sqlplus下登錄到數據庫,執行以下命令: 1)explain plan for select * from dual; +回車 2)select * from table(dbms_xplan.display); +回車

示例如圖:

Oracle性能調優——查看執行計劃

PL/SQL Developer

在PL/SQL Developer中寫好一段SQL代碼後,按F5,PL/SQL Developer會自動打開執行計劃窗口,顯示該SQL的執行計劃。 其實,PL/SQL Developer和下面提到的Oracle SQL Developer功能基本上一致,使用上也差不多。

Oracle SQL Developer

如圖所示,Oracle SQL Developer同樣可以查看到指定sql的解釋計劃。而且Oracle SQL Developer還提供了SQL優化指導(比如在哪些字段上創建索引、創建什麼類型的索引,會提高查詢速度),我們就可以根據優化指導建議對我們的數據庫進行優化。

Oracle性能調優——查看執行計劃

Oracle性能調優——查看執行計劃

根據執行計劃進行性能調優

查看總COST,獲得資源耗費的總體印象

一般而言,執行計劃第一行所對應的COST(即成本耗費)值,反應了運行這段SQL的總體估計成本,單看這個總成本沒有實際意義,但可以拿它與相同邏輯不同執行計劃的SQL的總體COST進行比較,通常COST低的執行計劃要好一些。

按照從左至右,從上至下的方法,瞭解執行計劃的執行步驟

執行計劃按照層次逐步縮進,從左至右看,縮進最多的那一步,最先執行,如果縮進量相同,則按照從上而下的方法判斷執行順序,可粗略認為上面的步驟優先執行。每一個執行步驟都有對應的COST,可從單步COST的高低,以及單步的估計結果集(對應ROWS/基數),來分析表的訪問方式,連接順序以及連接方式是否合理。

分析表的訪問方式

表的訪問方式主要是兩種:全表掃描(TABLE ACCESS FULL)和索引掃描(INDEX SCAN),如果表上存在選擇性很好的索引,卻走了全表掃描,而且是大表的全表掃描,就說明表的訪問方式可能存在問題;若大表上沒有合適的索引而走了全表掃描,就需要分析能否建立索引,或者是否能選擇更合適的表連接方式和連接順序以提高效率。

分析表的連接方式和連接順序

表的連接順序:就是以哪張表作為驅動表來連接其他表的先後訪問順序。 表的連接方式:簡單來講,就是兩個表獲得滿足條件的數據時的連接過程。

注意: 這裡看到的執行計劃,只是SQL運行前可能的執行方式,實際運行時可能因為軟硬件環境的不同,而有所改變,而且cost高的執行計劃,不一定在實際運行起來,速度就一定差,我們平時需要結合執行計劃,和實際測試的運行時間,來確定一個執行計劃的好壞。


分享到:


相關文章: