GATHER PLAN STATISTICS

目次

概念

 

GATHER_PLAN_STATISTICSヒントを使用すると、SQLの実行時にRow Source Operation情報を収集します。収集された情報は、DBMS_XPLAN.DISPLAY_CURSORプロシージャを使用して確認可能です。

使い方

 

GATHER_PLAN_STATISTICSヒントの使用方法は、次のとおりです。

 

SQL> select / * + gather_plan_statistics * / * from delete_test where id <1000;
 
SQL> select * from table(dbms_xplan.display_cursor(null、null、「ALLSTATS LAST '));
 -  10gR1で
 -  SQL> select * from table(dbms_xplan.display_cursor(null、null、「RUNSTATS_LAST '));
 -  null、null値は、最も最近に実行されたクエリを意味します。もし、特定のクエリを指定したい場合は
  SQL IDとChild Numberを与えます。
 
PLAN_TABLE_OUTPUT
-------------------------------------------------- ------------------------------
SQL_ID 04zt89r2fw2uw、child number 0
-------------------------------------
select / * + gather_plan_statistics * / * from delete_test where id <1000
 
Plan hash value:1827500787
 
-------------------------------------------------- -----------------------------------------
| Id | Operation | Name | Starts | E-Rows | A-Rows | A-Time | Buffers |
-------------------------------------------------- -----------------------------------------
| 1 | TABLE ACCESS BY INDEX ROWID | DELETE_TEST | 1 | 1 | 1000 | 00:00:00.01 | 140 |
| * 2 | INDEX RANGE SCAN | DELETE_TEST_IDX | 1 | 1 | 1000 | 00:00:00.01 | 70 |

Predicate Information(identified by operation id):
-------------------------------------------------- - 
   2  -  access( "ID" <1000)

上記の情報では、次のような用語を理解する必要があります。

・E-Rows:Estimated Row数を意味します。
・A-Rows:Actual Row数を意味します。E-RowsとA-Rowsが大きな違いが出た場合、
     統計情報とCostの計算に問題があることを意味します。
・A-Time:Actual Elapsed Timeを意味します。この時間には、情報収集によるOverheadを含んでいます。
・Buffers:読んだBuffer数を意味します。
・Starts:Row Source Operationを実行した回数を意味します。
     つまり、E-Rows* Startsの値をA-Rowsと比較しなければなりません。

サポート

GATHER_PLAN_STATISTICSヒントは、Oracle10gからサポートされています。

参照事項

 

GATHER_PLAN_STATISTICSヒントを使用すると、SQLの実行時に予測計画(Explain Plan)によるRow数と実際の実行(Row Source Operation)によるRow数を比較することができますので、チューニングするときに役立ちます。ただし、特定のバージョンやOSでは、STATISTICS_LEVELパラメータの値をALLにしなければなら正確な情報が出てくる場合があるので注意が必要です。

関連情報

 

1.DBMS_STASパッケージ
2.Explain Plan
3.10046 Event

外部参照

 

 1.http://jonathanlewis.wordpress.com/2006/11/09/dbms_xplan-in-10g 
 2.http://jonathanlewis.wordpress.com/2007/04/26/heisenberg/