ワークロードの割り当て

データベース接続が確立された後の最初の作業単位の初めに、使用可能になっている各ワークロードの接続属性を評価することによって、データ・サーバーは接続をワークロードに割り当てます。

ワークロードが評価される順序は、SYSCAT.WORKLOADS 表にある各ワークロードの EVALUATIONORDER 列値によって決定されます。 一致する接続属性を持つワークロードが見つかると、データ・サーバーは、現行のセッション・ユーザーにそのワークロードに対する USAGE 特権があるかどうかを確認します。 一致するワークロードに対する USAGE 特権をユーザーが持っている場合、ワークロードの割り当ては完了し、接続はそのワークロードに割り当てられます。 一致するワークロードに対する USAGE 特権をユーザーが持っていない場合、データ・サーバーは、セッション・ユーザーが USAGE 特権を持つ、一致するワークロードが見つかるまで、ワークロードの評価を続行します。 一致するワークロードが見つからない場合、データ・サーバーは SYSDEFAULTUSERWORKLOAD ワークロードを使用しようとします。 現行セッション・ユーザーにそのワークロードに対する USAGE 特権がない場合、SQL4707N が戻され、作業単位は拒否されます。 それ以外の場合、接続は SYSDEFAULTUSERWORKLOAD ワークロードに割り当てられます。

CREATE WORKLOAD または ALTER WORKLOAD ステートメントの POSITION キーワードを使用して、評価順序を次のように設定することができます。
  • 評価順序内でのワークロードの絶対位置を指定します。次に例を示します。
    CREATE WORKLOAD...POSITION AT 2

    POSITION AT 2 は、ワークロードが評価順序の 2 番目に置かれることを意味します。 一致するワークロードのうち、評価順序の位置がより高いものが最初に評価されます。 つまり、位置 2 と位置 3 にあるワークロードが一致する場合、位置 2 にあるワークロードが位置 3 にあるワークロードの前に評価されます。

    CREATE WORKLOAD または ALTER WORKLOAD ステートメントで指定する位置が既存のワークロードの合計数より大きい場合、ワークロードは、評価順序の最後から 2 番目 (SYSDEFAULTUSERWORKLOAD ワークロードの前) に置かれます。 これは、CREATE WORKLOAD または ALTER WORKLOAD ステートメントで POSITION LAST を指定した場合と効果は同じです。

  • POSITION BEFORE workload-name または POSITION AFTER workload-name キーワードを使用します。workload-name は既存のワークロードです。 このキーワードは、評価順序における新規または変更されたワークロードの位置を、別のワークロードから見た相対的な位置で指定します。次に例を示します。
    ALTER WORKLOAD...POSITION BEFORE workload2

POSITION キーワードを指定しない場合は、デフォルトで、新規ワークロードは、評価順序内の他の定義済みのワークロードの後、および常に最後であると見なされる SYSDEFAULTUSERWORKLOAD ワークロードの前に置かれます。

ワークロードの再割り当て

接続属性の 1 つ、またはワークロード定義のセットが変更されると、接続の割り当て先のワークロードが作業単位の境界ごとに変わる可能性があります。 作業単位の境界とは、接続とその現行トランザクションとの関連付けが解除されるポイントのことです。 作業単位の境界の原因となるイベントには、コミット、ロールバック、XA 終了 (成功)、XA コミット、および XA ロールバックがあります。

以下のイベントのいずれかが発生したことをデータ・サーバーが検出すると、新しい作業単位の初めにワークロード割り当てが再評価されます。
  • 関連した接続属性が変更されている。 ワークロード定義で指定できる接続属性のリストについては、 ワークロードの起点による作業識別 の表を参照してください。 ワークロードの再評価は、現行セッション許可 ID が変更されたときにも行われます。これは、トラステッド・コンテキストが原因でデータベース接続が切り替えられるためです。 詳しくは、 トラステッド・コンテキストおよびトラステッド接続を参照してください。
  • ワークロードを作成または変更した。
  • ユーザー、グループ、またはロールにワークロードに対する USAGE 特権を付与したか、あるいはワークロードに対する USAGE 特権をユーザー、グループ、またはロールから取り消した。

作業単位の境界をまたぐアクティビティーがまだアクティブである間は、別のワークロードに接続を再割り当てできません。 アクティビティー とは、ロード操作、ストアード・プロシージャーまたは表関数、または WITH HOLD カーソルなど、複数の UOW にわたってリソースを保守する操作のことです。 現在のワークロード・オカレンスは、すべてのアクティビティーが完了するまで実行されます。 ワークロードの再割り当ては、次の作業単位の開始時に実行されます。

以下のいずれかの場合、ワークロードの割り当てまたは再割り当てが試行されると、SQL4707N エラーが生じます。
  • データ・サーバーが、データベースへのアクセスが許可されていないワークロードに対して接続を割り当てようとした場合。 詳しくは、 ワークロードのオカレンスがデータベースにアクセスしないようにするを参照してください。
  • データ・サーバーが SYSDEFAULTUSERWORKLOAD ワークロードに接続を割り当てようとするものの、現行セッション・ユーザーがこのワークロードに対する USAGE 特権を持っていない場合。

ACCESSCTRL、DATAACCESS、DBADM、SECADM、または WLMADM 権限がある場合、データベース接続をデフォルトの管理者ワークロードである SYSDEFAULTADMWORKLOAD ワークロードに割り当てることができます。 詳しくは、 デフォルトの管理ワークロードを使用した修正アクションの実行 を参照してください。

XA トランザクションおよびワークロード再割り当て

XA_END (成功)、XA コミット、および XA ロールバックなどの XA 呼び出しは、作業単位の終わりを示す Db2 COMMIT または ROLLBACK を発行します。 ワークロード再評価は作業単位の初めに行うことができるため、これらの XA 呼び出しによってワークロード再評価が開始することがありますが、ワークロード再評価の理由は XA トランザクション自体とは直接関連していません。