DB2 10.5 for Linux, UNIX, and Windows

最適化クラス

SQL または XQuery ステートメントをコンパイルするときは、オプティマイザーによる、そのステートメントのための最も効率的なアクセス・プランの選択方法を決定する最適化クラスを指定できます。

最適化クラスごとに、照会のコンパイル中に考慮される最適化方針の数およびタイプが異なります。 個別に最適化手法を指定して照会の実行時のパフォーマンスを向上することはできますが、指定する最適化手法が多いほど、照会のコンパイルに要する時間とシステム・リソースは多くなります。

SQL または XQuery ステートメントをコンパイルするときは、以下のいずれかの最適化クラスを指定できます。

0
このクラスは、アクセス・プランの生成時に、オプティマイザーが最小限の最適化を使用するよう指示します。このクラスの特性は以下のとおりです。
  • オプティマイザーは、頻出値統計を考慮しません。
  • 基本照会書き直し規則のみを適用します。
  • 貪欲型結合列挙を使用します。
  • ネストされたループ結合および索引スキャン・アクセス方式だけを使用可能にします。
  • リスト・プリフェッチを、生成されたアクセス方式で使用されないようにします。
  • スター型結合方式は考慮に入れません。

このクラスを使用するのは、照会コンパイル・オーバーヘッドを最小限にすることが必要な環境の場合だけにしてください。適切に索引付けされた表にアクセスする非常に単純な動的 SQL または XQuery ステートメントだけで構成されるアプリケーションでは、 照会最適化クラス 0 が適しています。

1
この最適化クラスには、次の特性があります。
  • オプティマイザーは、頻出値統計を考慮しません。
  • 照会書き直し規則のサブセットのみを適用します。
  • 貪欲型結合列挙を使用します。
  • リスト・プリフェッチを、生成されたアクセス方式で使用されないようにします。

最適化クラス 1 は、マージ・スキャン結合と表スキャンも使用可能である点を除けば、クラス 0 と同じ働きをします。

2
このクラスは、複雑な照会のコンパイル・コストをクラス 3 以上に比べてはるかに低く抑えつつ、クラス 1 よりも大幅に高い水準の最適化を使用するよう、オプティマイザーに指示します。 この最適化クラスには、次の特性があります。
  • 使用可能な統計すべて (頻出値および変位値の統計を含む) を使用します。
  • すべての照会書き直し規則 (マテリアライズ照会表の経路指定を含む) を適用します。ただし、めったに該当することがない、計算を多用する規則を除きます。
  • 貪欲型結合列挙を使用します。
  • リスト・プリフェッチおよびマテリアライズ照会表の経路指定を含む広い範囲のアクセス方式が考慮されます。
  • 該当する場合には、スター型結合方式が考慮されます。

最適化クラス 2 は、動的プログラミング結合列挙ではなく欲張り型結合列挙を使用する点を除けば、クラス 5 と同様な働きをします。 このクラスは、欲張り型結合列挙アルゴリズムを使用するクラスの中では最も高度な最適化であり、 複雑な照会の場合にあまり代替プランを考慮しないので、 クラス 3 以上と比べてコンパイル時間は少なくて済みます。 意思決定支援またはオンライン分析処理 (OLAP) 環境において非常に複雑な照会を行う場合には、 クラス 2 をお勧めします。 このような環境では、特定の照会が厳密に同じ仕方で繰り返されることはめったにないので、 その照会が次に行われるまでアクセス・プランがキャッシュに残っていることはほとんどありません。

3
このクラスは中程度の最適化を表し、DB2® for z/OS® の照会最適化特性に最もよく合致します。この最適化クラスには、次の特性があります。
  • 使用可能な場合は、頻出値統計が使用されます。
  • 「副照会から結合への変換」を含めて、ほとんどの照会書き直し規則を適用します。
  • 以下において、動的プログラミング結合列挙が使用されます。
    • 複合内部表の限定使用
    • 参照表に関係するスター・スキーマに対するデカルト積の限定使用
  • リスト・プリフェッチ、索引 ANDing 結合、スター型結合を含めた広範囲のアクセス方式が考慮されます。

このクラスは、さまざまな種類のアプリケーションに適しており、4 つ以上の結合を含む照会のアクセス・プランを改善します。

5
このクラスは、オプティマイザーが高水準の最適化を使ってアクセス・プランを生成するよう指示します。このクラスの特性は以下のとおりです。
  • 使用可能な統計すべて (頻出値および変位値の統計を含む) を使用します。
  • すべての照会書き直し規則 (マテリアライズ照会表の経路指定を含む) を適用します。ただし、めったに該当することがない、計算を多用する規則を除きます。
  • 以下において、動的プログラミング結合列挙が使用されます。
    • 複合内部表の限定使用
    • 参照表に関係するスター・スキーマに対するデカルト積の限定使用
  • リスト・プリフェッチ、索引の ANDing、およびマテリアライズ照会表経の経路指定を含めた広範囲のアクセス方式が考慮されます。

最適化クラス 5 (デフォルト) は、トランザクション処理と複合的な照会の両方を伴う混合環境に適しています。 この最適化クラスは、 最も価値のある照会変換技法およびその他の照会最適化技法を、 効率的な方法で適用させるよう設計されています。

複雑な動的 SQL または XQuery ステートメントのために追加のリソースおよび処理時間が保証されないことを、オプティマイザーが検出した場合、最適化は縮小されます。 縮小のエクステントは、マシンのサイズと述部の数によって決まります。オプティマイザーが照会最適化の量を縮小すると、 通常は適用される照会書き直し規則のすべてを適用し続けます。 しかし、照会オプティマイザーは欲張り型結合列挙を使用するため、 考慮されるアクセス・プランの組み合わせの数が少なくなります。

7
このクラスは、オプティマイザーが大幅な最適化を使ってアクセス・プランを生成するよう指示します。 このクラスは最適化クラス 5 と同様です。ただしこの場合は、オプティマイザーが複雑な動的 SQL または XQuery ステートメントの照会最適化の量を縮小しようとしない点で異なります。
9
このクラスは、オプティマイザーが使用可能なすべての最適化技法を使用するよう指示します。 それには、次のものが含まれます。
  • すべての使用可能な統計
  • すべての照会書き直し規則
  • デカルト積および無制限の複合内部を含めて、結合列挙で可能なものすべて。
  • すべてのアクセス方式

このクラスでは、オプティマイザーによって考慮される可能なアクセス・プランの数が大幅に増加します。 大規模な表を使用する非常に複雑な照会または非常に長時間実行する照会において、より包括的な最適化によってさらに優れたアクセス・プランを生成できるかどうかを調べる際に、このクラスを使用できます。 よりすぐれたプランが見つかったかどうかを調べるには、 explain とパフォーマンスの測定値を使用します。