クエリの並列処理を可能にする

並列処理を使用可能にしなければ、照会は並列処理を利用できません。

始める前に

Db2は、カーソルをWITH HOLDとして宣言し、RR分離またはRS分離を使用してアプリケーションをバインドする場合、CP並列処理を使用することを考慮しません。

プロシージャー

並列処理を使用可能にするには、次のようにします。

  • 静的 SQL の場合、BIND または REBIND に DEGREE(ANY) を指定する。
    このバインド・オプションは、静的 SQL にのみ影響を与え、 動的ステートメントに対する並列処理は使用可能になりません。
  • 動的 SQL の場合、CURRENT DEGREE 特殊レジスター に 'ANY' を設定する。
    • 汎用プログラミングインターフェース情報の開始。以下のSQLステートメントを使用して、特殊レジスターを設定することができます。
      SET CURRENT DEGREE='ANY';
      汎用プログラミングインターフェース情報の終了。
    • また、特殊レジスターデフォルトを1からANYへ、Db2サブシステム全体に対して変更するには、CDSSRDEFサブシステム・パラメーターの値を変更します。
    この特殊レジスターの設定は、動的ステートメントにのみ影響を与えます。 静的 SQL ステートメントには何らの影響もありません。 また RLST で、プラン、パッケージ、許可 ID の並列処理が使用不可になって いない ことを確認してください。
  • 分離機能 CS をバインドする場合は、可能であれば、 CURRENTDATA(NO) オプションも選択します。
    このオプションを使用すると、一般的にパフォーマンスを向上させることができますが、Db2が、未確定カーソルの並列処理を考慮します。 CURRENTDATA(YES)を指定してバインドする場合、Db2は、カーソルが読み取り専用であるかどうかを判断できません。Db2は、並列処理を考慮しません。 カーソルが読み取り専用である場合、カーソルが読み取り専用であることを明示的に指定することをお勧めします。 DECLARE CURSOR ステートメントで、FOR FETCH ONLY 節または FOR READ ONLY 節を使用できます。
  • 仮想バッファー・プールの並列順次しきい値 (VPPSEQT) には、並列処理に必要な 十分なバッファー・プール・スペースを提供できるように設定してください。
    並列処理を使用可能にすると、Db2が経過時間が削減される可能性があると推定する場合、複数の並列タスクを活動化できます。
  • 並列ソートの場合は、 十分な作業ファイルを割り振って、パフォーマンスを維持します。
    Db2は、カーソルWITH HOLDを宣言して、分離RRまたはRSでバインドする場合にも、並列入出力操作のみを考慮します。
  • 複合照会の場合は、データ共用グループのメンバー内で照会を並列で実行します。
  • 並列処理の度合いを制限します。 Db2 が生成する並列タスクの最大数を制限するには、以下の方法があります。
    • ほとんどの並列処理では、PARAMDEGサブシステムパラメータの値を設定します。 システムリソースが限られている場合、PARAMDEGの最適値はオンラインCPU数の1~2倍です。 ただし、並列処理を無効にするためにPARAMDEGの値を変更しないでください。 代わりに、DEGREEバインド・パラメーターまたはCURRENT DEGREE特殊レジスターを使用して、並列処理を使用不可にします。 詳細は、「MAX DEGREE」フィールド(PARAMDEGサブシステムパラメータ )を参照してください。
    • DPSIの並列処理については、PARAMDEG_DPSIパラメータの値を設定します。 詳細は、 DPSI フィールドの最大値(PARAMDEG_DPSI サブシステムパラメータ )を参照してください。