構成パラメーターの中には、 SQL コンパイラーによって選択されるアクセス・プランに影響を与えるものがいくつかあります。 それらのパラメーターの多くは単一区画データベースに適用されるものですが、 一部には区分データベースのみに適用されるものもあります。 区分データベースにおいて構成パラメーターを用いて処理を行う場合には、 各パラメーターに使用する値をすべての区画で同じにすることをお勧めします。
連合システムで作業している場合、 照会の大部分がニックネームにアクセスするときは、 環境を変更する前に、送信している照会のタイプを考慮してください。 たとえば、バッファー・プールはデータ・ソースからページをキャッシュしません。 したがって、buffpage パラメーター値を増やしても、 ニックネームを含む照会のアクセス・プランを作成しているとき、 追加の代替プランが最適化プログラムによって考慮されることが保証されるわけではありません。 (データ・ソースとは、連合システム内の DBMS とデータのことです。) また、最適化プログラムは、 データ・ソース表をローカルに具体化することが、最もコストを低くする手段、 または分類操作に必要なステップであると判断することがあります。 この場合、DB2 ユニバーサル・データベースが利用できるリソースを増やすと、 パフォーマンスが高速になります。 詳細については、連合データベース照会に影響を与えるサーバー・オプションおよび データベース共用メモリーを参照してください。
以下に、SQL コンパイラーによって選択されるアクセス・プランに影響を与える構成パラメーターのリストを示します。
アクセス・プランを選択するとき、 最適化プログラムはディスクからページをバッファー・プールに取り出すときの入出力コストを考慮します。 その計算の中で、最適化プログラムは照会に必要な入出力の数を見積もります。 この見積もりには、バッファー・プール使用率の予測も含まれています。 すでにバッファー・プールの中にあるページに含まれている行を読み取るには、 追加の物理的な入出力が必要ではないためです。 最適化プログラムは、ページがバッファー・プールの中にあるかどうかを見積もるときに、 BUFFERPOOLS システム・カタログ表の npages 列の値を考慮します。
表を読み取るときの入出力コストは、以下のものに影響を与える可能性があります。
1 つのデータベースには複数のバッファー・プールを入れることができます。 また、1 つの区分データベースに複数のバッファー・プールを入れることも可能です。 新しいバッファー・プールは、データベースの区画にそれぞれ追加することも、 すべての区画にまたがって追加することも選択できます。 区分データベースにおける見積もりには、 システム・カタログ表 BUFFERPOOLS および BUFFERPOOLSNODE の npages 列が使用されます。
dft_degree 構成パラメーターは、 CURRENT DEGREE 特殊レジスターおよび DEGREE バインド・オプションの省略時値を指定します。 値 1 は、区画内並行処理でないことを意味しています。 値 -1 は、プロセッサー数と照会のタイプに基づいて、 区画内並行処理の程度を最適化プログラムが決定することを意味します。
SQL 照会をコンパイルするときには、照会最適化クラスを使用して、 最適化プログラムにどの程度の最適化技法を使用するのかを指示することができます。 適切な照会最適化クラスの選択に関する詳細については、 最適化クラスの調整を参照してください。
avg_appls パラメーターは、 SQL 最適化プログラムが、選択したアクセス・プランの実行時にどれだけのバッファー・プールが使用可能になるかを見積もるために使われます。 このパラメーターに高い値を指定すると、 最適化プログラムがそのバッファー・プールを控えめに使用するようなアクセス・プランを選択する影響が出る可能性があります。 このパラメーターの値を 1 にすると、 最適化プログラムはバッファー・プール全体をアプリケーションに利用可能なものとして処理します。
最終的に分類されたデータ・リストを保管するために一時表が必要ではない場合は、 分類は「パイプ処理」されるものとみなされます。 つまり、分類の結果を 1 つの順次アクセスで読み取ることができます。 パイプ処理された分類は、 パイプ処理ではない分類の場合よりもパフォーマンスが向上するので、 可能ならそれが使用されます。 (パイプ式分類と非パイプ式分類の定義については、 最適化プログラムでの分類の影響を参照してください。)
アクセス・プランを選択するとき、最適化プログラムは分類操作のコストを見積もります。 それには、分類が次のものによってパイプ処理可能かどうかの評価も含まれます。
使用する分離レベル (並行性を参照) が反復可能読み取り (RR) である場合、 SQL 最適化プログラムは locklist パラメーターと maxlocks パラメーターの値を考慮して、 行レベルのロックが表レベルのロックに自動調整される可能性があるかどうかを調べます。 最適化プログラムは、表アクセスに関してロック自動調整が起きると予測した場合、 照会実行時のロック自動調整のオーバーヘッドが生じないよう、 そのアクセス・プランには表レベル・ロックを選択します。
SQL 最適化プログラムが特定の操作を実行するコストを見積もるときには、 CPU の速度が使用されます。 最適化プログラムは、 各種入出力コスト見積もりとともにそれらの CPU コスト見積もりを使用して、 照会に最適のアクセス・プランを選択します。
マシンの CPU 速度は、 選択されるアクセス・プランに重大な影響を与える可能性があります。 この構成パラメーターは、データベースをインストールまたは移行した時点で、 自動的に適切な値に設定されます。 このパラメーターを調整するのは、 テスト・システムにおいて実動環境のモデル化を行っている場合か、 またはハードウェア変更の影響を見積もる場合だけにしてください。 このパラメーターを使用して異なるハードウェア環境のモデル化を行う場合は、 その環境のために選択されるアクセス・プランを観察することができます。
ステートメント・ヒープのサイズは、 最適化プログラムがさまざまなアクセス・パスを選択する際には影響がありません。 しかし、複合 SQL ステートメントに関して実行される最適化の量には影響します。
stmtheap パラメーターの設定値が十分大きくない場合は、 使用可能なメモリーが足りないのでステートメントを処理できないことを示す SQL 警告を受け取ることがあります。 たとえば、 SQLCODE +437 (SQLSTATE 01602) により、 ステートメントのコンパイルに使った最適化の量が、 照会最適化クラスの指定時に要求した量より少ないことを示す場合があります。 (詳しくは、最適化クラスの調整を参照してください。)
このパラメーターの値が "ANY" のときには、 最適化プログラムが、使用する並列化の程度 (並列度) を選択します。 "ANY" 以外の値が示されている場合には、ユーザー指定の値を使用して、 アプリケーションの並列度を決定します。
通信帯域幅は、 最適化プログラムがアクセス・プランを決めるのに使用されます。 最適化プログラムはこのパラメーターの値を使用して、 区分データベースのデータベース区画サーバー間で一定の操作を実行する際のコストを見積もります。
詳細については、構成パラメーターの調整を参照してください。