DB2_REDUCED_OPTIMIZATION レジストリー変数の設定

最適化クラスを設定しても、アプリケーションのコンパイル時間が十分に短縮されない場合は、DB2_REDUCED_OPTIMIZATION レジストリー変数を設定してみてください。

このレジストリー変数により、最適化クラスの設定を上回る仕方で、オプティマイザーの検索スペースを制御することが可能となります。 このレジストリー変数によって、最適化機能を削減したり、最適化機能を指定した最適化クラスに固定して使用するように要求することができます。 使用される最適化手法の数を削減する場合、 最適化の際に使用される時間およびリソースも削減されます。

最適化に必要な時間とリソースを削減できるかもしれませんが、一方で最適ではない照会アクセス・プランが生成されるリスクは増えます。

最初に、レジストリー変数を YES に設定してみます。 最適化クラスが 5 (デフォルト) もしくは 5 未満の場合に、通常はより良い照会アクセス・プランを生成することがなく、相当量の準備時間とリソースを消費する、いくつかの最適化手法をオプティマイザーは使用不可にします。 最適化クラスがちょうど 5 の場合、さらにいくつかの手法を削減または使用不可にします。 その結果、オプティマイザーによる最適化に必要な時間とリソースをより削減できるかもしれませんが、 一方で最適ではない照会アクセス・プランが生成されるリスクは増えます。 最適化クラスが 5 未満の場合、これらの技法のいくつかは最初から無効であることがあります。 しかしそれらが有効であれば、有効のままとなります。

YES 設定でコンパイル時間を十分に削減できないなら、レジストリー変数を整数値に設定してみてください。 この効果は YES と同じですが、クラス 5 で動的に準備される照会については、以下の追加の動作があります。 照会ブロック内の結合の総数が設定値を超えると、オプティマイザーは、追加の最適化技法を無効にする代わりに、最長マッチ型結合列挙に切り替えます。 その結果、照会は最適化クラス 2 に類似したレベルで最適化されます。