Db2トリガーのSQL活動

すべてのSQL実行値はDb2によって提供され、SQLステートメントの実行時に収集されます。これらは製品のサンプリングによるものではありません。

Db2トリガーのSQL活動は、Strobe測定セッション中の測定対象アドレス スペースで実行するSQLによって呼び出された、トリガー パッケージ内のSQLステートメントの詳細なレポートです。経過時間、SQLステートメント メトリックス、実行時統計情報などの包括的なレポート データが含まれます。ストアード プロシージャー コールとトリガーの呼び出しもレポートされます。

レポートは、各固有のトリガーとパッケージを組み合わせたパッケージ別に構成されています。各パッケージを展開するとターゲットSQLステートメントの詳細が表示されます。また、各ターゲットSQLステートメントを展開すると実行SQLステートメントの詳細が表示されます。

レポート詳細

  • [トリガー]は、トリガーの名前を示します。

  • [パッケージ]はパッケージの名前です。

  • [スキーマ]は、プロシージャーのスキーマ名を示します。

  • [コレクション]は、パッケージ コレクションIDを示します。

  • [バインド タイムスタンプ]は、パッケージがバインドされた日時を示します。

  • [CONTOKEN](整合性トークン)は、Db2プリコンパイラーまたはコプロセッサーによって生成された8バイトの16進値で、ソース プログラム内で検出される各EXEC SQLコールのパラメーター リストの一部としてパッケージとオブジェクト モジュールの両方に配置されます。

  • [ステートメント カウント]は、トリガーに対するすべてのSQL活動の実行回数です。

  • [経過時間(秒)平均]は、トリガー パッケージ内のすべてのSQL活動実行に対する平均経過時間(秒)です。

  • [経過時間(秒)最大]は、トリガー パッケージ内のいずれか1つのSQLステートメントによる最大経過時間(秒)です。

  • [経過時間(秒)合計]は、トリガー パッケージ内のすべてのSQL活動による合計経過時間(秒)です。

  • [並列タスクCPU分布(秒)SP CPU]は、トリガー パッケージ内のすべてのSQLステートメントの並列処理の実行に、zIIPなどの専用プロセッサーが費やしたCPU時間(秒)です。

  • [並列タスクCPU分布(秒)合計CPU]は、トリガー パッケージ内のすべてのSQLステートメントの並列処理の実行に、すべてのプロセッサーが費やしたCPU時間(秒)です。

  • [CPU時間(秒)平均]は、トリガー パッケージ内のすべてのSQLで使用されたCPU時間の合計(秒)を、トリガー パッケージ内のSQLステートメント活動の総数で割った値です。

  • [CPU時間(秒)最大]は、このトリガー パッケージ内のいずれか1つのSQLステートメント アクティビティー実行によって使用された最大CPU時間(秒)です。

  • [CPU時間(秒)合計]は、トリガー パッケージ内のすべてのSQLステートメント アクティビティー実行によって使用された合計CPU時間(秒)です。

  • [CPU時間(秒)SP]は、トリガー パッケージ内のすべてのSQLステートメント アクティビティー実行によって専用プロセッサーで使用された合計CPU時間(秒)です。

トリガー パッケージの隣にある をクリックすると、トリガー パッケージ内のターゲットSQLステートメントの実行詳細が表示されます。ターゲット ステートメントは、SQLの実行を定義するカーソルまたはシングルトン ステートメントを識別します。

  • [ターゲット ステートメント]は、ターゲットのSQLステートメントとそのすべての実行コンポーネントを識別します。

  • [ステートメント番号]:  静的非カーソルステートメントの場合には、アプリケーション コード内のステートメント番号が表示されます。静的カーソル ステートメントと動的ステートメントの場合には、Strobeによって生成されたステートメント番号が表示されます。

  • [照会番号]

    • 静的SQLの場合、これはDb2システム カタログの照会番号です。

    • 動的SQLの場合、値は-1です。

  • [ステートメント タイプ]は、以下のようなステートメントのタイプを示します。

  • [ステートメント カウント]は、ターゲットSQLステートメントにおけるすべてのSQL活動(Prepare、Open、Fetch、Close、Insert、Update、Deleteなど)の実行回数です。

  • [経過時間(秒)平均]は、ターゲットSQLステートメントのすべてのSQL活動実行に対する平均経過時間(秒)です。

  • [経過時間(秒)最大]は、ターゲットSQLステートメントのいずれか1つのSQLステートメント アクティビティーの実行による最大経過時間(秒)です。

  • [経過時間(秒)合計]は、 ターゲットSQLステートメントのすべての実行要素の合計経過時間(秒)です。

  • [並列タスクCPU分布(秒)SP CPU]は、ターゲットSQLステートメントの並列処理の実行に、zIIPなどの専用プロセッサーが費やしたCPU時間(秒)です。

  • [並列タスクCPU分布(秒)合計CPU]は、ターゲットSQLステートメントの並列処理の実行に、すべてのプロセッサー タイプが費やしたCPU時間(秒)です。

  • [CPU時間(秒)平均]は、ターゲットSQLステートメントのすべてのSQL活動実行に対する平均CPU使用時間(秒)です。

  • [CPU時間(秒)最大]は、ターゲットSQLステートメントのいずれか1つのSQL活動実行によって使用された最大CPU使用時間(秒)です。

  • [CPU時間(秒)合計]は、ターゲットSQLステートメントのすべてのSQL活動実行によって使用された合計CPU時間(秒)です。

  • [CPU時間(秒)SP]は、ターゲットSQLステートメントのすべてのSQL活動実行によって専用プロセッサーで使用された合計CPU時間(秒)です。

ターゲット ステートメントの隣にある をクリックすると、実行SQLステートメントの詳細と呼び出されたトリガーまたはストアード プロシージャーの詳細が表示されます。

  • [SQLステートメント テキスト]は、SQLステートメントの先頭約50文字分のテキストです。このあとに、測定定義された修飾子(動的EXPLAINの実行前に非修飾オブジェクトを修飾するためにStrobeのSQL分析機能(SQLAF)で使用)とSQLAFレポート リンクが続く場合があります。SQLステートメントの全体のテキストを表示するには、 をクリックします。

    • 静的SQLの測定定義修飾子は、パッケージのSYSIBM.SYSPACKAGE Db2カタログ テーブルから検索され、常にQUALIFIERカラムに示されます。測定では静的SQLは解析されません。ステートメントに完全修飾されたSQLが含まれる場合も、QUALIFIERの値が表示されます。ただし、動的EXPLAINの前にSQLAFがQUALIFIER値を使用してSQLステートメントを修飾することはありません。

    • 動的SQLに対する測定定義修飾子は、簡易ステートメント解析またはDYNAMICRULES BINDパラメーターに基づきます。簡易ステートメント解析でステートメントがすでに完全修飾されていると判別された場合、QUALIFIERは表示されないか、またはSQLAFで使用されません。それ以外の場合、SQLAFで使用するQUALIFIERは以下のグラフに基づいて判別されます。

    •  

      DYNAMICRULES

      タイプ

      修飾子

      BIND
      INVOKEBIND
      DEFINEBIND

      非ストアード プロシージャー

      QUALIFIERカラム、パッケージのSYSIBM.SYSPACKAGE Db2カタログ テーブルから検索されます

      RUN
      INVOKERUN
      DEFINERUN

      非ストアード プロシージャー
      ストアード プロシージャー

      SQLステートメントの実行時、許可IDはアクティブです

      BIND

      ストアード プロシージャー

      QUALIFIERカラム、パッケージのSYSIBM.SYSPACKAGE Db2カタログ テーブルから検索されます

      INVOKEBIND
      DEFINEBIND

      ストアード プロシージャー

      OWNERカラム、ストアード プロシージャーのSYSIBM.SYSROUTINES Db2カタログ テーブルから検索されます

       QUALIFIERフィールドの値が正しくない場合があります。たとえば、ADD ACTIVEで測定が開始され、ストアード プロシージャーの先頭が欠落した場合です。

    SQLAFをクリックすると、Db2 SQLステートメントのアクセス パスや資源消費の詳細情報を提供するレポートが表示されます。このボタンは、Strobeパフォーマンス プロファイルの作成時にこれらのレポートが要求された場合にのみ表示されます。

  • [実行ステートメント]は、詳細です。

    • [実行ステートメント]は、SQL活動(PREPARE、OPEN、FETCH、CLOSE、INSERT、UPDATE、DELETE)を識別します。

    • [ステートメント番号]は、アプリケーション コード内のステートメント番号を表示します。

    • [ステートメント カウント]は、SQLステートメントのアクティビティーが実行された回数を示します。

    • [経過時間(秒)平均]は、このSQLステートメント アクティビティーのすべての実行に対する平均経過時間(秒)です。

    • [経過時間(秒)最大]は、このSQLステートメント アクティビティーのいずれか1つの実行による最大経過時間(秒)です。

    • [経過時間(秒)合計]は、このSQLステートメント アクティビティーのすべての実行による合計経過時間(秒)です。

    • [並列タスクCPU分布(秒)SP CPU]は、SQLステートメント アクティビティーの並列処理の実行に、zIIPなどの専用プロセッサーが費やしたCPU時間(秒)です。

    • [並列タスクCPU分布(秒)合計CPU]は、このSQLステートメント アクティビティーの並列処理の実行に、すべてのプロセッサーが費やしたCPU時間(秒)です。

    • [CPU時間(秒)平均]は、このSQLステートメント アクティビティーのすべての実行に対する平均CPU使用時間(秒)です。

    • [CPU時間(秒)最大]は、このSQLステートメント アクティビティーのいずれか1つの実行によって使用された最大CPU使用時間(秒)です。

    • [CPU時間(秒)合計]は、このSQLステートメント アクティビティーのすべての実行によって使用された合計CPU時間(秒)です。

    • [CPU時間(秒)SP]は、このSQLステートメント アクティビティーのすべての実行によって専用プロセッサーで使用された合計CPU時間(秒)です。

実行ステートメントの隣の をクリックすると、SQLステートメント アクティビティーによって実行された走査に関する実行時統計情報またはメトリックが表示されます。メトリック データは、CURSOR CLOSEとシングルトンSQLでのみ生成されます。

SQLステートメント アクティビティーによって実行された走査に関する実行時統計情報。

  • [タイプ]は、スキャンのタイプを示します。INDXは索引スキャン、SEQDは順次データ スキャン、SEQWは順次データ作業ファイル スキャンを表します。

  • [処理された行数]は、スキャンによって処理された行の数を示します。

  • [検証された行数]は、スキャンによって検査された行の数を示します。ただし、[タイプ]がINDXの場合、[検証された行数]はスキャンされた索引エントリーの数になります。

  • [行-Q ステージ1]は、ステージ1で要件を満たした行の数を示します。

  • [行-Q ステージ2]は、ステージ2で要件を満たした行の数を示します。

  • [挿入された行数]は、挿入された行の数を示します。

  • [削除された行数]は、削除された行の数を示します。MASSは大量削除を示します。

  • [行 更新済み]は、更新された行の数を示します。

  • [ページ取得要求]は、データ マネージャーがバッファー マネージャーに送信したページ要求の数を示します。索引スキャンの場合、この値にはスキャンされた索引ページが含まれますが、スキャンされた索引サブページは含まれません。

  • [RIページ走査]は、参照整合性のためにスキャンされた追加ページの数を示します。

  • [RIページ削除]は、参照整合性のために削除された追加ページの数を示します。

  • [LOBページ走査]は、LOB表スペースでスキャンされた追加ページの数を示します。

  • [LOBページ更新]は、SQL INSERTまたはSQL UPDATEのいずれかによって更新されたLOBページの数を示します。

[ステートメント メトリックス]の隣のをクリックすると、メトリックスが表示されます。

  • [In-DB2時間]は、Db2内で費やされた時間です。

    • [In-DB2時間 CPU(秒)SP+CP]は、SQLステートメントが使用した累計のDb2内CPU時間(中央プロセッサーおよびIBMのスペシャリティー エンジン)です。

    • [In-DB2時間 経過時間(秒)]は、SQLステートメントに対する累積のDB2内経過時間(秒)です。

  • [待ち時間(秒)]は、Db2内でのSQLステートメントの経過待ち時間(秒)です。

    • [同期I/O]は、SQLステートメントに対する同期入出力のための累積待ち時間です。

    • [ロック]は、SQLステートメントに対するロックのための累積待ち時間です。

    • [同期実行ユニット切り替え]は、SQLステートメントに対する同期実行切り替えのための累積待ち時間です。

    • [グローバル ロック]は、SQLステートメントに対するグローバル ロックのための累積待ち時間です。

    • [競合スレッドによる読み取り]は、SQLステートメントに対して他のスレッドによって実行された読み取り活動のための累積待ち時間です。

    • [競合スレッドによる書き込み]は、SQLステートメントに対して他のスレッドによって実行された書き込み活動のための累積待ち時間です。

    • [ラッチ]は、SQLステートメントに対するラッチのための累積待ち時間です。

    • [ページ ラッチ]は、SQLステートメントに対するページ ラッチのための累積待ち時間です。

    • [ドレーン ロック]は、SQLステートメントに対するドレーン ロックのための累積時間です。

    • [クレーム解放]は、SQLステートメントに対するクレーム カウントのための累積待ち時間です。

    • [ログ ライター]は、SQLステートメントに対するログ書き込みプログラムの累積待ち時間です。

  • [実行の統計カウント]は、SQLステートメントによって発生したイベントの数です。

    • [同期バッファーの読み取り]は、SQLステートメントに対する同期バッファー読み取りの回数です。

    • [Getpages]は、SQLステートメントに対するGETPAGE操作の回数です。

    • [検査された行]は、SQLステートメントのために検査された行数です。

    • [処理された行]は、SQLステートメントのために処理された行数です。

    • [ソート]は、SQLステートメントに対するソートの回数です。

    • [索引走査]は、SQLステートメントに対する索引スキャンの回数です。

    • [表スペース走査]は、SQLステートメントに対して実行された表スペース スキャン操作の回数です。

    • [バッファーの書き込み]は、SQLステートメントに対するバッファー書き込みの回数です。

    • [作成された並列グループ]は、SQLステートメントのために作成された並列グループの数です。

    • [未使用RID - 制限値に到達]は、RIDの数がSQLステートメントに対するDb2の制限を超えてしまうために、RID(レコードID)リストが使用されなかった回数です。

    • [未使用RID - 記憶域がない]は、SQLステートメントに対するRIDのリストを保持するための記憶域が不足しているために、RID(レコードID)リストが使用されなかった回数です。

[リクエスター]の隣のをクリックすると、DDFアドレス スペースで実行中のSQLのソースに関する追加詳細が表示されます。リクエスターに対しては、ロケーション、相関ID、許可ID、エンド ユーザーのUSERID、エンド ユーザーのワークステーション、エンド ユーザーのトランザクションのうち、1つまたは2つの値が表示されることがあります。  リクエスターがロケーションの場合は、SNAネットワークのIPアドレスまたはLU名が表示されます。

  • [リクエスター ロケーション]

  • [認証ID]

  • [相関ID]

  • [エンド ユーザーID]

  • [エンド ユーザーのワークステーション]

  • [エンド ユーザーのトランザクション]

[起動されたトリガー]の隣のをクリックすると、このSQLステートメントの代わりに呼び出されたトリガーに関する追加情報が表示されます。

  • [スキーマ]は、トリガーのスキーマ名を示します。

  • [トリガー名]は、トリガーの名前を示します。

  • [アクティブ化]は、トリガーのアクティブ化のタイミングを示します(Bは前、Aは後)。

  • [粒度]は、トリガーの粒度が各行(R)なのか各ステートメント(S)なのかを示します。

  • [条件]は、トリガー アクションの条件の評価です。Tはトリガー アクションがTrueをテストしたことを示し、FはFalseをテストしたことを示し、Nはアクションの条件がなかったことを示します。

  • [ネスト レベル]は、トリガーのネスト レベルを示します。

  • [タイプ]は、トリガーを呼び出したSQLステートメントのタイプを示します。IはINSERT、UはUPDATE、DはDELETEを表します。

  • [カウント]は、測定中に実行SQLステートメントによってトリガーが呼び出された回数を示します。

[起動されたストアード プロシージャー]の隣の をクリックすると、このSQLステートメントの代わりに呼び出されたプロシージャーに関する追加情報が表示されます。

  • [スキーマ]は、プロシージャーのスキーマ名を示します。

  • [プロシージャー名前]は、プロシージャーの名前を示します。

  • [ネスト レベル]は、プロシージャーのネスト レベルを示します。

  • [タイプ]は、プロシージャーを呼び出したSQLステートメントのタイプを示します。Pはプロシージャー、Fは関数、Aは許可ルーチンを示します。

    • P = プロシージャー

    • F = 関数

    • A = 許可LEルーチン

  • [カウント]は、測定中に実行SQLステートメントによってストアード プロシージャーが呼び出された回数を示します。