例: ステートメントの実行に関連したアクティビティー情報のキャプチャー
実行に長い時間を要しているステートメントを特定する場合は、あるしきい値を定義して、そのしきい値を超えた場合にそのステートメントの実行に関する情報をアクティビティー・イベント・モニターにキャプチャーさせることができます。
その後、ステートメントの実行情報を、アクティビティー・イベント・モニターによって収集された情報と関連付けて、スローダウンの原因となった可能性のある事柄について詳しく理解するのに役立つアクティビティー・メトリックを表示することができます。
始める前に
このタスクについて
以下の例の場合、調査対象の照会は、アプリケーションの一部として実行されています。照会は以下のとおりです。
SELECT DISTINCT PARTS_BIN FROM STOCK WHERE PART_NUMBER = ?スローダウンの理由として考えられることの 1 つとして、データ分布が好ましくない場合があります。
例えば、STOCK 表にはほとんどの部品番号に関しては数行しか含まれておらず、特定の 1 つの部品番号については数千行にも及ぶので、この SELECT ステートメントの実行に時間がかかる場合があります。以下の例では、上記の照会と関連したアクティビティーにおいてパラメーター・マーカー (?) として処理された実際の値を取得する方法を示します。
手順
照会の実行が低下した原因がデータ分布が適切でないためであるという推測をテストするには、該当のステートメントにしきい値を作成できます。その後、このしきい値とアクティビティー・イベント・モニターを使用して、そのステートメントの実行に関する情報をキャプチャーできます。 この情報から、想定よりも長く実行された照会によって処理された実際の値を判定できます。
変化形: 実行可能 ID を使用しているステートメントに対するしきい値の定義
前述の例の場合、しきい値は、ステップ 1 でステートメントの実際のテキストを使用して明示的に識別されました。しきい値を間接的に定義することも可能で、その場合にはパッケージ・キャッシュに含まれるステートメントの実行可能 ID を指定します。例えば、しきい値を次のように定義できます。
CREATE THRESHOLD TH1
FOR STATEMENT REFERENCE
x'0100000000000000020000000000000000000000020020100304162158584850' ACTIVITIES
ENFORCEMENT DATABASE
WHEN ACTIVITYTOTALTIME > 10 SECONDS
COLLECT ACTIVITY DATA WITH DETAILS, SECTION AND VALUES
CONTINUE;この例では、STATEMENT REFERENCE というキーワードに続く実行可能 ID を使用して、パッケージ・キャッシュ内で対応するステートメント・テキストを検索しています。ステートメントの実行可能 ID は、パッケージ・キャッシュを調べることにより判別できます。
ステートメントの実行可能 ID などの、パッケージ・キャッシュに入っている情報の調査方法について詳しくは、パッケージ・キャッシュ情報を使用して、パフォーマンス調整の対象候補となるステートメントを識別するを参照してください。
パッケージ・キャッシュでその実行可能 ID が検出される場合、パッケージ・キャッシュから関連するステートメント・テキストが取得されて、ステートメントしきい値の定義に使用されます。静的 SQL セクションのステートメントの場合、実行可能 ID がパッケージ・キャッシュに存在しない場合、そのステートメント・テキストはシステム・カタログから取得されます。 動的 SQL セクションのステートメントの場合、PREPARE ステートメントを使用して、そのステートメント・ストリングから準備済みステートメントを作成することを考慮してください。 実行可能 ID がパッケージ・キャッシュにもシステム・カタログにも見つからない場合は、エラー (SQL4721N) が戻されます。