oracle筆記整理14——效能調優之oracle執行計劃
1) 優化器(optimizer)
a) RBO(rule-based optimizer)方式:基於規劃的優化方式
所遵循的是oracle內部預定的一些規則.
b) CBO(cost-based optimizer)方式:看語句的執行代價(cost),這裡的代價主要指cpu和記憶體。
優化器在判斷是否用這種方式時,主要參照的是表及索引的統計資訊。
2) 優化模式
a) rule:基於規則的方式
b) choose:預設使用方式,有統計資訊,採用CBO,無統計資訊,採用RBO.
c) first rows:有統計資訊,以最快的時間返回最先幾行,通常為NL連線方式。
d) all rows:即cost方式,有統計資訊,以最快的方式返回表的所有行,無統計資訊,才用RBO;
e) 更新統計資訊
表: analyze table table_name compute statistics
索引:analyze index index_name estimate statistics
f) 有時候明明有索引但是執行計劃沒有走索引,原因有二,第一:表或索引的統計資訊缺失或過時;第二:表太小,oracle認為不值得走索引。
3) 執行計劃管理
優化器會維護所有執行次數超過一次的sql語句的每個執行計劃的歷史列表(plan history),優化器通過維護一個語句執行的日誌條目(statement log)來識別該sql是否為第二次執行。如果為第二次執行,則優化器將語句生成的所有執行計劃都插入到plan history表中,只有當新的執行計劃的成本比plan baseline 執行計劃基準線中的成本低時才使用。
4) sql plus中開啟執行計劃
a) SET AUTOTRACE ON
–包含執行計劃、統計資訊、以及指令碼結果資料輸出
b) SET AUTOTRACE ON EXPLAIN
–包含執行計劃、指令碼結果資料輸出,沒有統計資訊
c) SET AUTOTRACE TRACEONLY
–有執行計劃、統計資訊,不會有指令碼結果資料輸出
d) SET AUTOTRACE OFF
–不生成AUTOTRACE報告,這是預設模式
e) 注意:PL/SQL Dev工具的Command window中不支援set autotrance on的命令。在PL/SQL中可以按F5來檢視。
5) 示例
a) set autotrace traceonly
b) 統計資訊:
c) 動態分析
Note
------------
-dynamic sampling used for the statement
這提示使用者CBO當前使用的技術, 當出現這個提示,說明當前表使用了動態取樣。說明這個表可能沒有分析統計資訊。
相關文章
- Oracle調優之看懂Oracle執行計劃Oracle
- oracle筆記整理13——效能調優之SQL優化Oracle筆記SQL優化
- oracle筆記整理12——效能調優之hint標籤Oracle筆記
- oracle筆記整理11——效能調優之oracle等待事件與表關聯Oracle筆記事件
- Oracle+高效能SQL引擎剖析:SQL優化與調優機制詳解-筆記之執行計劃(一)OracleSQL優化筆記
- Oracle+高效能SQL引擎剖析:SQL優化與調優機制詳解-筆記之執行計劃(二)OracleSQL優化筆記
- oracle筆記整理10——效能調優之臨時表與物化檢視Oracle筆記
- 【sql調優之執行計劃】獲取執行計劃SQL
- 【優化】Oracle 執行計劃優化Oracle
- mysql調優之——執行計劃explainMySqlAI
- 【優化】ORACLE執行計劃分析優化Oracle
- 【sql調優之執行計劃】sort operationsSQL
- 【sql調優之執行計劃】estimator iSQL
- 【sql調優之執行計劃】hash joinSQL
- Oracle效能調整筆記Oracle筆記
- Oracle如何手動重新整理執行計劃Oracle
- 【sql調優之執行計劃】query transformerSQLORM
- 【sql調優之執行計劃】temp table transformationSQLORM
- ORACLE執行計劃Oracle
- ORACLE效能優化筆記Oracle優化筆記
- oracle效能調整筆記[zt]Oracle筆記
- 效能調優:看看這個匪夷所思的執行計劃。
- 【sql調優之執行計劃】in相關的operationSQL
- 【sql調優之執行計劃】merge sort joinSQL
- oracle效能調優Oracle
- oracle 固定執行計劃Oracle
- Oracle sql執行計劃OracleSQL
- 【sql調優之執行計劃】使用hint(五)Hint for parallelSQLParallel
- 【sql調優之執行計劃】使用hint(四)Hints for JoinSQL
- ORACLE SQL調優之執行計劃與隱藏引數_complex_view_mergingOracleSQLView
- Oracle 效能調優 概述Oracle
- Oracle效能調優之FreeList和HWMOracle
- Oracle效能調優 之FreeList和HWMOracle
- Oracle執行計劃詳解Oracle
- oracle固定執行計劃--sqlprofileOracleSQL
- Oracle 索引和執行計劃Oracle索引
- Oracle閱讀執行計劃Oracle
- oracle執行計劃相關Oracle