DB2 表内の列には、SQL ステートメント、そのランタイム・メトリック、およびステートメントが実行された時間間隔に関する以下の情報を含める必要があります。
このテキストは、複数のセグメントに分割されて、別の行に配置されていることがあります。ユニーク・ステートメント ID と順序番号により、セグメントは正しく連結されます。
SQL ステートメントが参照するデータベース・オブジェクトに関する情報を入れる列も指定できます (表にこの情報が表に含まれている場合)。
この例では、IBM® DB2 Query Monitor for z/OS を使用します。これは IBM 以外の照会モニター・アプリケーションと同様に、DB2 for z/OS 表にデータをオフロードすることができます。ただし、最適な結果を得るためには、ワークフロー・アシスタントの「キャプチャー」セクションの「DB2 Query Monitor for z/OS からの SQL のキャプチャー」ページを使用して、DB2 Query Monitor for z/OS から SQL ステートメントをキャプチャーしてください。
DB2 Query Monitor for z/OS を使用して、VSAM ファイルから DB2 for z/OS の表にデータをオフロードすると仮定します。その後、これらの表を照会して、さまざまなデータベース・アプリケーション内の SQL ステートメントのパフォーマンスに関する情報を見つけたいと思います。いずれかの SQL ステートメントがパフォーマンスのしきい値より低い場合、それらのステートメントをチューニングするのが目的です。
このリポジトリーのデータから SQL ステートメントをキャプチャーしてチューニングするには、ランタイム・メトリック、SQL テキスト、および時間間隔に関する情報をオフロードする必要があります。
このデータは、照会のチューニングに必要であり、以下の利点が得られます。
ワークフロー・アシスタントを使用して SQL ステートメントをキャプチャーする前に、この 3 つの表を結合するビューを作成しておく必要があります。以下に例を示します。
CREATE VIEW QM_STMT_VIEW (DB2_SUBSYSTEM, PLAN, COLLECTION, PROGRAM, CONSISTENCY_TOKEN, AUTHID, METRICS_TOKEN, TEXT_TOKEN, SQLTEXT, SEQNO, INTERVAL_START, INTERVAL_END, SECTION, STMT, SQL_CALLS, DB2_CPU, DB2_ELAP, GETPAGES) AS SELECT A.DB2_SUBSYSTEM, A.PLAN, A.COLLECTION, A.PROGRAM, A.CONSISTENCY_TOKEN, A.AUTHID, A.METRICS_TOKEN, A.TEXT_TOKEN, B.SQLTEXT, 0, A.INTERVAL_START, CURRENT TIMESTAMP AS INTERVAL_END_TS, A.SECTION, A.STMT, A.SQL_CALLS, A.DB2_CPU, A.DB2_ELAPSED, A.GETPAGES FROM QMTOOLS.CQM23_SUMM_METRICS A, QMTOOLS.CQM23_SUMM_TEXT B WHERE A.TEXT_TOKEN = B.TEXT_TOKEN AND A.SMFID = B.SMFID AND A.CQM_SUBSYSTEM = B.CQM_SUBSYSTEM AND A.INTERVAL_NUMBER = B.INTERVAL_NUMBER AND A.INTERVAL_START = B.INTERVAL_START AND A.INTERVAL_NUMBER IN ( SELECT DISTINCT A.INTERVAL_NUMBER FROM QMTOOLS.CQM23_INTERVALS A, QMTOOLS.CQM23_SUMM_METRICS B WHERE A.SMFID = B.SMFID AND A.CQM_SUBSYSTEM = B.CQM_SUBSYSTEM AND A.INTERVAL_NUMBER = B.INTERVAL_NUMBER AND A.INTERVAL_START = B.INTERVAL_START);
照会モニター・アプリケーションが静的 SQL ステートメントのテキストを SYSIBM.SYSPACKSTMT カタログ表の STMT 列にオフロードする場合、ビューはこの列を CQMnnINTERVALS 表および CQMnnSUMM_METRICS 表と結合する必要があります。また、ビューは、HEX() 関数を使用して、各ステートメントのテキストを BINARY 形式から 16 進ストリングに変換することも必要です。
SQL ステートメントが参照するデータベース・オブジェクトに関するデータをオフロードすることもできます。そのデータは SUMM_OBJECTS 表にオフロードする必要があります。