SQL ステートメント実行時にどこで時間を費やしたかを判別する

アクティビティー・レベルの消費時間情報を検索する 1 つの例として、特定の SQL ステートメントの消費時間モニター・エレメントを表示する場合が挙げられます。 この情報を検索するには、MON_GET_PKG_CACHE_STMT 表関数を使用できます。

このタスクについて

このタスクでは、パッケージ・キャッシュ内の SQL ステートメントに関する選択した消費時間の詳細を検索する方法の例を示します。
注:
  • パッケージ・キャッシュ内のある特定のステートメントについて報告される消費時間メトリックは、そのステートメントのすべての実行についての消費時間メトリックの総計です。
  • 照会の出力で示される値は例示のみを目的としており、ご使用のシステムで表示される可能性のあるものを代表していると解釈すべきではありません。

手順

  1. パッケージ・キャッシュ内のステートメントに関する情報を検索する SQL ステートメントを、MON_GET_PKG_CACHE_STMT 表関数を使用して作成します。
    例えば、ステートメントの合計実行時間に対する合計待機時間を確認するとします。 この情報を検索するための照会は、例えば次のようになります。
    SELECT SUM(STMT_EXEC_TIME) AS TOTAL_EXEC_TIME,    
           SUM(TOTAL_ACT_WAIT_TIME) AS TOTAL_WAIT_TIME,
           EXECUTABLE_ID
    FROM TABLE(MON_GET_PKG_CACHE_STMT ( NULL, NULL, NULL, -2)) AS T         
    WHERE STMT_EXEC_TIME <> 0  
    GROUP BY EXECUTABLE_ID
    ORDER BY TOTAL_EXEC_TIME DESC
  2. この照会を実行します。
    結果は、例えば次の出力のようになります。
    TOTAL_EXEC_TIME      TOTAL_WAIT_TIME      EXECUTABLE_ID
    -------------------- -------------------- -------------------------------------------------------------------
                    9021                 9021 x'0100000000000000320000000000000000000000020020091111120320140000'
                    3017                  372 x'0100000000000000030000000000000000000000020020091111115438062000'
                     591                    0 x'0100000000000000010000000000000000000000020020091111115252265000'
                     203                  192 x'0100000000000000270000000000000000000000020020091111115936750000'
                     142                    0 x'01000000000000002B0000000000000000000000020020091111115944000000'
                     111                   48 x'0100000000000000070000000000000000000000020020091111115441359002'
                     108                   35 x'01000000000000000B0000000000000000000000020020091111115441750000'
                      55                    0 x'01000000000000000D0000000000000000000000020020091111115442062000'
                      50                    0 x'01000000000000000C0000000000000000000000020020091111115441921000'
                      38                    0 x'0100000000000000260000000000000000000000020020091111115936609003'
                      35                    2 x'01000000000000000A0000000000000000000000020020091111115441609000'
                      35                   35 x'0100000000000000130000000000000000000000020020091111115442593001'
                      33                    0 x'0100000000000000120000000000000000000000020020091111115442531000'
                      32                    0 x'0100000000000000240000000000000000000000020020091111115936578000'
                      29                    0 x'01000000000000000E0000000000000000000000020020091111115442203000'
                      24                   23 x'0100000000000000040000000000000000000000020020091111115440640000'
                      24                    0 x'0100000000000000110000000000000000000000020020091111115442484003'
                      20                    0 x'0100000000000000300000000000000000000000020020091111120241828000'
                      15                    0 x'0100000000000000050000000000000000000000020020091111115440984000'
                      14                    0 x'0100000000000000080000000000000000000000020020091111115441437000'
                      13                   13 x'01000000000000000F0000000000000000000000020020091111115442406001'
                       4                    0 x'0100000000000000100000000000000000000000020020091111115442484001'
                       3                    0 x'0100000000000000180000000000000000000000020020091111115442828000'
                       3                    3 x'01000000000000001F0000000000000000000000020020091111115936515000'
                       3                    0 x'0100000000000000290000000000000000000000020020091111115943968001'
                       2                    0 x'0100000000000000150000000000000000000000020020091111115442656001'
                       2                    0 x'0100000000000000170000000000000000000000020020091111115442750000'
                       1                    0 x'0100000000000000160000000000000000000000020020091111115442734000'
                       1                    0 x'0100000000000000280000000000000000000000020020091111115937000001'
                       1                    0 x'01000000000000002A0000000000000000000000020020091111115943984000'
    
      30 record(s) selected.

タスクの結果

この時点で、もう一度 MON_GET_PKG_CACHE_STMT 表関数を使用して、特に関心のあるステートメントのステートメント・テキストを検索することもできます。 例えば、次の照会を使用して、上記の待機時間が最も長いステートメントを確認できます。
SELECT VARCHAR(STMT_TEXT, 80) AS STMT_TEXT 
FROM TABLE(MON_GET_PKG_CACHE_STMT(NULL,x'0100000000000000320000000000000000000000020020091111120320140000',NULL,-2)) 
     AS T
この照会の出力は、次のようなものになります。
STMT_TEXT
---------------------------------------------------------------------------------
UPDATE EMPLOYEE SET BONUS=10000 WHERE PERF_RATING=1
  1 record(s) selected.