自動統計収集アクティビティーのロギング

統計ログは、特定のデータベースに対して生じたすべての統計収集アクティビティー (手動と自動の両方) に関する記録です。

統計ログのデフォルト名は db2optstats.number.log です。 これは $diagpath/events ディレクトリーにあります。 統計ログは回転ログです。 ログの動作は、DB2_OPTSTATS_LOG レジストリー変数によって制御します。

統計ログは直接表示することもできますし、SYSPROC.PD_GET_DIAG_HIST 表関数を使用して照会することもできます。 この表関数は、ログに記録されたイベントに関する標準情報 (タイム・スタンプ、 Db2® インスタンス名、データベース名、プロセス ID、プロセス名、スレッド ID など) を含むいくつかの列を戻します。 またログには、別のログ機能で使用するための汎用列も含まれます。 以下の表で、統計ログにおけるこうした汎用列の使用法について説明します。

表 1. 統計ログ・ファイルでの汎用列
列名 データ・タイプ 説明
OBJTYPE VARCHAR(64) イベントが適用されるオブジェクトのタイプ。 統計ロギングの場合、これは収集される統計のタイプです。 OBJTYPE は、プロセス開始時または停止時の統計収集バックグラウンド・プロセスを指すことがあります。 さらに、自動統計収集によって実行されるアクティビティー (サンプリング・テスト、初期サンプリング、表評価など) のこともあります。
統計収集アクティビティーに可能な値は、以下のとおりです。
TABLE STATS
表統計が収集されます。
INDEX STATS
索引統計が収集されます。
TABLE AND INDEX STATS
表統計と索引統計の両方が収集されます。
自動統計収集に可能な値は、以下のとおりです。
EVALUATION
自動統計バックグラウンド収集プロセスで、評価フェーズが開始されました。 このフェーズでは、統計の更新を必要とするかどうかを判別するために表を検査し、必要な場合には統計が収集されます。
INITIAL SAMPLING
表の統計を、サンプリングを使用して収集しています。 このサンプル統計は、システム・カタログに格納されます。 これにより、自動統計収集は、統計のない表に迅速に取り掛かることができます。 その後の操作では、サンプリングなしに統計が収集されます。 初期サンプリングは、自動統計収集の評価フェーズで実行されます。
SAMPLING TEST
表の統計を、サンプリングを使用して収集しています。 このサンプル統計は、システム・カタログに格納されません。 このサンプル統計は現在のカタログ統計と比較されて、この表に対して完全統計を収集すべきかどうか、またいつ収集すべきかが判別されます。 このサンプリングは、自動統計収集の評価フェーズで実行されます。
STATS DAEMON
統計デーモンは、リアルタイム統計プロセスによってサブミットされた要求を処理するために使用されるバックグラウンド・プロセスです。 このオブジェクト・タイプは、バックグラウンド・プロセスの開始および停止時にログに記録されます。
COLUMN GROUP STATS
統計収集により、収集する列グループ統計を識別するためのディスカバリーが実行されます。
OBJNAME VARCHAR(255) 該当する場合には、イベントが適用されるオブジェクトの名前。 統計ロギングの場合、これは表または索引の名前です。 OBJTYPE が STATS DAEMON または EVALUATION の場合、OBJNAME はデータベース名で、OBJNAME_QUALIFIER は NULL になります。
OBJNAME_QUALIFIER VARCHAR(255) 統計ロギングの場合、これは表または索引のスキーマです。
EVENTTYPE VARCHAR(24) イベント・タイプは、このイベントに関連付けられているアクションです。 統計ロギングに可能な値は、以下のとおりです。
COLLECT
このアクションは、統計収集操作に関連してログに記録されます。
START
このアクションは、リアルタイム統計バックグラウンド・プロセス (OBJTYPE = STATS DAEMON) または自動統計収集の評価フェーズ (OBJTYPE = EVALUATION) が開始されるとログに記録されます。
STOP
このアクションは、リアルタイム統計バックグラウンド・プロセス (OBJTYPE = STATS DAEMON) または自動統計収集の評価フェーズ (OBJTYPE = EVALUATION) が停止されるとログに記録されます。
ACCESS
このアクションは、統計収集のために表に対するアクセスが試行された際にログに記録されます。 このイベント・タイプは、オブジェクトが使用できないために失敗したアクセス試行をログに記録するために使用されます。
WRITE
このアクションは、統計キャッシュに保管されている収集済みの統計がシステム・カタログに書き込まれたときにログに記録されます。
DISCOVER
このアクションは統計ディスカバリー操作に関連してログに記録されます。
FIRST_EVENTQUALIFIERTYPE VARCHAR(64) 最初のイベント修飾子のタイプです。 イベント修飾子は、イベントによって影響を受けた対象について記述するために使用します。 統計ロギングの場合、最初のイベント修飾子はイベントが発生した際のタイム・スタンプです。 最初のイベント修飾子タイプの値は、AT です。
FIRST_EVENTQUALIFIER CLOB(16k) イベントの最初の修飾子です。 統計ロギングの場合、最初のイベント修飾子は統計イベントが発生した際のタイム・スタンプです。 統計イベントのタイム・スタンプは、TIMESTAMP 列によって表されるログ・レコードのタイム・スタンプとは異なる場合があります。
SECOND_EVENTQUALIFIERTYPE VARCHAR(64) 2 番目のイベント修飾子のタイプです。 統計ロギングの場合、可能な値は BY または NULL です。 その他のイベント・タイプではこのフィールドは使用されません。
SECOND_EVENTQUALIFIER CLOB(16k) イベントの 2 番目の修飾子です。 統計ロギングの場合、COLLECT イベント・タイプで統計が収集された方法を示します。 可能な値は以下のとおりです。
ユーザー
Db2 ユーザーが、LOADREDISTRIBUTE、または RUNSTATS コマンドを起動して、あるいは CREATE INDEX ステートメントを発行して、統計収集が実行されました。
Synchronous
統計収集は、Db2 によって SQL ステートメント・コンパイル時に実行されました。 統計は、システム・カタログ内ではなく統計キャッシュに格納されます。
Synchronous sampled
統計収集は、Db2 によって SQL ステートメント・コンパイル時にサンプリングを使用して実行されました。 統計は、システム・カタログ内ではなく統計キャッシュに格納されます。
Fabricate
統計は、SQL ステートメント・コンパイル時に、データおよび索引マネージャーが維持している情報を使用して作成されました。 統計は、システム・カタログ内ではなく統計キャッシュに格納されます。
Fabricate partial
一部の統計に限り、SQL ステートメント・コンパイル時に、データ・マネージャーおよび索引マネージャーが保守している情報を使用して作成されました。 特に、特定の列の HIGH2KEY 値と LOW2KEY 値だけは作成されたものです。 統計は、システム・カタログ内ではなく統計キャッシュに格納されます。
Asynchronous
統計は Db2 バックグラウンド・プロセスによって収集され、システム・カタログに格納されました。
その他のイベント・タイプではこのフィールドは使用されません。
THIRD_EVENTQUALIFIERTYPE VARCHAR(64) 3 番目のイベント修飾子のタイプです。 統計ロギングの場合、可能な値は DUE TO または NULL です。
THIRD_EVENTQUALIFIER CLOB(16k) イベントの 3 番目の修飾子です。 統計ロギングの場合、統計アクティビティーを完了できなかった理由を示します。 可能な値は以下のとおりです。
Timeout
同期統計収集の予定時間を超過しました。
エラー
エラーが原因で統計アクティビティーが失敗しました。
RUNSTATS error
RUNSTATS エラーが原因で同期統計収集が失敗しました。 一部のエラーでは、統計は収集できないものの SQL ステートメント・コンパイルは正常に完了するという場合があります。 例えば、統計を収集するにはメモリーが不十分な場合、SQL ステートメント・コンパイルは続行されます。
Object unavailable
データベース・オブジェクトにアクセスできなかったため、その統計を収集できませんでした。 考えられる理由には、以下のものが含まれます。
  • オブジェクトが超排他 (Z) モードでロックされている
  • オブジェクトが存在する表スペースを使用できない
  • 表索引を再作成する必要がある
競合
別のアプリケーションが既に同期統計を収集していたため、同期統計収集が実行されませんでした。
エラーの詳細については、FULLREC 列または db2diag ログ・ファイルを確認してください。
EVENTSTATE VARCHAR(255) イベントの結果のオブジェクトまたはアクションの状態。 統計ロギングの場合、統計操作の状態を示します。 可能な値は以下のとおりです。
  • Start
  • 成功
  • 失敗

以下の例に挙げる照会では、PD_GET_DIAG_HIST を呼び出し、最大で、現在のタイム・スタンプからさかのぼって過去 1 年分のイベントの統計ログ・レコードを返します。
   select pid, tid,
       substr(eventtype, 1, 10),
       substr(objtype, 1, 30) as objtype,
       substr(objname_qualifier, 1, 20) as objschema,
       substr(objname, 1, 10) as objname,
       substr(first_eventqualifier, 1, 26) as event1,
       substr(second_eventqualifiertype, 1, 2) as event2_type,
       substr(second_eventqualifier, 1, 20) as event2,
       substr(third_eventqualifiertype, 1, 6) as event3_type,
       substr(third_eventqualifier, 1, 15) as event3,
       substr(eventstate, 1, 20) as eventstate
     from table(sysproc.pd_get_diag_hist 
       ('optstats', 'EX', 'NONE', 
         current_timestamp - 1 year, cast(null as timestamp))) as sl
     order by timestamp(varchar(substr(first_eventqualifier, 1, 26), 26));
結果は、FIRST_EVENTQUALIFIER 列に格納されているタイム・スタンプ順に並べられます。この列は、統計イベントの時間を表します。
PID   TID           EVENTTYPE OBJTYPE                OBJSCHEMA OBJNAME    EVENT1                     EVENT2_ EVENT2               EVENT3_ EVENT3   EVENTSTATE
                                                                                                     TYPE                         TYPE
----- ------------- --------- ---------------------  --------- ---------- -------------------------- ------- -------------------- ------- -------- ----------
28399    1082145120 START     STATS DAEMON           -         PROD_DB    2007-07-09-18.37.40.398905 -       -                    -       -        success
28389  183182027104 COLLECT   TABLE AND INDEX STATS  DB2USER   DISTRICT   2007-07-09-18.37.43.261222 BY      Synchronous          -       -        start
28389  183182027104 COLLECT   TABLE AND INDEX STATS  DB2USER   DISTRICT   2007-07-09-18.37.43.407447 BY      Synchronous          -       -        success
28399    1082145120 COLLECT   TABLE AND INDEX STATS  DB2USER   CUSTOMER   2007-07-09-18.37.43.471614 BY      Asynchronous         -       -        start
28399    1082145120 COLLECT   TABLE AND INDEX STATS  DB2USER   CUSTOMER   2007-07-09-18.37.43.524496 BY      Asynchronous         -       -        success
28399    1082145120 STOP      STATS DAEMON           -         PROD_DB    2007-07-09-18.37.43.526212 -       -                    -       -        success
28389  183278496096 COLLECT   TABLE STATS            DB2USER   ORDER_LINE 2007-07-09-18.37.48.676524 BY      Synchronous sampled  -       -        start
28389  183278496096 COLLECT   TABLE STATS            DB2USER   ORDER_LINE 2007-07-09-18.37.53.677546 BY      Synchronous sampled  DUE TO  Timeout  failure
28389    1772561034 START     EVALUATION             -         PROD_DB    2007-07-10-12.36.11.092739 -       -                    -       -        success
28389    8231991291 COLLECT   TABLE AND INDEX STATS  DB2USER   DISTRICT   2007-07-10-12.36.30.737603 BY      Asynchronous         -       -        start
28389    8231991291 COLLECT   TABLE AND INDEX STATS  DB2USER   DISTRICT   2007-07-10-12.36.34.029756 BY      Asynchronous         -       -        success
28389    1772561034 STOP      EVALUATION             -         PROD_DB    2007-07-10-12.36.39.685188 -       -                    -       -        success
28399    1504428165 START     STATS DAEMON           -         PROD_DB    2007-07-10-12.37.43.319291 -       -                    -       -        success
28399    1504428165 COLLECT   TABLE AND INDEX STATS  DB2USER   CUSTOMER   2007-07-10-12.37.43.471614 BY      Asynchronous         -       -        start
28399    1504428165 COLLECT   TABLE AND INDEX STATS  DB2USER   CUSTOMER   2007-07-10-12.37.44.524496 BY      Asynchronous         -       -        failure
28399    1504428165 STOP      STATS DAEMON           -         PROD_DB    2007-07-10-12.37.45.905975 -       -                    -       -        success
28399    4769515044 START     STATS DAEMON           -         PROD_DB    2007-07-10-12.48.33.319291 -       -                    -       -        success
28389    4769515044 WRITE     TABLE AND INDEX STATS  DB2USER   CUSTOMER   2007-07-10-12.48.33.969888 BY      Asynchronous         -       -        start
28389    4769515044 WRITE     TABLE AND INDEX STATS  DB2USER   CUSTOMER   2007-07-10-12.48.34.215230 BY      Asynchronous         -       -        success