统计信息不正确导致执行计划的错误选择

过时的统计信息,会对执行计划的选择产生偏差。尤其对于突然产生的性能很差的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

请使用浏览器的分享功能分享到微信等