SET CURRENT DEGREE

SET CURRENT DEGREE ステートメントは、値を CURRENT DEGREE 特殊レジスターに割り当てます。

呼び出し

このステートメントは、アプリケーション・プログラムに組み込むことができ、また対話式に呼び出すこともできます。 これは、動的に準備できる実行可能ステートメントです。REXX で指定してはなりません。

権限

このステートメントの権限 ID によって保持される特権には、特殊権限 *JOBCTL が含まれていなければなりません。その他の場合には、System i® ナビゲーターのアプリケーション管理を介して、IBM® i の SQL 管理機能に対して許可を与える必要があります。 機能 ID を QIBM_DB_SQLADM に設定して機能使用法の変更 (CHGFCNUSG) コマンドを 使用することによっても、許可されるユーザーのリストを変更することができます。

ステートメント内のグローバル変数を参照する場合は、ステートメントの権限 ID が保持する特権に、少なくとも次のいずれか 1 つが含まれなければなりません。

  • ステートメント内で識別されるグローバル変数に対して、
    • そのグローバル変数に対する READ 特権
    • グローバル変数が含まれるスキーマに対する USAGE 特権
  • データベース管理者権限

構文

構文図を読む構文図をスキップする
                        .-␠=␠-.                        
>>-SET--CURRENT DEGREE--+-----+--+-string-constant-+-----------><
                                 +-variable--------+   
                                 '-DEFAULT---------'   

説明

CURRENT DEGREE の値は、ストリング定数または変数の値によって置き換えられます。

string-constant
文字ストリング定数を指定します。内容が大文字に変換されることはありません。

string-constant の長さは、先行ブランクおよび末尾ブランクを切り取った後 5 を超えてはなりません。

variable
CURRENT DEGREE の値を含む変数を指定します。

変数は、次の条件に合っていなければなりません。

  • CHAR、VARCHAR、Unicode GRAPHIC、または Unicode VARGRAPHIC 変数でなければなりません。 変数 の内容の実際の長さは、先頭ブランクおよび末尾ブランクを切り取った後 5 を超えてはなりません。
  • NULL 値とすることはできません。
  • 内容は大文字にしてください。すべての文字には大文字小文字の区別があり、 大文字に変換されることはありません。
DEFAULT
現行照会オプション・ファイル (QAQQINI) の PARALLEL_DEGREE パラメーターが指定される場合、CURRENT DEGREE は PARALLEL_DEGREE にリセットされます。 指定されない場合は、CURRENT DEGREE は、QQRYDEGREE システム値によって指定される度合いからリセットされます。

ストリング定数または変数の値は、以下のいずれかでなければなりません。

1
並列処理は許可されません。
2 から 32767
使用する並列処理の度合いを指定します。
ANY
I/O か SMP のいずれの並列処理の場合でも、データベース・マネージャーが任意の数のタスクを選択できることを指定します。

並列処理の使用および使用されるタスク数は、システムで使用可能なプロセッサーの数、ジョブが実行されているプール内の使用可能なアクティブ・メモリーに関するジョブの割り当て分、および操作に予想される経過時間が CPU 処理または I/O リソースによって限定されるかどうかに基づいて決定されます。データベース・マネージャーは、プール内のメモリーのこのジョブが占める割合に基づいて、経過時間を最小化するインプリメンテーションを選択します。

NONE
並列処理は許可されません。
MAX
I/O か SMP のいずれの並列処理の場合でも、データベース・マネージャーは任意の数のタスクを選択できます。MAX は、プール内のすべてのアクティブ・メモリーを使用できることをデータベース・マネージャーが前提とする点を除いて、ANY と類似しています。
IO
データベース・マネージャーが照会に I/O 並列処理の使用を選択した場合、任意の数のタスクを使用できます。SMP は許可されません。

トランザクションに関する考慮事項: SET CURRENT DEGREE ステートメントは、コミット可能な操作ではありません。 ROLLBACK は、CURRENT DEGREE には影響を与えません。

最初の現行の度合い: CURRENT DEGREE の初期値は、CHGQRYA CL コマンド、現行照会オプション・ファイル (QAQQINI) の PARALLEL_DEGREE パラメーター、または QQRYDEGREE システム値の有効な並列処理の度合いと同じです。

並列処理の度合いの優先順位: 並列処理の度合いの制御はさまざまな方法で行えます。 実際に使用される並列処理の度合いは次のように決定されます。

  • SET CURRENT DEGREE ステートメント、または DEGREE キーワードを指定した CHGQRYA CL コマンドが実行された場合、いずれかの最新のものによって指定される並列処理の度合いの値は CURRENT DEGREE になります。
  • SET CURRENT DEGREE ステートメント、および DEGREE キーワードを指定した CHGQRYA CL コマンドのどちらも実行されなかった場合、
    • PARALLEL_DEGREE パラメーターを指定した現行照会オプション・ファイル (QAQQINI) が指定された場合、QAQQINI ファイルによって指定される並列処理の度合いの値は CURRENT DEGREE になります。
    • 指定されない場合は、QQRYDEGREE システム値によって指定される並列処理の度合いの値は CURRENT DEGREE になります。

詳細については、「データベース・パフォーマンスおよび Query の最適化」トピック集を参照してください。

現行の度合いの有効範囲: CURRENT DEGREE の有効範囲はジョブです。

並列処理に関する制限: Db2® SMP 機能がインストールされていない場合、警告が返され、並列処理は使用されません。

SQL ステートメントの中にも、並列処理を使用できないものがあります。

例 1: 次のステートメントは、並列処理を禁止するよう CURRENT DEGREE を設定します。

  SET CURRENT DEGREE = '1' 

例 2: 次のステートメントは、並列処理を許可するよう CURRENT DEGREE を設定します。

  SET CURRENT DEGREE = 'ANY'