DB2 オプティマイザーが述部について見積もる選択性 (フィルター係数) のオーバーライド

「選択性のオーバーライド」機能を使用して、DB2 for z/OS バージョン 11 新機能モード以降で動作する SQL ステートメントの述部について、DB2 オプティマイザーが見積もるフィルター係数をオーバーライドします。

始める前に

このタスクについて

述部のフィルター係数は、0 と 1 の間の数であり、表の中で、述部が真となる行の比率を予測します。 例えば、表 T の列 C1 には、5 つの異なる値 (A、D、Q、W、X) だけが入っていることを DB2 が判別できるものとします。 他に情報がない場合、DB2 は、5 分の 1 の行が列 C1 に値 D を保有していると見積もります。 その場合に、述部 C1='D' の表 T でのフィルター係数は、0.2 となります。

DB2 オプティマイザーは、参照されている表の統計が最新のものであっても、ある述部の、または SQL ステートメント内の述部のセットの、正確なフィルター係数を常に判別できるわけではありません。 結果として、オプティマイザーは、最適なものよりも小さいアクセス・プランを生成します。

例えば、述部 WHERE T1.C1 > ? は、PREPARE または BIND フェーズの間にオプティマイザーが正確なフィルター係数を見積もることを許可しません。 ヒストグラム統計が C1 で収集されていても、オプティマイザーは、どの値が見込まれるかを判断できません。

「選択性のオーバーライド」機能によって、フィルター係数としてオプティマイザーが見積もる値を、より正確な値で置き換えるための推奨事項を受け取ることができます。 また、フィルター係数の値をご自身で設定することもできます。

SQL ステートメントのフィルター係数のセットは、選択性プロファイルを構成します。 「選択性のオーバーライド」機能を使用すると、選択性プロファイルを検証し、エラーがなければそれらをデプロイすることができます。

制約事項: DB2 for z/OS では、選択性プロファイルにフィルター係数のセットを複数入れることができますが、「選択性のオーバーライド」機能が作成するセットは、選択性プロファイルごとに 1 つだけです。

推奨事項を受け入れるか、またはご自身で設定することによってフィルター係数をオーバーライドした後、フィルター係数のセットで潜在的なエラーについて調べることができます。 そのあと、現在の SQL ステートメントの新しいアクセス・プランを確認できます。さらに、新しい選択性プロファイルをデプロイすることなく、そのアクセス・プランを元のアクセス・プランと比較することもできます。 索引アドバイザーをステートメントに対して実行することもできます。アドバイザーは新しいアクセス・プランを使用します。 ここで、アドバイザーの推奨事項を、元のアクセス・プランに基づいてアドバイザーが提示した推奨事項と比較できます。

さらにフィルター係数を変更することもできます。それらを再妥当性検査し、再テストし、デプロイできます。

手順

  1. 統計アドバイザーの推奨事項を実装した後、ワークフロー・アシスタントの「呼び出し」セクションの「単一照会アドバイザーおよびツールの実行」ページに戻ります。 ワークフロー・アシスタントの左側にある「呼び出し」タブをクリックすると、ここに戻ることができます。 このタブをクリックしても「単一照会アドバイザーおよびツールの実行」ページが開かない場合は、ワークフロー・アシスタントの左側にある「アドバイザーおよび分析ツールの実行」をクリックして、ページを開きます。
  2. ワークフロー・アシスタントの左側で「選択性のオーバーライド」を選択します。
  3. フォーマット設定済み SQL ステートメントを表示し、オーバーライドの候補としてマークされているフィルター係数を計算するか、または手動で変更します。

    SQL ステートメントは、その構造がはっきりと分かるフォーマットで表示されます。 「選択性のオーバーライド」機能によって、DB2 オプティマイザーが誤ってフィルター係数を見積もった可能性がある述部が見つかると、フィルター係数がある述部の部分の横に「Y」が表示されます。

    「提案されたフィルター係数」列に、「選択性のオーバーライド」機能が推奨するフィルター係数が表示されます。 独自のフィルター係数を指定する場合、フィルター係数の行をクリックし、0 から 1 までの値を指定してください。

    重要: ご自身でフィルター係数を設定する前に、ご使用のバージョンの DB2 for z/OS の資料で、フィルター係数に関する説明を参照してください。
    「選択性のオーバーライド」機能が選択したフィルター係数を受け入れるか、またはご自身でフィルター係数を設定することによって、フィルター係数をオーバーライドした後で新しい選択性プロファイルを検証してください。 エラーも警告もなければ、以下のアクションの 1 つ以上を実行し、選択性プロファイルをデプロイするかどうかを決定できます。
    • 新しいアクセス・プランのアクセス・プラン・グラフを確認します。
    • 新しいアクセス・プランをアクセス・プラン・エクスプローラーで確認します。
    • ステートメントの前のアクセス・プラン・グラフを、新しいフィルター係数を使用するアクセス・プラン・グラフと比較します。
    • 索引アドバイザーを実行し、選択性プロファイルを仮想的にデプロイします。 このアドバイザーは、選択性プロファイルに基づく推奨事項を提示します。 この選択性プロファイルによって、ステートメントについて提示した推奨事項を索引アドバイザーが変更するかどうかが分かります。

    選択性プロファイルが、パフォーマンス目標にとって十分にアクセス・プランを改善することを確認できたら、「選択性のオーバーライド」機能を使用して、その選択性プロファイルをデプロイすることができます。


Feedback