ステートメントがデータベース・オブジェクトに及ぼす影響の調査

セクション actuals 情報が含まれるセクション Explain を使用して、ステートメントがデータベース・オブジェクトに及ぼす影響を調査することができます。 それぞれの表や索引にステートメント・セクションがどのように影響を及ぼしたかについての統計を使用して、追加のモニタリングや調整が必要かどうかを判断できます。

始める前に

次のタスクを実行します。

  • オブジェクトの使用統計を表示する対象となるステートメントを識別します。
  • Explain 表をデータベース・システム にマイグレーション済みであることを確認します。
  • 自動統計プロファイル生成が無効になっていることを確認します。
  • EXPLAIN_FROM_ACTIVITY プロシージャーの呼び出しに必要な特権を持っていることを確かめます。

このタスクについて

オブジェクトの使用統計を表示する対象となるステートメントを識別してから、セクションの実行時統計情報が含まれるセクション Explain を取得できます。セクションの実行時統計情報には、ステートメントが実行時に使用したそれぞれの表または索引にどのように影響を及ぼしたかが示されています。

実行時統計情報には、それぞれの表または索引についてのロックおよびバッファー・プールの使用などの要因についての実行時統計が含まれています。 それらの統計をベースライン・データと比較して、さらにモニタリングや調整が必要となる箇所があるかどうかを判断できます。

手順

データベース・オブジェクトがステートメントによってどのように影響を受けているかを判別するには、以下のようにします。

  1. 次のコマンドを発行して、データベース・レベルにおけるセクション actuals の収集を有効にします。
    Db2 UPDATE DATABASE CONFIGURATION USING SECTION_ACTUALS BASE
  2. ステートメントを発行するアプリケーションによって処理依頼されるアクティビティーについてのセクション actuals 情報を収集するワークロードを作成します。
    例えば、TEST アプリケーションによって処理依頼されるアクティビティーについての ACTWORKLOAD ワークロードを作成し、それらのアクティビティーに関して収集を有効にするには、次のコマンドを発行します。
    CREATE WORKLOAD ACTWORKLOAD APPLNAME ('TEST')
    COLLECT ACTIVITY DATA ON ALL WITH DETAILS,SECTION INCLUDE ACTUALS BASE
    セクション actuals の収集の有効化は、以下の方法でも実行できます。
    • CREATE SERVICE CLASS または ALTER SERVICE CLASS ステートメント
    • CREATE WORK ACTION SET または ALTER WORK ACTION SET ステートメント
    • WLM_SET_CONN_ENV プロシージャー
    • section_actuals 構成パラメーター
  3. CREATE EVENT MONITOR ステートメントを使用して、アクティビティー・イベント・モニターを作成します。
    例えば、ACTEVMON アクティビティー・イベント・モニターを作成するには、次のコマンドを発行します。
    CREATE EVENT MONITOR ACTEVMON
           FOR ACTIVITIES
           WRITE TO TABLE
           CONTROL (TABLE CONTROL_ACTEVMON ),
           ACTIVITY (TABLE ACTIVITY_ACTEVMON ),
           ACTIVITYSTMT (TABLE ACTIVITYSTMT_ACTEVMON ),
           ACTIVITYVALS (TABLE ACTIVITYVALS_ACTEVMON ),
           ACTIVITYMETRICS (TABLE ACTIVITYMETRICS_ACTEVMON )
  4. SET EVENT MONITOR STATE ステートメントを使用して作成したアクティビティー・イベント・モニターをアクティブにします。
    例えば、ACTEVMON アクティビティー・イベント・モニターをアクティブにするには、次のコマンドを発行します。
    SET EVENT MONITOR ACTEVMON STATE 1
  5. オブジェクト統計を表示する対象となるステートメントを発行するアプリケーションを実行します。
  6. 次のコマンドを使用してアクティビティー・イベント・モニター表を照会して、ステートメント・セクションの ID 情報を検索します。
    SELECT APPL_ID,
           UOW_ID,
           ACTIVITY_ID,
           STMT_TEXT
    FROM ACTIVITYSTMT_ACTEVMON
  7. アクティビティー ID 情報を EXPLAIN_FROM_ACTIVITY プロシージャーの入力として使用して、実行時統計を含むセクション Explain を取得します。
    例えば、アプリケーション ID *N2.DB2INST1.0B5A12222841、作業単位 ID 16、アクティビティー ID 4 のセクションのセクション Explain を取得するには、次のコマンドを発行します。
    CALL EXPLAIN_FROM_ACTIVITY( '*N2.Db2INST1.0B5A12222841', 16, 4, 'ACTEVMON',
     'MYSCHEMA', ?, ?, ?, ?, ? )
    以下の出力例のような出力が戻されます。
    Value of output parameters
    --------------------------
    Parameter Name : EXPLAIN_SCHEMA
    Parameter Value : MYSCHEMA
    
    Parameter Name : EXPLAIN_REQUESTER
    Parameter Value : GSDBUSER3 
    
    Parameter Name : EXPLAIN_TIME
    Parameter Value : 2010-11-23-10.51.09.631945
    
    Parameter Name : SOURCE_NAME
    Parameter Value : SQLC2J21
    
    Parameter Name : SOURCE_SCHEMA
    Parameter Value : NULLID 
    
    Parameter Name : SOURCE_VERSION
    Parameter Value : 
    
    Return Status = 0
  8. db2exfmt コマンドを使用して、Explain データをフォーマット設定します。
    EXPLAIN_FROM_ACTIVITY プロシージャーからの出力の explain_requesterexplain_timesource_namesource_schema、 および source_version の各パラメーターの値をこのコマンドの入力として使用します。
  9. Explain 出力を表示して、セクションの実行時に使用されたデータベース・オブジェクトに対して、セクションがどのような影響を及ぼしたかを判別します。
    出力にある統計によって、さらにモニタリングや調整が必要となる場合があります。
    例えば、セクションが使用した表についての lock_wait モニター・エレメントの値が高い場合には、ロック管理が必要となることがあります。
  10. ステートメントを調整する場合には、ステップ 5 から 9 までを繰り返して、パフォーマンスが向上したことを確かめます。

次のタスク

SET EVENT MONITOR STATE ステートメントを使用して、アクティビティー・イベント・モニターを非アクティブにします。例えば、ACTEVMON アクティビティー・イベント・モニターを非アクティブにするには、次のコマンドを発行します。
SET EVENT MONITOR ACTEVMON STATE 0