シナリオ: 組み込み管理ビューを使用してコストの高いアプリケーションを識別する
最近、ShopMart データベース上のワークロードが増えたために、データベース全体のパフォーマンスが低下し始めています。 ShopMart DBA の Jessie は、次の管理ビューを使って、日々のワークロードの中からとりわけリソースを消費しているものを識別しようとしています。
- MON_CONNECTION_SUMMARY
- このビューは、頻繁に表スキャンを実行している可能性のあるアプリケーションを Jessie が識別するのに役に立ちます。
CONNECT TO SHOPMART; SELECT APPLICATION_HANDLE, ROWS_READ_PER_ROWS_RETURNED FROM SYSIBMADM.MON_CONNECTION_SUMMARY;ROWS_READ_PER_ROWS_RETURNED の値から、アプリケーションに戻された行当たりの、基本表内でアクセスされた平均行数が分かります。 この値が高い数値であれば、索引の作成によって避けることもできる表スキャンをアプリケーションが実行している可能性があります。 Jessie はこのビューを使用して、問題のある可能性のある照会を識別した後、SQL を調べてさらに吟味することによって、照会の実行時に読み取られる行数を減らす方法があるかどうかを調べることができます。
- MON_CURRENT_SQL
- Jessie は MON_CURRENT_SQL 管理ビューを使用して、現在最も長い時間実行されている照会を識別します。
CONNECT TO SHOPMART; SELECT ELAPSED_TIME_SEC, ACTIVITY_STATE, ACTIVITY_TYPE, APPLICATION_HANDLE FROM SYSIBMADM.MON_CURRENT_SQL ORDER BY ELAPSED_TIME_SEC DESC FETCH FIRST 5 ROWS ONLY;このビューを使用すると、これらの照会の実行時間、および照会の状況を判別することができます。 照会が長時間実行されていてロックを待機している場合は、エージェント ID を指定して MON_LOCKWAITS 管理ビューに対して照会を発行することで、さらに詳しく調べることができます。 MON_CURRENT_SQL ビューからも実行中のステートメントが分かるので、問題が発生する可能性のある SQL を識別することができます。
- MON_PKG_CACHE_SUMMARY
- Jessie は MON_PKG_CACHE_SUMMARY を使用して、問題ありと確認された照会のトラブルシューティングを行うことができます。このビューから、照会の実行頻度、および各照会の平均実行時間が分かります。
CONNECT TO SHOPMART; SELECT SECTION_TYPE, EXECUTABLE_ID, NUM_COORD_EXEC, NUM_COORD_EXEC_WITH_METRICS, AVG_STMT_EXEC_TIME, PREP_TIME FROM SYSIBMADM.MON_PKG_CACHE_SUMMARY ORDER BY NUM_COORD_EXEC DESC;PREP_TIME の値から Jessie は、照会のコンパイルに費やされた時間が実行時間と比較する形で分かります。 照会のコンパイルと最適化にかかる時間が照会の実行にかかる時間とほぼ同じである場合、Jessie は照会の所有者に、照会に使用する最適化クラスの変更を勧めることもできます。 最適化クラスを小さくすることにより照会は最適化をより素早く完了し、結果をより短時間で戻せるかもしれません。 しかし、照会の準備に長時間がかかるとは言え、(再準備なしで) 何千回も実行されるのであれば、最適化クラスを変更しても照会パフォーマンスは向上しないかもしれません。
-
また、Jessie は MON_PKG_CACHE_SUMMARY ビューを使用して、最も頻繁に実行された SQL ステートメントと最も長時間実行された SQL ステートメントを識別します。 この情報があれば、Jessie は SQL の調整の努力を、最もリソースを消費するいくつかの照会に集中することができます。
最も頻繁に実行される SQL ステートメントを識別するために、Jessie は次のステートメントを発行します。
出力には、最も頻繁に実行される上位 5 つの SQL ステートメントについて、実行時間およびステートメント・テキストに関する詳細がすべて表示されます。CONNECT TO SHOPMART; SELECT SECTION_TYPE, NUM_COORD_EXEC, NUM_COORD_EXEC_WITH_METRICS, AVG_STMT_EXEC_TIME, PREP_TIME, SUBSTR(STMT_TEXT, 1, 100) AS STMT_TEXT FROM SYSIBMADM.MON_PKG_CACHE_SUMMARY ORDER BY NUM_COORD_EXEC DESC FETCH FIRST 5 ROWS ONLY;実行時間が最も長い SQL ステートメントを識別するために、Jessie は AVG_STMT_EXEC_TIME の値が上位 5 つの照会を調べます。CONNECT TO SHOPMART; SELECT SECTION_TYPE, NUM_COORD_EXEC, NUM_COORD_EXEC_WITH_METRICS, AVG_STMT_EXEC_TIME, SUBSTR(STMT_TEXT, 1, 100) AS STMT_TEXT FROM SYSIBMADM.MON_PKG_CACHE_SUMMARY ORDER BY AVG_STMT_EXEC_TIME DESC FETCH FIRST 5 ROWS ONLY;