DB2 for Linux, UNIX, and Windows で実行される SQL ステートメント用の最適化プロファイルの作成およびデプロイ

最適化プロファイルを使用すると、SQL ステートメントのアクセス・プランの作成方法に直接影響を与えることができます。このプロファイルでは、使用する索引、SQL ステートメントが参照する表へのアクセス方法、使用する結合方式、その他の設定を指定できます。

始める前に

このタスクについて

最適化プロファイルにはグローバル・ガイドラインを含めることができます。これは、プロファイルが有効である間に実行されるすべてのデータ操作言語 (DML) ステートメントに適用されるものです。また、最適化プロファイルには、パッケージ内の単一 DML ステートメントに適用される特定のガイドラインを含めることもできます。

手順

最適化プロファイルの作成、検証、およびデプロイ用のビジュアル・エディターを開くには、以下の手順を実行します。

  1. チューニングする SQL ステートメントをキャプチャーします。単一照会チューニング用の SQL ステートメントをキャプチャーできる場所を参照してください。
  2. キャプチャーされたステートメントのいずれかを選択して、「アドバイザーおよびツールの呼び出し」ボタンをクリックします。 「呼び出し」セクションに、「単一照会アドバイザーおよび分析ツールの実行」ページが開きます。
  3. ワークフロー・アシスタントの左側で、「単一照会」の下の「拡張」を展開し、「最適化プロファイルの作成」を選択します。

次のタスク

「最適化プロファイルを使用したアクセス・プランのカスタマイズ (Customize Access Plan with an Optimization Profile)」ページのセクションを使用して、最適化プロファイルのガイドラインを指定します。

このページは、以下の 3 つのセクションで構成されます。
結合図および結合シーケンス図 (Join diagram and join sequence diagram)
このセクションは、ページの左上隅に表示されます。

結合図は、ステートメントが参照する表をノードとして表示します。 ノード間のりょう線は、表間の関係を示します。 りょう線が表す述部のタイプが、りょう線の横に表示されます。述部は、ローカル述部または結合述部になることがあります。ノードをダブルクリックして、アクセス・プランが対応する表にアクセスする方法を変更できます。

結合シーケンス図は、SQL ステートメントのアクセス・プラン内の結合シーケンスを表示します。

各ノードは 1 つの表を表し、以下の情報を表示します。
  • DB2 オプティマイザーによって再作成されたステートメント内の表の名前
  • 表の完全修飾名
  • 表のカーディナリティー
  • 表に指定されているアクセス・タイプ
編集可能な結合シーケンス図 (Editable join sequence diagram)
このセクションは、ページの右上隅に表示されます。

結合のタイプを変更したり、結合を追加または削除したりして、結合シーケンスを編集します。SQL ステートメントが参照する表を表すノードを、追加したり削除したりすることもできます。

最適化プロファイル内のガイドライン (Guidelines in the Optimization Profile)
このセクションは、ページの下部に表示されます。
「最適化プロファイル内のガイドライン (Guidelines in the Optimization Profile)」セクションを使用して、以下のタスクを実行できます。
最適化プロファイルを使用するすべてのステートメント用のガイドラインの設定
  • マテリアライズ照会表の使用を有効または無効にする。使用を有効にする場合は、どの MQT の使用を検討するかを指定できます。
  • 計算パーティション・グループ最適化の検討を有効または無効にする。この検討を有効にする場合は、DB2 オプティマイザーが使用を検討するパーティション・グループを指定できます。
  • REOPT バインド・オプションの設定を別の値でオーバーライドする。
  • DEGREE バインド・オプションの設定を別の値でオーバーライドする。
  • QUERYOPT バインド・オプションの設定を別の値でオーバーライドする。
  • リアルタイム統計の収集を有効または無効にする。この収集を有効にする場合は、DB2 オプティマイザーが統計を収集するために許容される最大時間を指定できます。オプティマイザーが、収集にはそれ以上の時間が必要であると見積もった場合、オプティマイザーは統計を収集しません。
  • MQT の適用を有効にする。
現行 SQL ステートメント用のガイドラインの設定
  • REOPT バインド・オプションの設定を別の値でオーバーライドする。
  • DEGREE バインド・オプションの設定を別の値でオーバーライドする。
  • QUERYOPT バインド・オプションの設定を別の値でオーバーライドする。
  • リアルタイム統計の収集を有効または無効にする。この収集を有効にする場合は、DB2 オプティマイザーが統計を収集するために許容される最大時間を指定できます。オプティマイザーが、収集にはそれ以上の時間が必要であると見積もった場合、オプティマイザーは統計を収集しません。
  • MQT の適用を有効にする。
照会書き換え最適化フェーズで検討されるトランスフォーメーションに作用するガイドラインを設定します。このフェーズでは、元のステートメントを意味的に同等の最適化ステートメントに変換します。
  • IN-LIST 述部から結合への書き換えトランスフォーメーションを有効または無効にする。
  • NOT-EXISTS 述部からアンチ結合への書き換えトランスフォーメーションを有効または無効にする。
  • NOT-IN 述部からアンチ結合への書き換えトランスフォーメーションを有効または無効にする。
  • 副照会から結合への書き換えトランスフォーメーションを有効または無効にする。
表へのアクセス方法のカスタマイズ
  • プラン最適化ガイドラインを設定する。
  • 結合図で表をダブルクリックして、表にアクセスする方法を変更する。

ご使用の最適化プロファイルに問題がないか確認して、プロファイルをデプロイする前に修正できます。

最後に、最適化プロファイルをデプロイすることができます。デプロイとは、最適化プロファイルを SYSTOOLS.OPT_PROFILE 表に行として挿入することを意味します。

OPTPROFILE バインド・オプションを使用して、最適化プロファイルをパッケージ・レベルで使用することを指定するか、あるいは CURRENT OPTIMIZATION PROFILE 特殊レジスターを使用して、最適化プロファイルをステートメント・レベルで使用することを指定します。

この特殊レジスターには、最適化のために動的に準備されるステートメントによって使用される、最適化プロファイルの修飾名が入っています。CLI アプリケーションの場合、CURRENTOPTIMIZATIONPROFILE クライアント構成オプションを使用して、接続ごとにこの特殊レジスターを設定できます。


フィードバック