統計資訊不正確導致執行計劃的錯誤選擇
過時的統計資訊,會對執行計劃的選擇產生偏差。尤其對於突然產生的效能很差的SQL,可以從這個方向去判斷。
參考:http://www.eygle.com/archives/2011/02/dba_event_10046_10053.html
上文中的例子,過程概述:
1)檢視執行計劃顯示的“疑問表”的行數rows_A;
2)檢視10053 event trace中顯示的“疑問表”的行數rows_B;
rows_A是統計資訊中的值,rows_B是實際計算的值。
文章示例是在9i下的,以下是11g的示例,與9i略有不同。
參考:http://www.eygle.com/archives/2011/02/dba_event_10046_10053.html
上文中的例子,過程概述:
1)檢視執行計劃顯示的“疑問表”的行數rows_A;
2)檢視10053 event trace中顯示的“疑問表”的行數rows_B;
rows_A是統計資訊中的值,rows_B是實際計算的值。
文章示例是在9i下的,以下是11g的示例,與9i略有不同。
點選(此處)摺疊或開啟
-
-----------------------------
-
SYSTEM STATISTICS INFORMATION
-
-----------------------------
-
Using NOWORKLOAD Stats
-
CPUSPEEDNW: 3074 millions instructions/sec (default is 100)
-
IOTFRSPEED: 4096 bytes per millisecond (default is 4096)
-
IOSEEKTIM: 10 milliseconds (default is 10)
-
MBRC: NO VALUE blocks (default is 8)
-
-
***************************************
-
BASE STATISTICAL INFORMATION
-
***********************
-
Table Stats::
-
Table: SUM$ Alias: S
-
#Rows: 1 #Blks: 1 AvgRowLen: 129.00 ChainCnt: 0.00
-
Index Stats::
-
Index: SYS_IL0000001030C00030$$ Col#: (NOT ANALYZED)
-
LVLS: 1 #LB: 25 #DK: 100 LB/K: 1.00 DB/K: 1.00 CLUF: 800.00
-
Index: SYS_IL0000001030C00031$$ Col#: (NOT ANALYZED)
-
LVLS: 1 #LB: 25 #DK: 100 LB/K: 1.00 DB/K: 1.00 CLUF: 800.00
-
Index: I_SUM$_1 Col#: 1
-
LVLS: 0 #LB: 1 #DK: 1 LB/K: 1.00 DB/K: 1.00 CLUF: 1.00
-
***************************************
-
1-ROW TABLES: SUM$[S]#0
-
Access path analysis for SUM$
-
***************************************
-
SINGLE TABLE ACCESS PATH
-
Single Table Cardinality Estimation for SUM$[S]
-
Column (#1): OBJ#(
-
AvgLen: 5 NDV: 1 Nulls: 0 Density: 1.000000 Min: 81279 Max: 81279
-
Column (#11): XPFLAGS(
-
AvgLen: 6 NDV: 1 Nulls: 0 Density: 1.000000 Min: 67108864 Max: 67108864
-
Table: SUM$ Alias: S
-
Card: Original: 1.000000 Rounded: 1 Computed: 0.01 Non Adjusted: 0.01
-
Access Path: TableScan
- Cost: 2.00 Resp: 2.00 Degree: 0
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22621861/viewspace-2113854/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 統計資訊不準確導致執行計劃走了笛卡爾積
- 執行計劃錯誤導致系統負載高負載
- date列統計資訊陳舊導致sql沒有選擇最優執行計劃SQL
- 慎用sys_context,可能導致無法正確的bind_peeking,而選擇錯誤的執行計劃Context
- autotrace 和explain plan for可能導致執行計劃錯誤AI
- 11G的SORT GROUP BY NOSORT導致錯誤執行計劃
- Oracle 表連線 篩選欄位執行計劃不正確Oracle
- ORACLE analyse table方式收集表統計資訊導致SQL執行計劃不準確而效能下降OracleSQL
- 系統日期設定不正確導致的ORA-01839錯誤
- 程式中使用繫結變數,執行計劃不正確變數
- _optimizer_invalidation_periond導致收集統計資訊後執行計劃沒有改變
- 執行計劃的偏差導致的效能問題
- Linux計劃任務crontab執行指令碼不正確的問題Linux指令碼
- 完美的執行計劃導致的效能問題
- Grant許可權導致執行計劃失效
- 索引失效系列——統計量過期引起執行計劃錯誤索引
- 【PG執行計劃】Postgresql資料庫執行計劃統計資訊簡述SQL資料庫
- 統計資訊過舊導致SQL無法執行出來SQL
- 交流(1)-- 執行計劃錯誤問題
- 收集統計資訊中的no_invalidate選項對執行計劃的影響
- 由於統計量失真造成SQL執行計劃錯誤一例SQL
- MySQL5.6執行計劃錯誤案例分析MySql
- 看執行計劃是否正確
- sql中使用函式導致explain plan for和set autotrace得到執行計劃不準確SQL函式AI
- 【YashanDB知識庫】收集分割槽表統計資訊取樣率小於1導致SQL執行計劃走偏SQL
- 怎樣得到準確的執行計劃
- 手工收集統計資訊及立即產生新的執行計劃
- oracle執行計劃與統計資訊的一些總結Oracle
- 執行計劃__獲取方法、檢視執行順序、統計資訊詳解
- Oracle當number型別超過一定長度直方圖限制導致SQL執行計劃錯誤Oracle型別直方圖SQL
- 執行計劃變化導致CPU負載高的問題分析負載
- Oracle優化案例-統計資訊對執行計劃的影響(十三)Oracle優化
- 執行計劃中的COLLECTION ITERATOR PICKLER FETCH導致的效能問題
- 動態建立 @ViewChild 導致執行時錯誤的原因分析View
- 【OUTLINE】環境不滿足OUTLINE記錄的執行計劃時會選擇其他執行計劃
- 執行計劃-2:檢視更多的資訊
- 執行計劃-4:謂詞的選擇時機與使用細節
- 通過鎖定表的統計資訊來穩定sql的執行計劃SQL