リリース情報


|10.5 DB2 レジストリーと環境変数

|10.5.1 パフォーマンス変数への修正


|

|表 5. パフォーマンス変数

変数名 オペレーティング・システム
説明
DB2_BINSORT すべて デフォルト=NO

値: YES または NO

ソートの CPU 時間および経過時間を短縮する新しいソート・アルゴリズムを使用可能にします。この新しいアルゴリズムは、DB2 UDB の非常に効率的なソート技法を、BIGINT、CHAR、VARCHAR、 FLOAT、および DECIMAL などのすべてのソート・データ・タイプおよびこれらのデータ・タイプの組み合わせにも使用できるように拡張します。この新しいアルゴリズムを使用可能にするには、以下のコマンドを使用します。

db2set DB2_BINSORT = yes
DB2_BLOCK_BASED_BP
Solaris オペレーティング環境 デフォルト=なし

値: パラメーターによって異なります

バッファー・プール内にブロック域を作成するために必要な値を指定します。バッファー・プールの ID は必要であり、SYSCAT.BUFFERPOOLS システム・カタログ視点の BUFFERPOOLID 列を調べればわかります。バッファー・プール内でブロック・ベースの入出力に割り振られるページ数を指定する必要があります。ブロックに含まれるページ数はオプションで、デフォルト値は 32 です。

このレジストリー変数の使用のフォーマットは次の通りです。

DB2_BLOCK_BASED_BP=BUFFER POOL ID,BLOCK AREA SIZE,[BLOCK SIZE];...

セミコロンで項目を分離して同じ変数を使用することで、複数のバッファー・プールをブロック・ベースとして定義できます。

BLOCK SIZE の値は、2 〜 256 の範囲を取る可能性があります。BLOCK SIZE を指定しないと、デフォルトの 32 が使用されます。

指定された BLOCK AREA SIZE がバッファー・プール・サイズの合計の 98% より大きい場合は、バッファー・プールはブロック・ベースで作成されません。バッファー・プールのページ・ベースの領域に常にバッファー・プールの一部を持つことをお勧めします。これは、システム上の入出力の大半が順次プリフェッチであっても、個々のページが必要になる可能性があるからです。BLOCK AREA SIZE に指定された値が BLOCK SIZE の倍数でない場合は、最も近いブロック・サイズ境界に削減されます。ブロック・ベースの入出力について詳しくは 10.2.1, ブロック・ベースのバッファー・プールを参照してください。

DB2_NO_FORK_CHECK
UNIX デフォルト=OFF

値: ON または OFF

この変数が 『ON』 の場合、クライアント・プロセスは、アプリケーションが実行プロセスをコピーする (fork する) のを防止しません。fork が行われると、結果は予測できません。結果に影響がない場合もあれば、悪い結果を導いたり、エラー・コードが戻されたり、アプリケーションでトラップが生じたりする可能性もあります。アプリケーションが fork しないと確信しており、パフォーマンスをより向上させたい場合に、この変数を 『ON』 に変更するようにしてください。
DB2_MINIMIZE_LIST_PREFETCH すべて デフォルト=NO

値: YES または NO

List Prefetch は、該当する RID を索引から検索し、それをページ番号によってソートし、そしてデータ・ページをプリフェッチする、特殊な表アクセス方式です。

最適化プログラムは、List Prefetch が適切なアクセス方式であるかどうか判別するための正確な情報を持っていないことがあります。これは、述部の選択性に、最適化プログラムが選択性を判断するためにカタログ統計を使用することを妨げる、パラメーター・マーカーやホスト変数が含まれている場合に起こる可能性があります。

このレジストリー変数は、最適化プログラムがこのような状態で List Prefetch を考慮しないようにさせます。

DB2_INLIST_TO_NLJN すべて デフォルト=NO

値: YES または NO

SQL コンパイラーが IN リスト述部を結合に書き換えることができる場合があります。例えば、以下のような照会があるとします。

    SELECT *
     FROM EMPLOYEE
     WHERE DEPTNO IN ('D11', 'D21', 'E21')
	  
これを、以下のように書くことができます。

    SELECT *
     FROM EMPLOYEE, (VALUES 'D11', 'D21', 'E21) AS V(DNO)
     WHERE DEPTNO = V.DNO
	  

この改訂は、DEPTNO に索引がある場合に、パフォーマンスが向上します。値のリストが最初にアクセスされ、索引を使用してネスト・ループ結合で EMPLOYEE に結合されて、結合述部に適用されます。

最適化プログラムは、書き換えられたバージョンの照会に最適な結合方式を判別するための正確な情報を持っていないことがあります。これは、IN リストに、最適化プログラムが選択性を判断するためにカタログ統計を使用することを妨げる、パラメーター・マーカーやホスト変数が含まれている場合に起こる可能性があります。このレジストリー変数によって、最適化プログラムは、IN リストに役立つ表を結合の内部表として使用して、値のリストを結合する際にネスト・ループ結合を使用するようになります。

| |

|10.5.2 レジストリー変数 DB2BPVARS の新しいパラメーター

|レジストリー変数 DB2BPVARS は、2 つの新規パラメーター NUMPREFETCHQUEUES |および PREFETCHQUEUESIZE をサポートします。これらのパラメーターはすべてのプラットフォームに適用でき、 |バッファー・プール・データのプリフェッチ操作を改善するために使用することができます。例えば、 |必要な PREFETCHSIZE がいくつかの PREFETCHSIZE/EXTENTSIZE プリフェッチ要求に分割されている |順次プリフェッチについて考えてみます。この場合、要求はプリフェッチ・キューに入れられ、 |そこから入出力サーバーがディスパッチされて非同期入出力が実行されます。デフォルトでは、DB2 が、 |サイズ max(100,2*NUM_IOSERVERS 1) のキューを各データベース・パーティションごとに 1 つずつ |維持します。環境によっては、キューを増やすか、または異なるサイズのキューにすることにより、 |あるいはその両方を行うことにより、パフォーマンスが向上することがあります。プリフェッチ・キューの数は、 |多くても入出力サーバー数の半分でなければなりません。これらのパラメーターを設定するときは、 |ワークロード特性 (現行ユーザーの数など) だけでなく、他のパラメーター (例えば、PREFETCHSIZE、EXTENTSIZE、 |NUM_IOSERVERS、バッファー・プール・サイズ、DB2_BLOCK_BASED_BP など) も考慮します。

|デフォルト値が使用環境にとって小さすぎると思われる場合は、まず、値のみを少し増やしてください。 |例えば、NUMPREFETCHQUEUES=4 および PREFETCHQUEUESIZE=200 と設定することができます。変更結果をモニターしたり |評価したりできるように、これらのパラメーターを小刻みに変更するようにしてください。
|

|表 6. 新しいパラメーターのサマリー

パラメーター名 デフォルト値 有効範囲
NUMPREFETCHQUEUES 1 1 〜 NUM_IOSERVERS

1 未満に設定した場合は、1 に調整

NUM_IOSERVERS を超えて設定した場合は、NUM_IOSERVERS に調整

PREFETCHQUEUESIZE max(100,2*NUM_IOSERVERS) 1 〜 32767

1 未満に設定した場合は、デフォルト値に調整

32767 を超えて設定した場合は、32767 に調整

|10.5.3 各種レジストリー変数への修正および追加

| | |

|DB2_NEWLOGPATH2 レジストリー変数は、すべてのオペレーティング・システムで使用できます。新規変数 DB2_ROLLFORWARD_NORETRIEVE |が導入されました。両方の変数に関する正しい情報を以下に示します。
|

|表 7. 各種変数

変数名 オペレーティング・システム
説明
DB2_NEWLOGPATH2 すべて デフォルト=NO

値: YES または NO

このパラメーターを使用すると、重複ロギングを行うために別のパスを使用するかどうかを指定できます。使用されるパスは、『2』を、logpath データベース構成パラメーターの現行値に追加することにより生成されます。
DB2_ROLLFORWARD_NORETRIEVE
すべて デフォルト = (設定しない)

値: YES または NO

データベース構成パラメーター USEREXIT が使用可能な場合、ロールフォワード操作中にログ・ファイルが自動的にアーカイブから検索されます。 DB2_ROLLFORWARD_NORETRIEVE 変数を指定すると、ロールフォワード操作でログ・ファイルをアーカイブから検索しません。この変数はデフォルトで使用不可です。ロールフォワードで自動的にログ・ファイルを検索したくない場合は、この変数を YES に設定してください。例えば、ホット・スタンバイ・セットアップにおいてこの変数を YES に設定し、不良アプリケーションにより作成されたログ・レコードによってバックアップ・システムが壊されないようにします。

|10.5.4 汎用レジストリー変数の修正および追加

| |

|新規変数 DB2_REDUCED_OPTIMIZATION が導入されました。
|

|表 8. 汎用レジストリー変数

変数名 オペレーティング・システム
説明
DB2_REDUCED_OPTIMIZATION すべて デフォルト=NO

値: YES、NO、または整数

レジストリー変数により、特定の最適化レベルで使用される最適化手法をいくつか使用不可にします。使用する最適化手法の数を減らすと、最適化を行うのに使用する時間とリソースも削減されます。

注:
最適化にかかる時間とリソースの使用が削減されても、最適化とは言えないデータ・アクセス・プランを生み出すリスクは増します。
  • 「NO」に設定した場合

    最適化プログラムは最適化手法を変更しません。

  • 「YES」に設定した場合

    最適化レベルがデフォルトの 5 またはそれ以下の場合、最適化プログラムは、かなりの準備時間とリソースを消費する可能性のある最適化手法をいくつか使用不可にしますが、通常はより優れたアクセス・プランを生成することはありません。

    最適化レベルを正確に 5 にすると、最適化プログラムは、いくつかの追加の手法を削減したり使用不可にしたりし、最適化にかかる時間とリソースの使用をさらに削減しますが、一方、最適化とは言えないデータ・アクセス・プランを生み出すリスクは増します。 5 より低い最適化レベルの場合、これらの手法のいくつかは、効果がなくなる可能性があります。その場合でも、実施されます。

  • 任意の整数に設定した場合

    値を「YES」に設定した場合と影響は同じです。最適化レベル 5 に動的に準備された照会動作に、次に述べる動作が追加されます。照会ブロック内の結合の合計数が設定値を超えると、最適化プログラムは、上記の最適化レベル 5 で説明したように追加の最適化手法を使用不可にする代わりに、貪欲型結合列挙に切り替えます。つまり、照会は、最適化レベル 2 と同様の最適化となります。

    貪欲型結合列挙および動的結合列挙に関する情報については、「管理の手引き: パフォーマンス」の『最適結合を選択するための検索方式』を参照してください。

最適化レベル 5 の動的最適化縮小は、『管理者の手引き: パフォーマンス』の『最適化クラス』に説明があるように、 DB2_REDUCED_OPTIMIZATION が整数に設定された場合の動作と同様に、「YES」に設定され、最適化レベル 5 の場合の動作よりも優先順位が高くなります。


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]