例: ルーチンによって実行されたステートメントに費やされた時間のリスト作成

ルーチン・モニターを使用すると、ルーチンによって実行された各ステートメントにかかった時間をリスト表示できます。

シナリオ

この例では、データベース管理者 (DBA) は TEST.PROC1 という重要なストアード・プロシージャーのパフォーマンスを調査しています。 MON_GET_ROUTINE 表関数によって返される TOTAL_ROUTINE_COORD_EXEC_TIME モニター・エレメントは、このストアード・プロシージャーの実行経過時間が長いことを示しています。 DBA は、MON_RTN_EXECLIST データベース構成パラメーターを使用して、ルーチンごとにステートメント情報を追跡するようにデータベースを構成してあります。 DBA は以下の照会を発行し、TEST.PROC1 によって実行されたステートメントのリストを作成します。
SELECT B.EXECUTABLE_ID, 
   100*B.COORD_STMT_EXEC_TIME / A.TOTAL_ROUTINE_COORD_EXEC_TIME 
AS PERCENT_EXEC_TIME,(SELECT SUBSTR(C.STMT_TEXT,1,120)
FROM TABLE(MON_GET_PKG_CACHE_STMT(NULL,B.EXECUTABLE_ID,NULL,-2)) AS C) AS STMT_TEXT
FROM TABLE(MON_GET_ROUTINE('P','TEST',NULL,'PROC1', -2)) AS A,
   TABLE(MON_GET_ROUTINE_EXEC_LIST('P','TEST',NULL,'PROC1', -1)) AS B
WHERE A.TOTAL_ROUTINE_COORD_EXEC_TIME<>0
ORDER BY PERCENT_EXEC_TIME DESC
結果は、ルーチンの実行経過時間のパーセンテージ順になります。
EXECUTABLE_ID                                                       PERCENT_EXEC_TIME    STMT_TEXT                                                                                                                       
------------------------------------------------------------------- -------------------- ------------------------------------------------------------------------------------------------------------------------
x'01000000000000000C0000000000000000000000020020120801145618138490'                    0 SELECT TABNAME FROM SYSCAT.TABLES  WHERE TABNAME='MY_TABLE' AND  TABSCHEMA='MYSCHEMA'                            
x'01000000000000000B0000000000000000000000020020120801145618127528'                    0 SELECT TABNAME FROM SYSCAT.TABLES  WHERE TABNAME='MY_TABLE_2' AND  TABSCHEMA='MYSCHEMA'                              
x'0100000000000000070000000000000000000000020020120801145618004432'                    0 SELECT COLNAME, TYPENAME FROM  SYSCAT.COLUMNS WHERE TABNAME='MY_TABLE' AND TABSCHEMA='MYSCHEMA'                           

  3 record(s) selected.

示された、ルーチンで実行時間の最も長いステートメントに関して、DBA はさらに調査を行い、一部のステートメントが長期間実行されている原因を判別できます。 DBA は対象ルーチンにおけるそのステートメントのすべての実行に関して集約されたエンベロープ・メトリックを調べるか、ステートメントの executable_id を MON_GET_PKG_CACHE_STMT 表関数と一緒に使用してそのステートメントのすべての実行に関する詳細メトリックを検索できます。