照会の最適化に影響を与える構成パラメーター

構成パラメーターの中には、 SQL または XQuery コンパイラーによって選択されるアクセス・プランに影響を与えるものがいくつかあります。 それらのパラメーターの多くは単一パーティション・データベース環境に適用されるものですが、 一部にはパーティション・データベース環境のみに適用されるものもあります。 ハードウェアが同機種のパーティション・データベース環境の場合は、各パラメーターに使用する値をすべてのデータベース・パーティションで同じにする必要があります。
注: 構成パラメーターを動的に変更すると、パッケージ・キャッシュ内の古いアクセス・プランが原因で、オプティマイザーが変更されたパラメーター値を即時に読み取らない場合があります。 パッケージ・キャッシュをリセットするには、FLUSH PACKAGE CACHE コマンドを実行してください。

フェデレーテッド・システムで、 照会の大部分がニックネームにアクセスする場合、 環境を変更する前に、送信する照会のタイプを評価してください。 例えば、フェデレーテッド・データベースでは、DBMS およびフェデレーテッド・システム内のデータといったデータ・ソースから、バッファー・プールがページをキャッシュに入れることはありません。 このため、 バッファーのサイズを増やしても、 オプティマイザーがニックネームを含む照会のアクセス・プランを選択する際に、 追加のアクセス・プランの選択肢を考慮するとは限りません。 しかし、オプティマイザーは、 データ・ソース表をローカルにマテリアライズすることが、最もコストを低くする手段、 またはソート操作に必要なステップであると判断することがあります。 この場合、使用可能なリソースを増やすことで、パフォーマンスが向上します。

以下の構成パラメーターまたは要因は、 SQL または XQuery コンパイラーによって選択されるアクセス・プランに影響を与えます。

  • 作成時、または変更時に指定したバッファー・プールのサイズ。

    オプティマイザーはアクセス・プランを選択するとき、 ディスクからページをバッファー・プールにフェッチするときの入出力コストを考慮し、 照会を満たすために必要な入出力の数を見積もります。 見積もりには、バッファー・プール使用率の予測も含まれています。既にバッファー・プールの中にあるページに含まれている行を読み取るために追加の物理的入出力は必要ないからです。

    オプティマイザーは、SYSCAT.BUFFERPOOLS システム・カタログ表の、およびパーティション・データベース環境では SYSCAT.BUFFERPOOLDBPARTITIONS システム・カタログ表の npages 列の値を考慮します。

    表を読み取るときの入出力コストは、2 つの表の結合方法、およびデータを読み取るのに非クラスター化索引を使用するかどうかの判断に影響を与える場合があります。

  • デフォルトのパーティション内並行度 (dft_degree)

    dft_degree 構成パラメーターでは、CURRENT DEGREE 特殊レジスターおよび DEGREE BIND オプションのデフォルト値を指定することにより、並列処理を指定します。 値 1 は、パーティション内並列処理でないことを意味しています。 値 -1 は、プロセッサー数と照会のタイプに基づいて、 パーティション内並列処理の多重度をオプティマイザーが決定することを意味します。

    注: intra_parallel データベース・マネージャー構成パラメーターを設定して有効にしない限り、並列処理は行われません。
  • デフォルトの照会最適化クラス (dft_queryopt)

    照会最適化クラスは SQL または XQuery 照会のコンパイル時に指定することができますが、デフォルトの照会最適化クラスを設定することもできます。

  • アクティブ・アプリケーションの平均数 (avg_appls)

    オプティマイザーは、選択されたアクセス・プランの実行時にどれだけのバッファー・プールが使用可能かを見積もる助けとして、avg_appls パラメーターを使用します。 このパラメーターに高い値を指定すると、 オプティマイザーがバッファー・プールをより控えめに使用するアクセス・プランを選択するという影響が出る可能性があります。 値を 1 に指定すると、オプティマイザーはバッファー・プール全体がアプリケーションによって使用可能と見なします。

  • ソート・ヒープ・サイズ (sortheap)

    ソートされる行が、ソート・ヒープ内で使用可能なスペースより多くのスペースを占める場合は、 複数のソート・パスが実行され、各パスは行全体の集合の一部をソートします。 各ソート・パスは、バッファー・プール内のシステム一時表に保管され、ディスクに書き込まれる場合もあります。 すべてのソート・パスが完了すると、ソートされた各部はソートされた単一の行集合にマージされます。 データ・リストの保管にシステム一時表を使用しないソートは常にパフォーマンスが良く、可能な場合はできるだけ使用されます。

    アクセス・プランを選択するとき、オプティマイザーはソート操作のコストを見積もります。 これには、ソートを単一の順次アクセスで読み取れるかどうかの評価も含まれます。 その評価は、ソートするデータ量を見積もり、sortheap パラメーターを参照して、ソートを単一の順次アクセスで読み取るための十分なスペースがあるかどうかを判断して行われます。

  • ロック・リスト用最大ストレージ (locklist) およびエスカレーション前のロック・リストの最大パーセント (maxlocks)

    分離レベルが反復可能読み取り (RR) である場合、オプティマイザーは locklistmaxlocks パラメーターの値を考慮して、行レベルのロックが表レベルのロックにエスカレーションされる可能性があるかどうかを判別します。 オプティマイザーは、 表アクセスでロック・エスカレーションが発生する可能性があると推定した場合、 照会実行時にロック・エスカレーションによるオーバーヘッドが生じないように、 そのアクセス・プランでは表レベル・ロックを選択します。

  • CPU 速度 (cpuspeed)

    オプティマイザーは CPU 速度を使用して、特定の操作を実行するコストを見積もります。 CPU コストの見積もり、 およびさまざまな入出力コストの見積もりは、 照会に対して最適のアクセス・プランを選択するのに役立ちます。

    マシンの CPU 速度は、 選択されるアクセス・プランに重大な影響を与える可能性があります。 この構成パラメーターは、データベースをインストールまたはアップグレードした時点で、 自動的に適切な値に設定されます。 このパラメーターは、 テスト・システムにおいて実稼働環境のモデル化を行っている場合か、 ハードウェア変更の影響を見積もっている場合でない限り、 調整しないでください。 このパラメーターを使用して異なるハードウェア環境のモデル化を行うと、 その環境のために選択される可能性のあるアクセス・プランを検出することができます。 データベース・マネージャーがこの自動構成パラメーターの値を再計算するようにするには、-1 に設定してください。

  • ステートメント・ヒープ・サイズ (stmtheap)

    ステートメント・ヒープのサイズは、 オプティマイザーがさまざまなアクセス・パスを選択する際には影響がありませんが、 複合 SQL または XQuery ステートメントに関して実行される最適化の量には影響します。

    stmtheap パラメーターに十分な値が設定されていないと、ステートメントを処理するために十分なメモリーがないという警告を受け取る可能性があります。 例えば、SQLCODE +437 (SQLSTATE 01602) により、 ステートメントのコンパイルに使った最適化の量が、 要求した量より少ないことを示す場合があります。

  • 通信帯域幅 (comm_bandwidth)

    通信スピードは、 オプティマイザーがアクセス・プランを決めるのに使用されます。 オプティマイザーはこのパラメーターの値を使用して、 パーティション・データベース環境のデータベース・パーティション・サーバー間で一定の操作を実行する際のコストを見積もります。

  • アプリケーション・ヒープ・サイズ (applheapsz)

    大規模なスキーマには、アプリケーション・ヒープ内に十分な空間が必要です。