CREATE WORKLOAD ステートメント
CREATE WORKLOAD ステートメントは、ワークロードを定義します。
呼び出し
このステートメントは、アプリケーション・プログラムに組み込むか、あるいは対話式に発行することができます。 これは、DYNAMICRULES の実行動作がパッケージに効力を持つ場合にのみ、動的に準備できる実行可能ステートメントです (SQLSTATE 42509)。
許可
このステートメントの許可 ID が持つ特権には、WLMADM または DBADM 権限が含まれている 必要があります。
構文
- 1 Each connection attribute clause can only be specified once.
- 2 The DETAILS keyword is the minimum to be specified, followed by the option separated by a comma.
説明
- ワークロード名
- ワークロードの名前を示します。 これは、1 部構成の名前です。 これは、SQL ID です (通常 ID または区切り ID)。 workload-name は、現行のサーバー上の既存のワークロードを識別するものであってはなりません (SQLSTATE 42710)。 名前を文字 SYS で始めることはできません (SQLSTATE 42939)。 接続属性
- 接続の確立時にこのワークロードに接続属性を関連付ける場合、接続属性は、このワークロード定義で指定されているすべての属性と一致している必要があります。 ワークロード定義の接続属性に値のリストが指定されている場合、対応する接続属性は、リストに含まれている値のうち、少なくとも 1 つと一致している必要があります。 ワークロード定義で接続属性が指定されない場合、その接続に関して対応する接続属性は任意の値で問題ありません。注: ADDRESS を除き、すべての接続属性には大/小文字の区別があります。
- ADDRESS ('アドレス値', ...)
- ADDRESS 接続属性に、IPv4 アドレス、IPv6 アドレス、またはセキュア・ドメイン・ネームを 1 つ以上指定します。 1 つのアドレス値をリストの中で複数回指定することはできません (SQLSTATE 42713)。 サポートされるプロトコルは TCP/IP のみです。 各アドレス値は、IPv4 アドレス、IPv6 アドレス、またはセキュア・ドメイン・ネームでなければなりません。
IPv4 アドレスの先頭にスペースが含まれていてはなりません。 このアドレスは小数点付き 10 進数アドレスとして表されます。 例えば IPv4 アドレスは、192.0.2.1 のようになります。 値 localhost またはそれに相当する表現 127.0.0.1 は、一致という結果になりません。代わりにホストの実 IPv4 アドレスを指定する必要があります。 IPv6 アドレスの先頭にスペースが含まれていてはなりません。 このアドレスはコロン区切りの 16 進アドレスとして表されます。 IPv6 アドレスの例としては、 2001:0DB8:0000:0000:0008:0800:200C:417A. IPv4-mapped IPv6 アドレス (例えば、::ffff:192.0.2.1) が一致しない場合があります。 同じように、localhost またはその IPv6 短表現 ::1 も一致という結果になりません。 ドメイン・ネームはドメイン・ネーム・サーバーで IP アドレスに変換されます。 結果として生成される IPv4 または IPv6 アドレスはこのサーバーで決定されます。 例えばドメイン・ネームは、corona.example.com のようになります。 ドメイン・ネームが IP アドレスに変換されたとき、この変換の結果が 1 つ以上の IP アドレスのセットになる場合があります。 その場合、接続開始時の IP アドレスがドメイン名変換後の IP アドレスのいずれかと一致すると、着信接続はワークロード・オブジェクトの ADDRESS 属性と一致していると見なされます。
ワークロード・オブジェクトを作成するとき、特に動的ホスト構成プロトコル (DHCP) 環境 (デバイスが取得する IP アドレスが、ネットワークに接続するたびに異なる環境) では、静的 IP アドレスの代わりにドメイン・ネーム値を ADDRESS 属性に提供することをお勧めします。
- APPLNAME ('アプリケーション名', ...)
- APPLNAME 接続属性に 1 つ以上のアプリケーションを指定します。 1 つのアプリケーション名をリストの中で複数回指定することはできません (SQLSTATE 42713)。 application-name に単一のアスタリスク文字 (*) を含めない場合、システム・モニター出力や LIST APPLICATIONS コマンドの出力の
「アプリケーション名」
フィールドに示される値を指定します。 application-name に単一のアスタリスク文字 (*) が含まれている場合は、この値が一連のアプリケーション名を表す式として用いられています。ここでは、アスタリスク (*) はゼロ以上の文字ストリングを表します。 式でアプリケーション名に アスタリスク文字を含める必要がある場合、アスタリスク文字を 2 つ続けて使用 (**) します。 - SYSTEM_USER ('', ...)
- SYSTEM USER 接続属性に 1 つ以上の許可 ID を指定します。 1 つの許可 ID をリストの中で複数回指定することはできません (SQLSTATE 42713)。
- SESSION_USER ('', ...)
- SESSION USER 接続属性に 1 つ以上の許可 ID を指定します。 1 つの許可 ID をリストの中で複数回指定することはできません (SQLSTATE 42713)。
- SESSION_USER GROUP ('', ...)
- SESSION_USER GROUP 接続属性に 1 つ以上の許可 ID を指定します。 1 つの許可 ID をリストの中で複数回指定することはできません (SQLSTATE 42713)。
- SESSION_USER ROLE ('', ...)
- SESSION_USER ROLE 接続属性に 1 つ以上の許可 ID を指定します。 このコンテキストでの SESSION 許可 ID のロールは、どのように取得されたロールであるかに関係なく、SESSION 許可 ID に使用可能なすべてのロールを参照します。 1 つの許可 ID をリストの中で複数回指定することはできません (SQLSTATE 42713)。
- CURRENT CLIENT_USERID ('user-id', ...)
- CURRENT CLIENT_USERID 接続属性に 1 つ以上のクライアント・ユーザー ID を指定します。 1 つのクライアント・ユーザー ID をリストの中で複数回指定することはできません (SQLSTATE 42713)。 user-id に単一のアスタリスク文字 (*) が含まれている場合は、この値が一連のユーザー ID を表す式として用いられています。ここでは、アスタリスク (*) はゼロ以上の文字ストリングを表します。 式でユーザー ID にアスタリスク文字を含める必要がある場合は、アスタリスク文字を 2 つ続けて使用 (**) します。
- CURRENT CLIENT_APPLNAME ('client-application-name', ...)
- CURRENT CLIENT_APPLNAME 接続属性に 1 つ以上のアプリケーションを指定します。 1 つのアプリケーション名をリストの中で複数回指定することはできません (SQLSTATE 42713)。 client-application-name に単一のアスタリスク文字 (*) を含めない場合、システム・モニター出力の
「TP モニター・クライアント・アプリケーション名」
フィールドに示される値を指定します。 client-application-name に単一のアスタリスク文字 (*) が含まれている場合は、この値が一連のアプリケーション名を表す式として用いられています。ここでは、アスタリスク (*) はゼロ以上の文字ストリングを表します。 式でアプリケーション名に アスタリスク文字を含める必要がある場合、アスタリスク文字を 2 つ続けて使用 (**) します。 - CURRENT CLIENT_WRKSTNNAME ('ワークステーション名', ...)
- CURRENT CLIENT_WRKSTNNAME 接続属性に 1 つ以上のクライアント・ワークステーション名を指定します。 1 つのクライアント・ワークステーション名をリストの中で複数回指定することはできません (SQLSTATE 42713)。 workstation-name に単一のアスタリスク文字 (*) が含まれている場合は、この値が一連のワークステーション名を表す式として用いられています。ここでは、アスタリスク (*) はゼロ以上の文字ストリングを表します。 式でワークステーション名にアスタリスク文字を含める必要がある場合は、アスタリスク文字を 2 つ続けて使用 (**) します。
- CURRENT CLIENT_ACCTNG ('accounting-string', ...)
- CURRENT CLIENT_ACCTNG 接続属性に 1 つ以上のクライアント・アカウンティング・ストリングを指定します。 1 つのクライアント・アカウンティング・ストリングをリストの中で複数回指定することはできません (SQLSTATE 42713)。 accounting-string に単一のアスタリスク文字 (*) が含まれている場合は、この値が一連のアカウンティング・ストリングを表す式として用いられています。ここでは、アスタリスク (*) はゼロ以上の文字ストリングを表します。 式でアカウンティング・ストリングにアスタリスク文字を含める必要がある場合は、アスタリスク文字を 2 つ続けて使用 (**) します。
ワークロード属性 - ワークロードの属性を指定します。
- ENABLE または DISABLE
- ワークロードを選択する際にこのワークロードを考慮するかどうかを指定します。 デフォルトは ENABLE です。
- ENABLE
- このワークロードを有効にし、ワークロードを選択する際にこのワークロードを考慮することを指定します。
- DISABLE
- このワークロードを無効にし、ワークロードを選択する際にこのワークロードを考慮しないことを指定します。
- ALLOW DB ACCESS または DISALLOW DB ACCESS
- このワークロードに関連付けられているワークロード・オカレンスにデータベースへのアクセスを許可するかどうかを指定します。 デフォルトは ALLOW DB ACCESS です。
- ALLOW DB ACCESS
- このワークロードに関連付けられているワークロード・オカレンスにデータベースへのアクセスを許可することを指定します。
- DISALLOW DB ACCESS
- このワークロードに関連付けられているワークロード・オカレンスにデータベースへのアクセスを許可しないことを指定します。 このワークロードに関連付けられている次の作業単位は拒否されます (SQLSTATE 5U020)。 既に実行中のワークロード・オカレンスは完了まで実行できます。
- MAXIMUM DEGREE
- このワークロードにおける、最大のランタイム並列処理の度合いを指定します。 デフォルトは DEFAULT です。
- DEFAULT
DB2_WORKLOAD=ANALYTICS
の場合、この設定により、このワークロードのパーティション内並列処理が有効になります。 それ以外の場合、この設定は、このワークロードがパーティション内並列処理の設定をデータベース・マネージャー構成パラメーター intra_parallel から継承することを指定します。 intra_parallel が NO に設定されている場合、このワークロードが実行されるときのパーティション内並列処理は無効になります。 intra_parallel が YES に設定されている場合、このワークロードが実行されるときのパーティション内並列処理は有効になります。 このワークロードでは、割り当てられたアプリケーションのためにランタイムの最大の度合いが指定されません。 したがって、実行時の実際の度合いは、max_querydegree 構成パラメーターの値、照会サービス・クラスに対して設定された MAXIMUM DEGREE、SET RUNTIME DEGREE コマンドで設定された値、および SQL ステートメントのコンパイルの度合いの中で、最も低い値になります。 degree- このワークロードにおける、最大の並列処理の度合いを指定します。 有効な値は 1 から 32,767 までです。 値が 1 の場合、関連する要求が実行されるときのパーティション内並列処理は無効になります。 値が 2 から 32,767 までの場合、関連する要求が実行されるときのパーティション内並列処理は有効になります。 実行時の実際の度合いは、この degree、照会サービス・クラスに対して設定された MAXIMUM DEGREE、max_querydegree 構成パラメーターの値、SET RUNTIME DEGREE コマンドで設定された値、および SQL ステートメントのコンパイルの度合いの中で、最も低い値になります。注: 1 より大きい MAXIMUM DEGREE 値は、共有ソート・ヒープが使用可能でない限り、パーティション内並列処理を使用可能にしません。
- SERVICE CLASS サービス・クラス名
- このワークロードに関連付けられている要求をサービス・クラス service-class-name で実行することを指定します。 service-class-name には、現行のサーバー上の既存のサービス・クラスを指定する必要があります (SQLSTATE 42704)。 service-class-name を 'SYSDEFAULTSUBCLASS'、'SYSDEFAULTSYSTEMCLASS'、または 'SYSDEFAULTMAINTENANCECLASS' にすることはできません (SQLSTATE 5U032)。 デフォルトは SYSDEFAULTUSERCLASS です。
- UNDER サービス・スーパークラス名
- この節は、サービス・サブクラスを指定するときに使用されます。 service-superclass-name は、service-class-name のサービス・スーパークラスを識別します。 service-superclass-name には、現行のサーバー上の既存のサービス・スーパークラスを指定する必要があります (SQLSTATE 42704)。 service-superclass-name を 'SYSDEFAULTSYSTEMCLASS' または 'SYSDEFAULTMAINTENANCECLASS' にすることはできません (SQLSTATE 5U032)。
- POSITION
- ワークロードの番号付きリストの中でこのワークロードをどの位置に配置するかを指定します。 実行時には、このリストの順番で、必須の接続属性と一致する最初のワークロードが検索されます。 デフォルトは LAST です。
- LAST
- ワークロードが、デフォルトのワークロード SYSDEFAULTUSERWORKLOAD および SYSDEFAULTADMWORKLOAD の前の、リストで最後のワークロードであることを指定します。
- BEFORE relative-workload-name
- リストの中でワークロードをワークロード relative-workload-name の前に配置することを指定します。 relative-workload-name には、現行のサーバー上の既存のワークロードを指定する必要があります (SQLSTATE 42704)。 relative-workload-name が 'SYSDEFAULTUSERWORKLOAD' または 'SYSDEFAULTADMWORKLOAD' の場合は、BEFORE オプションを指定できません (SQLSTATE 42832)。
- 後 relative-workload-name
- リストの中でワークロードをワークロード relative-workload-name の後に配置することを指定します。 relative-workload-name には、現行のサーバー上の既存のワークロードを指定する必要があります (SQLSTATE 42704)。 relative-workload-name が 'SYSDEFAULTUSERWORKLOAD' または 'SYSDEFAULTADMWORKLOAD' の場合は、AFTER オプションを指定できません (SQLSTATE 42832)。
- AT 位置
- リストの中でのワークロードの絶対位置を指定します。 この値には、任意の正整数 (ゼロ以外) を指定できます (SQLSTATE 42615)。 position が既存のワークロードの数に 1 を足した値より大きい場合、ワークロードはリストの最後、SYSDEFAULTUSERWORKLOAD および SYSDEFAULTADMWORKLOAD のすぐ前に置かれます。
- PRIORITY
- 同じサービス・スーパークラス内の他のワークロードの作業の優先順位と比較した、このワークロードの作業の優先順位を指定します。 サービス・スーパークラス内では、優先順位に基づいて、重要度の低いジョブより重要度の高いジョブが優先順位付けされます。 スーパークラス間の作業スケジューリングでは、スケジューリングの優先順位は使用されず、代わりにリソース・ベースのスケジューリングのみが使用されます。
- COLLECT ACTIVITY METRICS
- ワークロードの発生によりサブミットされるアクティビティーで、モニター・メトリックを収集するように指定します。 デフォルトは COLLECT ACTIVITY METRICS NONE です。注: 有効なアクティビティー・メトリックの収集設定は、アクティビティーをサブミットするワークロードの COLLECT ACTIVITY METRICS 節で指定された属性と、 mon_act_metrics データベース構成パラメーターの組み合わせです。 ワークロード属性か構成パラメーターのいずれかに NONE 以外の値がある場合は、アクティビティーのメトリックが収集されます。
- NONE
- ワークロードの発生によりサブミットされる任意のアクティビティーで、メトリックを収集しないように指定します。
- BASE
- ワークロードの発生によりサブミットされる任意のアクティビティーで、基本メトリックを収集するように指定します。
- EXTENDED
- ワークロードの発生によりサブミットされる任意のアクティビティーで、基本メトリックを収集するように指定します。 さらに、以下のモニター・エレメントの値が、追加細分度により決定されることを指定します。
- total_section_time
- total_section_proc_time
- total_routine_user_code_time
- total_routine_user_code_proc_time
- total_routine_time
- COLLECT ACTIVITY DATA
- このワークロードに関連付けられている各アクティビティーに関するデータを、アクティビティーが完了したときに、任意のアクティブなアクティビティー・イベント・モニターに送信するように指定します。 デフォルトは COLLECT ACTIVITY DATA NONE です。
- 収集節 (collect-on-clause)
- どこでアクティビティー・データを収集するかを指定します。 デフォルトは ON COORDINATOR MEMBER です。
- ON COORDINATOR MEMBER
- アクティビティーのコーディネーター・ メンバー でのみアクティビティー・データを収集することを指定します。
- ON ALL MEMBERS
- アクティビティーが処理されるすべての メンバー でアクティビティー・データを収集することを指定します。 リモートの メンバーでは、アクティビティーがこれらの メンバーに到着および到着すると、アクティビティーのレコードが複数回キャプチャーされることがあります。 AND VALUES 節が指定されている場合、コーディネーターの メンバー についてのみアクティビティー入力値が収集されます。
- NONE
- このワークロードに関連付けられている各アクティビティーについてはアクティビティー・データを収集しないように指定します。 collect-details-clause
- どのタイプのアクティビティー・データを収集するかを指定します。 デフォルトは WITHOUT DETAILS です。
- WITHOUT DETAILS
- このワークロードに関連付けられている各アクティビティーに関するデータを、アクティビティーの実行が完了したときに、任意のアクティブなアクティビティー・イベント・モニターに送信するように指定します。 ステートメント、コンパイル環境、 およびセクション環境のデータに関する詳細は送信されません。
- WITH
- DETAILS
- 任意のアクティブなアクティビティーにステートメントおよびコンパイル環境のデータが含まれる場合、 それを該当するアクティビティーのイベント・モニターへ送信すること を指定します。 セクションの環境データは送信されません。
- SECTION
- ステートメント、コンパイル環境、セクション環境データ、セクション actuals を、それらが含まれるアクティビティー用のアクティブなアクティビティー・イベント・モニターに送信することを指定します。 DETAILS は SECTION が指定されている場合、
指定する必要があります。 セクション actuals は、アクティビティー・データが収集されるすべての メンバー で収集されます。
- INCLUDE ACTUALS BASE
- セクション actuals を、アクティビティー・データが収集されるすべてのパーティションでも収集することを示します。 セクション actuals を収集するには、INCLUDE ACTUALS 節を指定するか、section_actuals データベース構成パラメーターを設定する必要があります。
セクション actuals を収集するための有効な設定は、INCLUDE ACTUALS 節、section_actuals データベース構成パラメーター、および WLM_SET_CONN_ENV ルーチンで指定される <collectsectionactuals> 設定の組み合わせです。 例えば、INCLUDE ACTUALS BASE が指定されているが、section_actuals データベース構成パラメーター値が NONE であり、<collectsectionactuals> が NONE に設定されている場合、セクション actuals の収集の有効な設定は BASE になります。
BASE は、アクティビティーの実行時に、以下を使用可能化および収集する必要があることを指定します。- 基本演算子のカーディナリティー・カウント
- 参照される各オブジェクトの統計 (DML ステートメントのみ)
- AND VALUES
- 任意のアクティブなアクティビティーに入力データ値が含まれている場合、 それを該当するアクティビティーのイベント・モニターに送信することを指定します。 このデータには、REOPT ALWAYS BIND オプションを使用してコンパイルされた SQL ステートメントは含まれません。
- どこでアクティビティー・データを収集するかを指定します。 デフォルトは ON COORDINATOR MEMBER です。
- COLLECT AGGREGATE ACTIVITY DATA
- このワークロードに関連したアクティビティーに関する集約アクティビティー・データを、統計イベント・モニターがアクティブな場合に、統計イベント・モニターに送信することを指定します。 この情報は、wlm_collect_int データベース構成パラメーターで指定された間隔で定期的に収集されます。 COLLECT AGGREGATE ACTIVITY DATA を指定しない場合のデフォルトは、COLLECT AGGREGATE ACTIVITY DATA NONE です。 COLLECT AGGREGATE ACTIVITY DATA を指定した場合のデフォルトは、COLLECT AGGREGATE ACTIVITY DATA BASE です。
- BASE
- このワークロードに関連したアクティビティーに関する基本的な集約アクティビティー・データを、統計イベント・モニター (アクティブな場合) に送信することを指定します。 基礎集約アクティビティー・データには以下のものが含まれます。
- アクティビティー CPU 時間の最高水準点
- アクティビティー実行時間のヒストグラム
- アクティビティー存続時間のヒストグラム
- アクティビティー・キュー時間のヒストグラム
- アクティビティー行読み取りの最高水準点
- アクティビティー・コストの最高水準点の見積もり
- 戻り行数の最高水準点
- TEMPORARY 表スペース使用量の最高水準点。 この最高水準点が関係するのは、SQLTEMPSPACE しきい値が適用されているアクティビティーのみです。
- EXTENDED
- このワークロードに関連したアクティビティーに関するすべての集約アクティビティー・データを、統計イベント・モニター (アクティブなものがある場合) に送信することを指定します。 これには、すべての基礎集約アクティビティー・データに加えて、以下のものが含まれます。
- アクティビティー・データ操作言語 (DML) の見積コスト・ヒストグラム
- アクティビティー DML の到着間隔時間のヒストグラム
- NONE
- このワークロードについて集約アクティビティー・データを収集しないように指定します。
- COLLECT AGGREGATE UNIT OF WORK DATA
- このワークロードに関連付けられている作業単位に関する集約作業単位データを、統計イベント・モニター (アクティブになっている場合) に送信するように指定します。 この情報は、wlm_collect_int データベース構成パラメーターで指定された間隔で定期的に収集されます。 COLLECT AGGREGATE UNIT OF WORK DATA が指定されていない場合、デフォルトは COLLECT AGGREGATE UNIT OF WORK DATA NONE になります。
- BASE
- このワークロードに関連付けられている作業単位に関する基礎集約作業単位データを、統計イベント・モニター (アクティブになっている場合) に送信するように指定します。 基礎集約作業単位には以下のものが含まれます。
- 作業単位存続期間ヒストグラム
- NONE
- このワークロードについて集約作業単位データを収集しないように指定します。
- COLLECT LOCK TIMEOUT DATA
- このワークロード内で生じるロック・タイムアウト・イベントのデータを、ロック・イベントが生じたときに、
該当するイベント・モニターに送信するように指定します。 ロック・タイムアウト・データは、すべての メンバーで収集されます。 デフォルトは COLLECT LOCK TIMEOUT DATA WITHOUT HISTORY です。 この設定は、mon_locktimeout データベース構成パラメーター設定と連動して機能します。 最も詳細な出力を生成する設定が優先されます。
- WITHOUT HISTORY
- このワークロード内で生じるロック・イベントのデータを、ロック・イベントが生じたときに、任意のアクティブなロック・イベント・モニターに送信することを指定します。 過去のアクティビティー履歴および入力値はイベント・モニターに送信されません。
- NONE
- ワークロードのロック・タイムアウト・データをどの メンバーでも収集しないことを指定します。
- WITH HISTORY
- このロック・イベントのタイプのすべてに対して、現行の作業単位で、過去のアクティビティー履歴を集めるよう指定します。 アクティビティー履歴のバッファーは、最大サイズの制限値が使用された後、ラップされます。
1 つのアプリケーションが保持する過去のアクティビティーの数のデフォルトの限度は 250 です。 過去のアクティビティー数が制限を越える場合には、新しい方のアクティビティーだけが報告されます。 このデフォルト値は、 レジストリー変数 DB2_MAX_INACT_STMTS を使用して別の値を指定することにより、オーバーライド できます。 過去のアクティビティー情報に使用されるシステム・モニター・ヒープ量を増加または減少させるために、制限値に別の値を選択することができます。
- AND VALUES
- 任意のアクティブなアクティビティーに入力データ値が含まれている場合、それを該当するロック・イベント・モニターに送信することを指定します。 これらのデータ値には LOB データ、LONG VARCHAR データ、LONG VARGRAPHIC データ、構造化タイプ・データ、または XML データは含まれません。 REOPT ALWAYS BIND オプションを使用してコンパイルされた SQL ステートメントについては、REOPT コンパイルまたはステートメントの実行データ値はイベント通知に提供されません。
- COLLECT DEADLOCK DATA
- このワークロード内で生じるロック・イベントのデータを、デッドロック・イベントが生じたときに、任意のアクティブなロック・イベント・モニターに送信することを指定します。 デッドロック・データは、すべての メンバーについて収集されます。 デフォルトは COLLECT DEADLOCK DATA WITHOUT HISTORY です。 この設定は、mon_deadlock データベース構成パラメーターが NONE に設定されていない場合にのみ適用されます。
- WITHOUT HISTORY
- このワークロード内で生じるロック・イベントのデータを、ロック・イベントが生じたときに、任意のアクティブなロック・イベント・モニターに送信することを指定します。 過去のアクティビティー履歴および入力値はイベント・モニターに送信されません。
- WITH HISTORY
- このロック・イベントのタイプのすべてに対して、現行の作業単位で、過去のアクティビティー履歴を集めるよう指定します。 アクティビティー履歴のバッファーは、最大サイズの制限値が使用された後、ラップされます。
1 つのアプリケーションが保持する過去のアクティビティーの数のデフォルトの限度は 250 です。 過去のアクティビティー数が制限を越える場合には、新しい方のアクティビティーだけが報告されます。 このデフォルト値は、 レジストリー変数 DB2_MAX_INACT_STMTS を使用して別の値を指定することにより、オーバーライド できます。 過去のアクティビティー情報に使用されるシステム・モニター・ヒープ量を増加または減少させるために、制限値に別の値を選択することができます。
- AND VALUES
- 任意のアクティブなアクティビティーに入力データ値が含まれている場合、それを該当するロック・イベント・モニターに送信することを指定します。 これらのデータ値には LOB データ、LONG VARCHAR データ、LONG VARGRAPHIC データ、構造化タイプ・データ、または XML データは含まれません。 REOPT ALWAYS BIND オプションを使用してコンパイルされた SQL ステートメントについては、REOPT コンパイルまたはステートメントの実行データ値はイベント通知に提供されません。
- COLLECT LOCK WAIT DATA
- このワークロード内で生じるロック待機イベントのデータを、wait-time 内でロックが達成されなかった場合に、任意のアクティブなロック・イベント・モニターに送信するように指定します。 デフォルトは COLLECT LOCK WAIT DATA NONE で、wait-time のデフォルト値は 0 マイクロ秒です。 この設定は、mon_lockwait および mon_lw_thresh データベース構成パラメーターと連動して機能します。 最も詳細な出力を生成する設定が優先されます。
- NONE
- ワークロードのロック待機イベントがどの メンバーでも収集されないことを指定します。
- FOR LOCKS WAITING MORE THAN wait-time (SECONDS | MICROSECONDS) | 1 秒
- このワークロード内で生じるロック待機イベントのデータを、wait-time 内でロックが達成されなかった場合に、任意のアクティブなロック・イベント・モニターに送信するように指定します。
この値は、負以外の任意の整数とすることができます。 有効な期間キーワードを使用して、wait-time に適切な時間の単位を指定してください。 wait-time パラメーターに有効な最小値は 1000 マイクロ秒です。
- WITH HISTORY
- このロック・イベントのタイプのすべてに対して、現行の作業単位で、過去のアクティビティー履歴を集めるよう指定します。 アクティビティー履歴のバッファーは、最大サイズの制限値が使用された後、ラップされます。
1 つのアプリケーションが保持する過去のアクティビティーの数のデフォルトの限度は 250 です。 過去のアクティビティー数が制限を越える場合には、新しい方のアクティビティーだけが報告されます。 このデフォルト値は、 レジストリー変数 DB2_MAX_INACT_STMTS を使用して別の値を指定することにより、オーバーライド できます。 過去のアクティビティー情報に使用されるシステム・モニター・ヒープ量を増加または減少させるために、制限値に別の値を選択することができます。
- AND VALUES
- 任意のアクティブなアクティビティーに入力データ値が含まれている場合、それを該当するロック・イベント・モニターに送信することを指定します。 これらのデータ値には LOB データ、LONG VARCHAR データ、LONG VARGRAPHIC データ、構造化タイプ・データ、または XML データは含まれません。 REOPT ALWAYS BIND オプションを使用してコンパイルされた SQL ステートメントについては、REOPT コンパイルまたはステートメントの実行データ値はイベント通知に提供されません。
- COLLECT UNIT OF WORK DATA
- このワークロードに関連付けられている各トランザクションに関するデータを、作業単位が終了したときに、作業単位イベント・モニター (アクティブになっている場合) に送信するように指定します。 COLLECT UNIT
OF WORK DATA が指定されていない場合、デフォルトは COLLECT UNIT OF WORK DATA NONE です。 COLLECT UNIT OF WORK DATA が指定されている場合、デフォルトは COLLECT
UNIT OF WORK DATA BASE になります。 mon_uow_data データベース構成パラメーターが BASE に設定されている場合、COLLECT UNIT OF WORK DATA パラメーターよりも優先されます。 mon_uow_data の値 NONE は、個々のワークロードの COLLECT UNIT OF WORK DATA パラメーターが使用されることを示します。
- NONE
- このワークロードに関連付けられているトランザクションの作業単位データを作業単位イベント・モニターに送信しないように指定します。 デフォルトは、COLLECT UNIT OF WORK DATA NONE です。
- BASE
- このワークロードに関連付けられているトランザクションの基本レベルのデータが、作業単位イベント・モニターに送信されるように指定します。
作業単位イベントで報告される情報の一部は、システム・レベルの要求メトリックです。 これらのメトリックのコレクションは、作業単位データのコレクションとは別に制御されます。 要求メトリックは、スーパークラスの COLLECT REQUEST METRICS 節、または mon_req_metrics データベース構成パラメーターを使用して、制御されます。 このワークロードが関連付けられているサービス・スーパークラス、またはこのワークロードが関連付けられているサービス・サブクラスのサービス・スーパークラスでは、要求メトリックが作業単位イベント内に存在するためには、その要求メトリックのコレクションを有効にしておく必要があります。 要求メトリック・コレクションが有効になっていないと、要求メトリックの値はゼロになります。
- INCLUDE PACKAGE LIST
- このワークロードに関連付けられたトランザクションの基本レベルのデータとパッケージ・リストを、作業単位イベント・モニターに送信することを指定します。
収集されるパッケージ・リストのサイズは、mon_pkglist_sz データベース構成パラメーターの値によって決まります。 この値が 0 の場合は、PACKAGE LIST オプションを指定してもパッケージ・リストは収集されません。
パーティション・データベース環境では、コーディネーター・メンバーでのみパッケージ・リストを使用できます。 リモート・メンバーでは BASE レベルが収集されます。
作業単位イベントで報告される情報の一部は、システム・レベルの要求メトリックです。 これらのメトリックのコレクションは、作業単位データのコレクションとは別に制御されます。 要求メトリックは、スーパークラスの COLLECT REQUEST METRICS 節、または mon_req_metrics データベース構成パラメーターを使用して、制御されます。 このワークロードが関連付けられているサービス・スーパークラス、またはこのワークロードが関連付けられているサービス・サブクラスのサービス・スーパークラスでは、要求メトリックが作業単位イベント内に存在するためには、その要求メトリックのコレクションを有効にしておく必要があります。 要求メトリック・コレクションが有効になっていないと、要求メトリックの値はゼロになります。
- INCLUDE EXECUTABLE LIST
- 基本レベルのデータと共に作業単位の実行可能 ID リストを収集して作業単位イベント・モニターに送信するように指定します。
- histogram-template-clause
- このワークロードで実行中のアクティビティーの集約アクティビティー・データを収集するときに使用するヒストグラム・テンプレートを指定します。
- アクティビティー存続時間ヒストグラム・テンプレート template-name
- このワークロードで特定の間隔で実行中のデータベース・アクティビティーの所要時間 (ミリ秒単位) に関する統計データを収集するために使用されるヒストグラムを記述するテンプレートを指定します。 この時間には、キューに入っていた時間と実行時間の両方が含まれます。 デフォルトは SYSDEFAULTHISTOGRAM です。 この情報は、COLLECT AGGREGATE ACTIVITY DATA 節と、その BASE または EXTENDED のどちらかのオプションが指定されている場合にのみ収集されます。
- アクティビティー・キュー時間ヒストグラム・テンプレート template-name
- このワークロードで実行中のデータベース・アクティビティーが特定の間隔でキューに入れられている時間 (ミリ秒単位) に関する統計データを収集するために使用されるヒストグラムを記述するテンプレートを指定します。 デフォルトは SYSDEFAULTHISTOGRAM です。 この情報は、COLLECT AGGREGATE ACTIVITY DATA 節と、その BASE または EXTENDED のどちらかのオプションが指定されている場合にのみ収集されます。
- ACTIVITY EXECUTETIME HISTOGRAM TEMPLATE テンプレート名
- このワークロードで実行中のデータベース・アクティビティーが特定の間隔で実行されている時間 (ミリ秒単位) に関する統計データを収集するために使用されるヒストグラムを記述するテンプレートを指定します。 この時間には、アクティビティーがキューに入っていた時間は含まれません。 アクティビティー実行時間は、コーディネーター・ メンバー でのみ、このヒストグラムで収集されます。 アイドル時間はこの時間に含まれません。 アイドル時間とは、要求が実行されてから同じアクティビティーに属する別の要求が実行されるまでの間、何も作業が実行されていない時間のことです。 アイドル時間の一例として、カーソルのオープンが終了してからカーソルからのフェッチが開始するまでの間の時間があります。 デフォルトは SYSDEFAULTHISTOGRAM です。 この情報は、COLLECT AGGREGATE ACTIVITY DATA 節と、その BASE または EXTENDED のどちらかのオプションが指定されている場合にのみ収集されます。 ネスト・レベル 0 のアクティビティーのみがヒストグラムに含める対象となります。
- ACTIVITY ESTIMATEDCOST HISTOGRAM TEMPLATE テンプレート名
- このワークロードで実行中の DML アクティビティーの見積コスト (timeron 単位) に関する統計データを収集するために使用されるヒストグラムを記述するテンプレートを指定します。 デフォルトは SYSDEFAULTHISTOGRAM です。 この情報は、COLLECT AGGREGATE ACTIVITY DATA 節とその EXTENDED オプションが指定されている場合にのみ収集されます。 ネスト・レベル 0 のアクティビティーのみがヒストグラムに含める対象となります。
- ACTIVITY INTERARRIVALTIME HISTOGRAM TEMPLATE テンプレート名
- このワークロード内の 1 つの DML アクティビティーの到着から、このワークロード内の次の DML アクティビティーの到着までの時間 (ミリ秒単位) に関する統計データを収集するために使用されるヒストグラムを記述するテンプレートを指定します。 デフォルトは SYSDEFAULTHISTOGRAM です。 この情報は、COLLECT AGGREGATE ACTIVITY DATA 節とその EXTENDED オプションが指定されている場合にのみ収集されます。
- UOW 存続時間ヒストグラム・テンプレート template-name
- 特定のインターバルの中で、このワークロードで実行されている作業単位の所要時間 (ミリ秒単位) に関する統計データを収集するために使用されるヒストグラムを記述するテンプレートを指定します。 デフォルトは SYSDEFAULTHISTOGRAM です。 この情報は、COLLECT AGGREGATE UNIT OF WORK DATA 節とその BASE オプションが指定されている場合にのみ収集されます。
ルール
- ワークロード管理 (WLM) 排他 SQL ステートメントの後は COMMIT または ROLLBACK ステートメントでなければなりません (SQLSTATE 5U021)。 WLM 排他 SQL ステートメントは次のとおりです。
- CREATE HISTOGRAM TEMPLATE、ALTER HISTOGRAM TEMPLATE、または DROP (HISTOGRAM TEMPLATE)
- CREATE SERVICE CLASS、ALTER SERVICE CLASS、または DROP (SERVICE CLASS)
- CREATE THRESHOLD、ALTER THRESHOLD、または DROP (THRESHOLD)
- CREATE WORK ACTION SET、ALTER WORK ACTION SET、または DROP (WORK ACTION SET)
- CREATE WORK CLASS SET、ALTER WORK CLASS SET、または DROP (WORK CLASS SET)
- CREATE WORKLOAD、ALTER WORKLOAD、または DROP (WORKLOAD)
- GRANT (ワークロード特権) または REVOKE (ワークロード特権)
- WLM 排他 SQL ステートメントをグローバル・トランザクション (例えば XA トランザクション) 内で発行することはできません (SQLSTATE 51041)。
注
- 変更はシステム・カタログに書き込まれますが、コミットされるまでは有効になりません。 これは、ステートメントを発行する接続の場合でも当てはまります。
- 全パーティションを通じて、同時に実行できる非コミットの WLM 排他 SQL ステートメントは 1 つのみです。 非コミットの WLM 排他 SQL ステートメントが実行されている場合、後続の WLM 排他 SQL ステートメントは、現行の WLM 排他 SQL ステートメントがコミットまたはロールバックされるまで待機します。
- データベース接続が確立されると、データベース・マネージャーは、POSITION 節で指定された接続属性に基づいて (指定された順番で) 一致するワークロードを検索します。 一致するワークロードが見つかると、データベース・マネージャーは、現行のセッション・ユーザーにそのワークロードに対する USAGE 特権があるかどうかを確認します。 セッション・ユーザーにそのワークロードに対する USAGE 特権がない場合、データベース・マネージャーは次の一致するワークロードを検索します。 セッション・ユーザーにこのワークロードに対する USAGE 特権がある場合は、接続はそのワークロードに関連付けられます。 一致するワークロードが見つからない場合は、接続はデフォルト・ユーザー・ワークロード SYSDEFAULTUSERWORKLOAD に関連付けられます。 セッション・ユーザーに SYSDEFAULTUSERWORKLOAD に対する USAGE 特権がない場合は、エラーが返されます (SQLSTATE 42501)。
- データベース・マネージャーが以下のいずれかの状態を検出した場合は、新規作業単位が開始されるごとにワークロードの関連付けが再評価されます。
- 接続属性が変更されている。 これは、次のいずれかのイベントが発生した場合に起きることがあります。
- クライアント情報設定 API (sqleseti) が呼び出され、それによってワークロード定義に含まれている接続属性が変更された。 ワークロードの再評価を開始できるようにエンド・ユーザーがクライアント情報を設定できたとしても、セッション・ユーザーにそのワークロードに対する USAGE 特権がなければ、ワークロードの再マップ自体は不可能であることに注意してください。
- SET SESSION AUTHORIZATION ステートメントが呼び出され、それによって現行セッション・ユーザーが変更された。
- セッション・ユーザーが使用できるロールが変更された。
- ワークロードが作成されている。
- ワークロードがドロップされている。
- ワークロードが変更されている。
- ワークロードに対する USAGE 特権がユーザー・グループ、またはロールに付与されている。
- ワークロードに対する USAGE 特権がユーザー・グループ、またはロールから取り消されている。
- 接続属性が変更されている。 これは、次のいずれかのイベントが発生した場合に起きることがあります。
- アクティビティーがまだアクティブである間は、別のワークロードに接続を再割り当てできません。 このようなアクティビティーの例としては、オープン WITH HOLD カーソルのような、複数の作業単位にまたがってリソースを保守するロード操作、実行中のプロシージャー、またはステートメントが挙げられます。 現行のワークロード・オカレンスは、実行中のアクティビティーがすべて完了するまで引き続き実行されます。 ワークロードの再アサインは、次の作業単位の開始時に実行されます。
- ワークロードによって参照されているサービス・クラスは、ワークロードによって参照されなくなる時点までドロップできません。 ワークロードからサービス・クラスの参照を除去するには、次のいずれかのアクションを実行できます。
- ワークロードに変更を加えてサービス・クラス名を変える
- ワークロードをドロップする
- ワークロードによって参照されているロールは、ワークロードによって参照されなくなるまでドロップできません。 ワークロードからロールの参照を除去するには、次のいずれかのアクションを実行できます。
- ワークロードに変更を加えてロールを除去する
- ワークロードをドロップする
- 特権: ワークロードが作成されるとき、USAGE 特権はどのユーザー、グループ、およびロールにも付与されません。 ワークロードを使用可能にするには、GRANT USAGE ON WORKLOAD ステートメントを使用して、そのワークロードの USAGE 特権を、ユーザー、グループ、またはロールに付与します。
- 代替構文: 以前のバージョンの Db2® および他のデータベース製品との互換性のために、以下がサポートされています。 これらの代替は非標準であり、使用すべきではありません。
- DB2_ENFORCE_MEMBER_SYNTAX レジストリー変数が ON に設定されている場合を除き、DATABASE PARTITION を MEMBER の代わりに指定できます。
- DB2_ENFORCE_MEMBER_SYNTAX レジストリー変数が ON に設定されている場合を除き、DATABASE PARTITIONS を MEMBERS の代わりに指定できます。
- COLLECT UNIT OF WORK DATA PACKAGE LIST を COLLECT UNIT OF WORK DATA BASE INCLUDE PACKAGE LIST の代わりに指定できます。
例
- 例 1: グループ FINANCE に属するセッション・ユーザーによってサブミットされた要求に対して、CAMPAIGN という名前のワークロードを作成します。 これらの要求は、デフォルト・ユーザー・サービス・クラス SYSDEFAULTUSERCLASS で実行されます。
CREATE WORKLOAD CAMPAIGN SESSION_USER GROUP ('FINANCE')
- 例 2: ロール HR のセッション・ユーザー用に、CURRENT CLIENT_APPLNAME 特殊レジスターを SALARYSYS に設定した PAYROLL という名前のワークロードを作成します。 このワークロードに関連付けられている作業単位は、サービス・スーパークラス HRSC の下のサービス・クラス MEDIUMSC で実行されます。 実行時にワークロードの選択が実行される際、このワークロードは、必ずワークロード CAMPAIGN が評価され、一致しないことが確認された後で評価される必要があります。
CREATE WORKLOAD PAYROLL SESSION_USER ROLE ('HR') CURRENT CLIENT_APPLNAME ('SALARYSYS') SERVICE CLASS MEDIUMSC UNDER HRSC POSITION AFTER CAMPAIGN
- 例 3: ワークロード CAMPAIGN のオカレンス (例 1 より) は、現在システムで実行中です。 グループ FINANCE に属するセッション・ユーザーがサブミットした要求に対しても、NEWCAMPAIGN という名前のワークロードを作成しますが、このワークロードではアプリケーション DB2BP.EXE を通してサブミットされた要求だけを扱います。 このワークロードに関連付けられた要求は、サービス・クラス MARKETINGSC で実行されます。 NEWCAMPAIGN は CAMPAIGN よりも先に評価されます。
CAMPAIGN の実行中のワークロード・オカレンスは、現在の作業単位が完了するまで引き続き実行されます。そのときに、ワークロードの再評価が行われ、接続はワークロード NEWCAMPAIGN に再マップできるようになります。CREATE WORKLOAD NEWCAMPAIGN SESSION_USER GROUP ('FINANCE') APPLNAME ('DB2BP.EXE') SERVICE CLASS MARKETINGSC POSITION BEFORE CAMPAIGN
- 例 4: システム・ユーザー BOB および MARY によってアプリケーション appl1、appl2、または appl3 からサブミットされた要求に対して、REPORTS という名前のワークロードを作成します。
CREATE WORKLOAD REPORTS APPLNAME ('appl1', 'appl2', 'appl3') SYSTEM_USER ('BOB', 'MARY')
- 例 5: PAYROLL という名前のロック・イベント・モニターが存在し、アクティブになっていると仮定して、ワークロード EMPLOYEES 内で発生するロック・タイムアウト・イベントのステートメント履歴を使用してロック・イベント・レコードを作成します。
CREATE WORKLOAD EMPLOYEES APPLNAME ("app1", "app2") COLLECT LOCK TIMEOUT DATA WITH HISTORY
- 例 6: PAYROLL という名前のロック・イベント・モニターが存在し、アクティブになっていると仮定して、全パーティションのワークロード FINANCE 内で発生するデッドロック・イベントとロック・タイムアウト・イベントだけのロック・イベント・レコードを作成します。
CREATE WORKLOAD FINANCE APPLNAME ("app1", "app2") COLLECT DEADLOCK DATA COLLECT LOCK TIMEOUT DATA
- 例 7: PAYROLL という名前のロック・イベント・モニターが存在し、アクティブになっていると仮定して、ワークロード MANAGERS 内で発生するデッドロック・イベントのステートメント履歴と値を使用してロック・イベント・レコードを作成します。
CREATE WORKLOAD MANAGERS APPLNAME ("app1", "app2") COLLECT DEADLOCK DATA WITH HISTORY AND VALUES
- 例 8: PAYROLL という名前のロック・イベント・モニターが存在し、アクティブになっていると仮定して、ワークロード MANAGERS 内で 5000 ミリ秒待機した後に獲得されるロックのステートメント履歴を使用してロック・イベント・レコードを作成します。
CREATE WORKLOAD MANAGERS APPLNAME ("app1", "app2") COLLECT LOCK WAIT DATA FOR LOCKS WAITING MORE THAN 5 SECONDS WITH HISTORY
- 例 9: 類似した名前 (accrec01、accrec02 ... accrec15) を共有するすべての売掛金勘定アプリケーションに ACCRECS という名前のワークロードを作成し、それをサービス・クラス ACCOUNTNGSC に割り当てます。 アプリケーション名は、APPLNAME 接続属性 (ワイルドカード (*) が使用できます) で識別されるため、個別に指定する必要はありません。
CREATE WORKLOAD ACCRECS SESSION_USER GROUP ('ACCOUNTING') APPLNAME ('accrec*') SERVICE CLASS ACCOUNTNGSC
- 例 10: アプリケーション appl1 を介してサブミットされる要求に対して CAMPAIGN という名前のワークロードを作成し、作業単位データを収集して任意のアクティブな作業単位イベント・モニターに送信します。
CREATE WORKLOAD CAMPAIGN APPLNAME ('appl1') COLLECT UNIT OF WORK DATA BASE
- 例 11: 次のステートメントは、ワークロード作成時に、ADDRESS 接続属性がサポートするさまざまなアドレス値形式を指定する方法を示しています。
- セキュア・ドメイン・ネームを指定する場合:
CREATE WORKLOAD DOMAINWORKLOAD ADDRESS ('aviator.example.com')
- IPv4 アドレス値を指定する場合:
CREATE WORKLOAD IPWORKLOAD1 ADDRESS ('192.0.2.11')
- IPv6 アドレス値 (長形式) を指定する場合:
CREATE WORKLOAD IPWORKLOAD2 ADDRESS ('2001:db8:519:13:204:acff:fe57:6135')
- IPv6 アドレス値 (短形式) を指定する場合:
CREATE WORKLOAD IPWORKLOAD3 ADDRESS ('2001:db8::202:55ff:fe9a:6eee')
- セキュア・ドメイン・ネームを指定する場合: