DB2 for z/OS で実行される SQL ステートメント用の最適化のヒントの作成およびデプロイ

DB2® for z/OS® サブシステム上で実行される SQL ステートメントの最適化のヒントを作成、検証、およびデプロイできます。 最適化のヒントを使用して、DB2 オプティマイザーが SQL ステートメントの最適な実行プランを選択できるよう支援するための基準を設定できます。

始める前に

このタスクについて

DB2 に最適化のヒントを提供すると、次の場合に役立ちます。
最適化のヒントには、以下に示す 3 つの異なるタイプのヒントがあります。
PLAN_TABLE ヒント
このタイプのヒントは、特定の単一許可 ID によって発行される SQL ステートメントに特定のアクセス・パスを強制しようとします。その同じ許可 ID によって所有されている PLAN_TABLE インスタンス内の行を使用して、OPTHINT バインド・オプションまたは CURRENT OPTIMIZATION HINT 特殊レジスターに指定された値に基づいてヒントを適用します。
ステートメント・レベル・アクセス・パスのヒント (DB2 10 for z/OS NFM 以降)
このタイプのヒントは、DB2 が指定の PLAN_TABLE 行を使用して、適合する SQL ステートメントのためのアクセス・パスの決定を試行するように指定します。 また、指定された範囲の適合ステートメントのみに適用されるアクセス・パス・ヒントを作成することもできます。
最適化パラメーターのヒント (DB2 10 for z/OS NFM 以降)
このタイプのヒントは、DB2 が特定の最適化パラメーター (以下のサブシステム・パラメーターとオプションなど) を使用して、ヒントに適合したステートメントをすべて処理するよう指定します。
  • REOPT バインド・オプション
  • STARJOIN サブシステム・パラメーター
  • PARAMDEG サブシステム・パラメーター (MAX_PAR_DEGREE 列)
  • CDSSRDEF サブシステム・パラメーター (DEF_CURR_DEGREE 列)
  • SJTABLES サブシステム・パラメーター
最適化パラメーターを指定していて、指定範囲の適合ステートメントのみを適用範囲とするヒントも作成できます。
一度に複数のタイプのヒントをデプロイすることはできません。 しかし、単一 SQL ステートメントに対し、順次、複数の異なるタイプのヒントをデプロイすることができます。最適化のヒントの共存を参照してください。
ヒント: 状況に合ったヒントのタイプを判別しにくい場合は、3 つのタイプすべてをエディターで定義し、それらを一度に 1 つずつデプロイしてテストすることができます。

手順

最適化のヒントを作成、検証、およびデプロイするには、以下を行います。

  1. 最適化のヒントを作成する対象となる SQL ステートメントを、キャプチャーまたは選択します。
    • キャプチャーした単一 SQL ステートメントを元に作業する場合は、以下の手順に従います。
      1. チューニングする SQL ステートメントをキャプチャーします。単一照会チューニング用の SQL ステートメントをキャプチャーできる場所を参照してください。
      2. ステートメントを選択して、「ステートメントのチューニング」ボタンをクリックします。 「呼び出し」セクションに、「単一照会アドバイザーおよび分析ツールの実行」ページが開きます。
    • 照会ワークロード内の SQL ステートメントを元に作業する場合は、以下の手順に従います。
      1. ワークフロー・アシスタントの左側にある「管理」タブをクリックします。
      2. 「ワークロードの管理」ページで、対象の SQL ステートメントが含まれる照会ワークロードを選択します。
      3. 「追加のアクション」フィールドで「ステートメントの表示」を選択します。
      4. 「ステートメントの表示」ページで、SQL ステートメントを右クリックし、「選択したステートメントでの単一照会アドバイザーおよびツールの実行」を選択します。「呼び出し」セクションの「単一照会アドバイザーおよび分析ツールの実行」ページが開きます。
  2. ワークフロー・アシスタントの左側で、「単一照会」の下の「詳細」を展開し、「最適化のヒントの作成」を選択します。 ワークフロー・アシスタントは、「確認」セクションの「最適化のヒントを使用したアクセス・プランのカスタマイズ」ページを開きます。このページには、以下の 3 つのセクションがあります。
    結合図
    結合図は、以下の情報を表示します。
    • 照会が参照する表。これは、ノードとして図に表示されます。
    • 表間の関係。これは、ノード間のりょう線として図に表示され、照会の述部の分析 に基づいて生成されます。
    • ローカルと結合の両方の述部。

    表をダブルクリックして、SQL ステートメントのアクセス・プランで表を参照する方法をカスタマイズします。カスタマイズは、ページの下部にある「概要」セクション内の表に示されます。カスタマイズは、まだアクティブになっていません。続けて他のカスタマイズを最適化のヒントに追加できます。

    編集可能な結合シーケンス図
    結合シーケンス図は、指定されたアクセス・プランの表の結合シーケンスを表示します。以下の操作を実行できます。
    • 選択したノードの削除
    • 表参照ノードの追加
    • 表をダブルクリックして、SQL ステートメントのアクセス・プランで表を参照する方法をカスタマイズします。
    • 結合演算子ノードの追加
    • 結合演算子ノードをダブルクリックして、結合を別のタイプの結合に変更する。
    • 表を別の表の上にドラッグして、結合シーケンス内の表の位置を入れ替える。
    既存の結合シーケンスに対して行ったすべての変更が、ページの下部にある「概要」表にリストされます。ワークフロー・アシスタントは、即時にそれらを検査します。エラーおよび警告は、ページの下部にある「問題」セクションに表示されます。

    結合シーケンスに対して行った変更をすべて除去したい場合は、「デフォルトの結合シーケンス」をクリックします。

    ヒントの定義
    結合図または結合シーケンス図で変更を行うと、新しい行がこのセクションに追加されます。ワークフロー・アシスタントが項目内でエラーを検出している場合、項目に関する警告を出している場合、または項目に対する変更を提案している場合、「問題」タブに標識が表示されます。 そのタブをクリックして、情報を表示します。
  3. 最適化のヒントを作成します。
    • PLAN_TABLE ヒントまたはステートメント・レベルのアクセス・パス・ヒントを作成する場合は、結合図および結合シーケンス図で変更を行うことで作成できます。結合図または結合シーケンス図で変更を行うと、新しい行が、「ヒントの定義」セクションの「表アクセス」サブセクションに追加されます。ワークフロー・アシスタントが項目内でエラーを検出している場合、項目に関する警告を出している場合、または項目に対する変更を提案している場合、「問題」タブに標識が表示されます。 そのタブをクリックして、情報を表示します。
    • 最適化パラメーター・ヒントを作成する場合は、「ヒントの定義」セクションの「最適化パラメーター」サブセクションで値を変更することで作成できます。
  4. 最適化のヒントを検証します。 「ヒントの定義」セクションに入れたい項目があり、すべてのエラーが解決されており、すべての警告に応答した場合、ページの上部の「ヒントの検証」アイコンをクリックします。 「ヒントの検証」ウィンドウで、アプリケーション環境のパラメーターをカスタマイズするか、あるいはデフォルト値のままにします。これらのオプションに関する情報を見るには、ウィンドウの左下隅にある「ヘルプ」アイコンをクリックするか、F1 を押してください。「検証」をクリックすると、「ヒントの検証の結果 (Result of Validating the Hint)」ウィンドウが開きます。 このウィンドウに関するヘルプ情報を見るには、左下隅にある「ヘルプ」アイコンをクリックするか、F1 を押してください。
  5. 検証プロセスで検出された問題を解決します。
  6. 最適化のヒントをデプロイします。
    1. 「ヒントのデプロイ」アイコンをクリックします。
    2. 「ヒントのデプロイ」ウィンドウでは、ヒントの名前や SQL ステートメントを識別するために使用する番号などのオプションを指定します。このウィンドウに関するヘルプ情報を見るには、左下隅にある「ヘルプ」アイコンをクリックするか、F1 を押してください。
    3. 「デプロイ」をクリックします。

フィードバック