龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 数据库类 > Oracle 技术 >

Oracle数据库:全局索引的ONLINE重建要影响执行速度(1)(2)

时间:2011-04-12 23:18来源:未知 作者:admin 点击:
分享到:
4.DBMS_STATS.GATHER_TABLE_STATS统计表,列,索引的统计信息. SQL EXECDBMS_STATS.GATHER_TABLE_STATS(USER,'T', CASCADE = TRUE); PL/SQLproceduresuccessfullycompleted. SQL EXPLAINPLANFORALTERINDEXT

4.DBMS_STATS.GATHER_TABLE_STATS统计表,列,索引的统计信息.

  1. SQL> EXEC DBMS_STATS.GATHER_TABLE_STATS(USER,'T',CASCADE=>TRUE);  
  2.  
  3. PL/SQL procedure successfully completed.  
  4.  
  5. SQL> EXPLAIN PLAN FOR ALTER INDEX T_ID_IDX REBUILD PARTITION SYS_P225;  
  6.  
  7. Explained.  
  8.  
  9. SQL> SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);  
  10.  
  11. PLAN_TABLE_OUTPUT  
  12.  
  13. Plan hash value: 2508449852  
  14.  
  15. ------------------------------------------------------------------------------------  
  16.  
  17. | Id  | Operation               | Name     | Rows  | Bytes | Cost  | Pstart| Pstop |  
  18.  
  19. ------------------------------------------------------------------------------------  
  20.  
  21. |   0 | ALTER INDEX STATEMENT   |          | 50617 |   247K|    56 |       |       |  
  22.  
  23. |   1 |  INDEX BUILD NON UNIQUE | T_ID_IDX |       |       |       |       |       |  
  24.  
  25. |   2 |   SORT CREATE INDEX     |          | 50617 |   247K|       |       |       |  
  26.  
  27. |   3 |    PARTITION HASH SINGLE|          |       |       |       |     1 |     1 |  
  28.  
  29. |   4 |     INDEX FAST FULL SCAN| T_ID_IDX |       |       |       |     1 |     1 |  
  30.  
  31. ------------------------------------------------------------------------------------  
  32.  
  33. Note  
  34.  
  35. -----  
  36.  
  37. - cpu costing is off (consider enabling it)  
  38.  
  39. 15 rows selected.  
  40.  
  41. SQL> EXPLAIN PLAN FOR ALTER INDEX T_ID_IDX REBUILD PARTITION SYS_P225 ONLINE;  
  42.  
  43. Explained.  
  44.  
  45. SQL> SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);  
  46.  
  47. PLAN_TABLE_OUTPUT  
  48.  
  49. ----------------------------------------------------------------------------------------------------  
  50.  
  51. Plan hash value: 78911014  
  52.  
  53. -----------------------------------------------------------------------------------  
  54.  
  55. | Id  | Operation              | Name     | Rows  | Bytes | Cost  | Pstart| Pstop |  
  56.  
  57. -----------------------------------------------------------------------------------  
  58.  
  59. |   0 | ALTER INDEX STATEMENT  |          | 50617 |   247K|    56 |       |       |  
  60.  
  61. |   1 |  INDEX BUILD NON UNIQUE| T_ID_IDX |       |       |       |       |       |  
  62.  
  63. |   2 |   SORT CREATE INDEX    |          | 50617 |   247K|       |       |       |  
  64.  
  65. |   3 |    PARTITION RANGE ALL |          | 50617 |   247K|    56 |     1 |     6 |  
  66.  
  67. |*  4 |     TABLE ACCESS FULL  | T        | 50617 |   247K|    56 |     1 |     6 |  
  68.  
  69. -----------------------------------------------------------------------------------  
  70.  
  71. Predicate Information (identified by operation id):  
  72.  
  73. ---------------------------------------------------  
  74.  
  75. 4 - filter(TBL$OR$IDX$PART$NUM("TEST"."T",58596,0,1048576,"ID")=1)  
  76.  
  77. Note  
  78.  
  79. -----  
  80.  
  81. - cpu costing is off (consider enabling it)  
  82.  
  83. 20 rows selected.  
  84.  
  85. SQL> EXPLAIN PLAN FOR ALTER INDEX T_ID_IDX REBUILD PARTITION SYS_P226;  
  86.  
  87. Explained.  
  88.  
  89. SQL> SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);  
  90.  
  91. PLAN_TABLE_OUTPUT  
  92.  
  93. ----------------------------------------------------------------------------------------------------  
  94.  
  95. Plan hash value: 2508449852  
  96.  
  97. ------------------------------------------------------------------------------------  
  98.  
  99. | Id  | Operation               | Name     | Rows  | Bytes | Cost  | Pstart| Pstop |  
  100.  
  101. ------------------------------------------------------------------------------------  
  102.  
  103. |   0 | ALTER INDEX STATEMENT   |          | 50617 |   247K|    56 |       |       |  
  104.  
  105. |   1 |  INDEX BUILD NON UNIQUE | T_ID_IDX |       |       |       |       |       |  
  106.  
  107. |   2 |   SORT CREATE INDEX     |          | 50617 |   247K|       |       |       |  
  108.  
  109. |   3 |    PARTITION HASH SINGLE|          |       |       |       |     2 |     2 |  
  110.  
  111. |   4 |     INDEX FAST FULL SCAN| T_ID_IDX |       |       |       |     2 |     2 |  
  112.  
  113. ------------------------------------------------------------------------------------  
  114.  
  115. Note  
  116.  
  117. -----  
  118.  
  119. - cpu costing is off (consider enabling it)  
  120.  
  121. 15 rows selected.  
  122.  
  123. SQL> EXPLAIN PLAN FOR ALTER INDEX T_ID_IDX REBUILD PARTITION SYS_P226 ONLINE;  
  124.  
  125. Explained.  
  126.  
  127. SQL> SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);  
  128.  
  129. PLAN_TABLE_OUTPUT  
  130.  
  131. ----------------------------------------------------------------------------------------------------  
  132.  
  133. Plan hash value: 78911014  
  134.  
  135. -----------------------------------------------------------------------------------  
  136.  
  137. | Id  | Operation              | Name     | Rows  | Bytes | Cost  | Pstart| Pstop |  
  138.  
  139. -----------------------------------------------------------------------------------  
  140.  
  141. |   0 | ALTER INDEX STATEMENT  |          | 50617 |   247K|    56 |       |       |  
  142.  
  143. |   1 |  INDEX BUILD NON UNIQUE| T_ID_IDX |       |       |       |       |       |  
  144.  
  145. |   2 |   SORT CREATE INDEX    |          | 50617 |   247K|       |       |       |  
  146.  
  147. |   3 |    PARTITION RANGE ALL |          | 50617 |   247K|    56 |     1 |     6 |  
  148.  
  149. |*  4 |     TABLE ACCESS FULL  | T        | 50617 |   247K|    56 |     1 |     6 |  
  150.  
  151. -----------------------------------------------------------------------------------  
  152.  
  153. Predicate Information (identified by operation id):  
  154.  
  155. ---------------------------------------------------  
  156.  
  157. 4 - filter(TBL$OR$IDX$PART$NUM("TEST"."T",58596,0,1048576,"ID")=2)  
  158.  
  159. Note  
  160.  
  161. -----  
  162.  
  163. - cpu costing is off (consider enabling it)  
  164.  
  165. 20 rows selected. 

可以看到,如果要ONLINE重建这个索引,将会对表T执行32全表扫描。如果要对比较大的表进行在线重建索引,全局索引的重建代价是比较高的,因此耗时会比较长。

精彩图集

赞助商链接