統計資訊不正確導致執行計劃的錯誤選擇

hooca發表於2016-06-04
過時的統計資訊,會對執行計劃的選擇產生偏差。尤其對於突然產生的效能很差的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略有不同。


點選(此處)摺疊或開啟

  1. -----------------------------
  2. SYSTEM STATISTICS INFORMATION
  3. -----------------------------
  4.   Using NOWORKLOAD Stats
  5.   CPUSPEEDNW: 3074 millions instructions/sec (default is 100)
  6.   IOTFRSPEED: 4096 bytes per millisecond (default is 4096)
  7.   IOSEEKTIM: 10 milliseconds (default is 10)
  8.   MBRC: NO VALUE blocks (default is 8)

  9. ***************************************
  10. BASE STATISTICAL INFORMATION
  11. ***********************
  12. Table Stats::
  13.   Table: SUM$ Alias: S
  14.     #Rows: 1 #Blks: 1 AvgRowLen: 129.00 ChainCnt: 0.00
  15. Index Stats::
  16.   Index: SYS_IL0000001030C00030$$ Col#: (NOT ANALYZED)
  17.     LVLS: 1 #LB: 25 #DK: 100 LB/K: 1.00 DB/K: 1.00 CLUF: 800.00
  18.   Index: SYS_IL0000001030C00031$$ Col#: (NOT ANALYZED)
  19.     LVLS: 1 #LB: 25 #DK: 100 LB/K: 1.00 DB/K: 1.00 CLUF: 800.00
  20.   Index: I_SUM$_1 Col#: 1
  21.     LVLS: 0 #LB: 1 #DK: 1 LB/K: 1.00 DB/K: 1.00 CLUF: 1.00
  22. ***************************************
  23. 1-ROW TABLES: SUM$[S]#0
  24. Access path analysis for SUM$
  25. ***************************************
  26. SINGLE TABLE ACCESS PATH
  27.   Single Table Cardinality Estimation for SUM$[S]
  28.   Column (#1): OBJ#(
  29.     AvgLen: 5 NDV: 1 Nulls: 0 Density: 1.000000 Min: 81279 Max: 81279
  30.   Column (#11): XPFLAGS(
  31.     AvgLen: 6 NDV: 1 Nulls: 0 Density: 1.000000 Min: 67108864 Max: 67108864
  32.   Table: SUM$ Alias: S
  33.     Card: Original: 1.000000 Rounded: 1 Computed: 0.01 Non Adjusted: 0.01
  34.   Access Path: TableScan
  35.     Cost: 2.00 Resp: 2.00 Degree: 0

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22621861/viewspace-2113854/,如需轉載,請註明出處,否則將追究法律責任。

相關文章