執行計劃中Cardinality (Estimated Rows, E-Rows) 估算錯誤原因分析
http://structureddata.org/2007/11/21/troubleshooting-bad-execution-plans/
1. Data skew : NDV (Number of distinct values) inaccurate due to data skew and a poor dbms_stats sample?
Data correlation: Are two or more predicates related to each other?
Out-of-range values: Is the predicate within the range of known values?
Use of functions in predicates: Is the 5% cardinality guess for functions accurate?
Stats gathering strategies: Is your stats gathering strategy yielding representative stats?
Some possible solutions to these issues are:
Data skew (資料傾斜): 選擇一個sample size得出正確的 NDV (Number of distinct values). 11g中使用DBMS_STATS.AUTO_SAMPLE_SIZE
直方圖也是一個選項 。
Data correlation (資料相關): 當謂詞使用多個相關列(correlated column)時,會導致約束條件的冗餘。這幾個相關的列也被稱作關聯列。
出現這種情況時,查詢最佳化器也可能會做出不準確的判斷,在11g中可以使用 Extended Stats收集基於表示式或者一組列上
的物件統計資訊和直方圖,從而解決這種問題. 如果版本<= 10.2.0.3 可以使用 CARDINALITY hint .
Out-of-range values: 謂詞在所知值的範圍之外,需要收集或手工設定statistics。
Use of functions in predicates: 謂詞中使用函式。在可能的地方使用 CARDINALITY hint 。
Stats gathering strategies: 資料收集策略是否產生具有代表性的統計資訊。嘗試使用AUTO_SAMPLE_SIZE. Adjust only where necessary.
Be mindful of tables with skewed data.
1. Data skew : NDV (Number of distinct values) inaccurate due to data skew and a poor dbms_stats sample?
Data correlation: Are two or more predicates related to each other?
Out-of-range values: Is the predicate within the range of known values?
Use of functions in predicates: Is the 5% cardinality guess for functions accurate?
Stats gathering strategies: Is your stats gathering strategy yielding representative stats?
Some possible solutions to these issues are:
Data skew (資料傾斜): 選擇一個sample size得出正確的 NDV (Number of distinct values). 11g中使用DBMS_STATS.AUTO_SAMPLE_SIZE
直方圖也是一個選項 。
Data correlation (資料相關): 當謂詞使用多個相關列(correlated column)時,會導致約束條件的冗餘。這幾個相關的列也被稱作關聯列。
出現這種情況時,查詢最佳化器也可能會做出不準確的判斷,在11g中可以使用 Extended Stats收集基於表示式或者一組列上
的物件統計資訊和直方圖,從而解決這種問題. 如果版本<= 10.2.0.3 可以使用 CARDINALITY hint .
Out-of-range values: 謂詞在所知值的範圍之外,需要收集或手工設定statistics。
Use of functions in predicates: 謂詞中使用函式。在可能的地方使用 CARDINALITY hint 。
Stats gathering strategies: 資料收集策略是否產生具有代表性的統計資訊。嘗試使用AUTO_SAMPLE_SIZE. Adjust only where necessary.
Be mindful of tables with skewed data.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-1383468/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle中執行計劃中的cardinalityOracle
- MySQL5.6執行計劃錯誤案例分析MySql
- 執行計劃的代價估算
- 執行計劃不穩定的原因分析
- 交流(1)-- 執行計劃錯誤問題
- DB優化小常識 - 執行計劃中Cardinality的計算優化
- oracle cardinality對於執行計劃的影響Oracle
- 動態建立 @ViewChild 導致執行時錯誤的原因分析View
- (4) MySQL中EXPLAIN執行計劃分析MySqlAI
- explain執行計劃分析AI
- SQL執行計劃分析SQL
- 分析執行計劃優化SQLORACLE的執行計劃(轉)優化SQLOracle
- autotrace 和explain plan for可能導致執行計劃錯誤AI
- 執行計劃錯誤導致系統負載高負載
- 索引失效系列——統計量過期引起執行計劃錯誤索引
- 分析執行計劃最佳化SQLORACLE的執行計劃(轉)SQLOracle
- 統計資訊不正確導致執行計劃的錯誤選擇
- 檢視執行計劃出現ORA-22992錯誤
- 11G的SORT GROUP BY NOSORT導致錯誤執行計劃
- DB2執行計劃分析DB2
- SqlServer的執行計劃如何分析?SQLServer
- 【優化】ORACLE執行計劃分析優化Oracle
- 由於統計量失真造成SQL執行計劃錯誤一例SQL
- Job不能執行原因分析
- 執行計劃-1:獲取執行計劃
- mysql 執行計劃索引分析筆記MySql索引筆記
- 看懂Oracle中的執行計劃Oracle
- oracle中開啟執行計劃Oracle
- 執行錯誤集
- 執行指令碼寫入中間表錯誤返回錯誤資訊指令碼
- 執行計劃
- Oracle檢視正在執行的SQL以及執行計劃分析OracleSQL
- sql執行計劃變更和刪除快取中執行計劃的方法SQL快取
- SQLSERVER中得到執行計劃的方式SQLServer
- MySQL中in(常量列表)的執行計劃MySql
- 通過執行計劃中的CONCATENATION分析sql問題SQL
- 透過執行計劃中的CONCATENATION分析sql問題SQL
- oracle的執行計劃居然出錯[轉帖]Oracle