しきい値による作業の制御

異常な動作をする作業を特定することによって、システムの安定度を維持するために、しきい値を使用できます。 予測影響に基づいて、作業の実行を開始する前に、異常な動作を予測的に特定できます。 また、作業の実行中にリソースが消費されていく際に発生する異常な動作を敏感に感知し、特定することもできます。

例えば、大量のプロセッサー時間を消費するためにシステム上の他のすべての作業の実行を犠牲にしている照会は、しきい値を使用して制御できる作業の一例です。 このような照会に対する制御は、照会が実行を開始する前でも見積コストに基づいて行えます。または、照会が実行を開始して許容量を超えるリソースを消費しているときに行えます。

しきい値のタイプ

接続しきい値
接続の最大アイドル時間を制限する場合、接続しきい値を使用します。 これらのしきい値は、アイドル状態が長すぎる接続の検出に使用できます。
表 1. 接続しきい値
閾値 説明
CONNECTIONIDLETIME 接続がアイドル状態でユーザー要求のための動作をしていない時間の長さを制御します。 このしきい値は、データ・サーバーのリソースを効率的に使用していない状態と、アプリケーションの待ち状態を検出するために使用します。
作業単位しきい値
作業単位の実行時間を制限する場合、作業単位しきい値を使用します。 これらのしきい値は、作業単位が Db2® エンジンで費やすことができる最大時間を制限し、完了までに時間がかかりすぎる作業単位を検出するために使用できます。
表 2. 作業単位しきい値
閾値 説明
UOWTOTALTIME 作業単位の実行にかかる時間の長さを制御します。
アクティビティーしきい値
データ・サーバーの実行に特定のアクティビティーが与える影響を制限する場合は、アクティビティーしきい値を手段の 1 つとして使用できます。 実行時間が長すぎる、異常に大量のデータが返される、または異常に大量のリソースが消費されるという現象はすべて、潜在的問題を含んだアクティビティーが過剰のリソースを消費している可能性があるという警告標識の例です。こうしたアクティビティーは、アクティビティーしきい値で制御できます。
表 3. アクティビティーしきい値
閾値 説明
ACTIVITYTOTALTIME 特定のアクティビティーがサブミットされてから完了までに費やすことができる時間 (実行時間とキュー時間) の長さを制御します。 このしきい値は、完了までに異常に長い時間がかかっているジョブを検出するために使用します。
ACTIVITYTOTALRUNTIME アクティビティーの実行に費やすことができる時間の長さを制御します。 この時間にキュー時間は含まれません。 このしきい値は、実行に異常に長い時間がかかっているジョブを検出するために使用します。
ACTIVITYTOTALRUNTIMEINALLSC 特定のサービス・サブクラス内でアクティビティーの実行に費やすことができる最大実行時間を制御します。 このしきい値は、アクティビティーの実行時間に基づいてアクティビティーを次のサービス・クラスに移動するために使用します。
CPUTIME アクティビティーが実行中に特定のメンバーで消費できるユーザー・プロセッサー時間とシステム・プロセッサー時間の合計最大時間を制御します。 このしきい値は、過度のプロセッサー・リソースを消費しているアクティビティーを検出および制御するために使用します。
CPUTIMEINSC アクティビティーが特定のサービス・サブクラスで実行中に特定のメンバーで消費できるユーザー・プロセッサー時間とシステム・プロセッサー時間の合計最大時間を制御します。 このしきい値は、過度のプロセッサー・リソースを消費している現行サービス・クラス内のアクティビティーを検出および制御するために使用します。
DATATAGINSC 特定のサービス・サブクラスを実行しているときに、アクティビティーによって触ることのできるデータ、または触ることができないデータを制御します。
ESTIMATEDSQLCOST 照会オプティマイザーによって見積コストが大きいと判断される DML アクティビティーを制御します。 このしきい値は、リソースを大量に消費する可能性がある SQL をシステムでの実行開始前に予測し、書き方が不適切な SQL を識別するために使用します。
SORTSHRHEAPUTIL
重要: このフィーチャーは、 Db2 バージョン 11.5 モディフィケーションパック 2 以降のバージョンで使用できます。

アクティビティーが使用できる共有ソート・メモリー・リソースの量を制御します。 WLM アドミッション制御が使用可能になっている 場合、メモリーの推定量が多くなるとキュー時間が非常に長くなる可能性があるため、これには、アクティビティーが 使用するメモリーの推定量が含まれます。 WLM アドミッション制御が使用不可の場合、これにはアクティビティーによって 実際に使用されるメモリーのみが含まれます。 このしきい値を使用して、ソート・メモリー所要量が大きいアクティビティーを検出および制御し、 WLM アドミッション制御が使用可能になっているときに、ソート・メモリー所要量が大きい アクティビティーによって過剰なキューイングが発生しないようにします。

SQLROWSREAD アクティビティーがどのメンバーにおいても読み取ることができる行の最大数を制御します。 このしきい値は、過度の行数を読み取っているアクティビティーを検出および制御するために使用します。
SQLROWSREADINSC アクティビティーが特定のサービス・サブクラスで実行中に特定のメンバーで読み取ることができる行の最大数を制御します。 このしきい値は、過度の行数を読み取っている現行サービス・クラス内のアクティビティーを検出および制御するために使用します。
SQLROWSRETURNED SQL を実行する時に返される行数を制御します。 このしきい値は、データ量が妥当なボリュームを超えたときを識別するために使用します。
SQLTEMPSPACE 特定のアクティビティーがメンバー上で消費できる TEMPORARY 表スペースの量を制御します。 このしきい値は、特定の SQL ステートメントが過度の量の一時スペースを使い果たして他の作業の進行を妨げることがないようにするために使用します。

データ・サーバーは、REORGCHK、IMPORT、および EXPORT などのユーティリティーからの要求を、ユーザー・ロジックと見なします。したがってこれらの要求は、定義済みしきい値に制約されます。

集約しきい値
データ・サーバーに特定のアクティビティー、ワークロード、または接続が与える集合的な影響を制御する場合は、集約しきい値を定義できます。 集約しきい値は多くの場合 (常にというわけでない)、同時に実行される特定のアクティビティーの数を制限する必要がある場合に並行性制御を実施します。 いくつかの集約しきい値は組み込みキューを持っており、キューイングしきい値とも呼ばれます。
表 4. 集約しきい値
閾値 説明
AGGSQLTEMPSPACE サービス・サブクラス内のすべてのアクティビティーで消費できる SYSTEM TEMPORARY 表スペースの合計最大量を制御します。 このしきい値は、すべてのアクティビティーが全体として過度の量の SYSTEM TEMPORARY 表スペースを消費しているサービス・サブクラスに属するアクティビティーを検出および制御するために使用します。
CONCURRENTWORKLOADOCCURRENCES コーディネーター・メンバーで同時に実行できるワークロードのアクティブなオカレンスの数を制御します。 特定のソースからの接続の広がりを制御するために使用します。
CONCURRENTWORKLOADACTIVITIES 1 つのワークロード・オカレンスの中で実行できる個々のアクティビティーの数を制御します。 個々のワークロード・オカレンスの中での作業を制限するために使用します。
CONCURRENTDBCOORDACTIVITIES しきい値が関連しているドメイン内の並行アクティビティー (データベース、ワーク・アクション、サービス・スーパークラス、またはサービス・サブクラス) の数を制御します。
合計メンバー接続数 特定のメンバーに対して同時に確立できるデータベース接続の数を制御します。 特定の メンバー が過負荷にならないようにするために使用します。
TOTALSCメンバー接続数 特定のサービス・クラスの中で実行される作業用の特定のメンバーに対して同時に確立できるデータベース接続の数を制御します。 メンバー 接続の合計と似ていますが、接続がサービス・クラスにリンクされるため、より細分化されます。

これをサポートする集約しきい値の場合、実行「チケット」のシステムにより並行性の制御が提供されます。 各着信アクティビティーは、実行を開始する前に、該当する並行性しきい値にチケットを請求しなければなりません。 チケットをすべて使い尽くすと、しきい値を定義した方法に応じて、追加のアクティビティーはチケットが使用可能になるまでキューに入れられるか、エラーが戻されます。 並行性しきい値でキューイングが使用可能になっている場合は、実行を完了したアクティビティーからキューに入れられている別のアクティビティーにチケットが渡されます。 その後、そのアクティビティーはキューから出て実行を開始できます。 並行性しきい値当たりの使用可能なチケットの数は、しきい値を定義した方法に応じて異なります。 例えば、CONCURRENTDBCOORDACTIVITIES しきい値を定義して、データベース・アクティビティーの並行実行数を 10 に制限すると、10 個の実行チケットが使用可能になります。

ストアード・プロシージャーの場合、アクティビティーしきい値は、ストアード・プロシージャー自体とその子アクティビティーに適用されます。 並行性しきい値は、CALL ステートメント自体にではなく、ストアード・プロシージャーの子アクティビティーにのみ適用されます。

しきい値違反が発生した場合のアクション

しきい値違反が発生した場合に動的に取るアクションは、そのしきい値がどのように定義されているかによって異なります。
実行の停止 (STOP EXECUTION)
しきい値の違反が発生した場合に取る一般的なアクションは、アクティビティーの実行を停止することです。 この場合、サブミットしたアプリケーションに対して、しきい値に違反したことを示すエラー・コードが返されます。 TOTALMEMBERCONNECTIONS および TOTALSCMEMBERCONNECTIONS しきい値の場合、STOP EXECUTION アクションによって接続が確立されないことに注意してください。 CONNECTIONIDLETIME しきい値の場合は、接続が閉じられます。 CONCURRENTWORKLOADOCCURRENCES の場合は、新規のワークロード・オカレンスが作成されなくなります。 アクティビティー関連のすべてのしきい値については、アクティビティーが実行を続行しなくなります。 THRESHOLDVIOLATIONS イベント・モニターがアクティブな場合は、しきい値に違反したことを示すレコードがイベント・モニターに書き込まれます。
実行の続行 (CONTINUE)
状況によっては、アクティビティーの実行を停止するのは、対応として行き過ぎである場合もあります。 望ましい対応は、アクティビティーには実行を続行させ、この状態が再発しないようにする方法を判別するための分析を将来行えるように、管理者用の関連データを収集することです。 この状況では、サブミットしたアプリケーションにエラー・コードは返されません。 アクションを続行する場合、ユーザーはしきい値に違反したという通知は受け取りません。 THRESHOLDVIOLATIONS イベント・モニターがアクティブな場合は、レコードがイベント・モニターに書き込まれます。 キューイングしきい値に対して CONTINUE しきい値アクションを指定した場合は、存在する強制値に関係なくキューのサイズが事実上無制限になります。
アプリケーションの強制終了 (FORCE APPLICATION)
UOWTOTALTIME しきい値に違反する場合、ローカルまたはリモートのユーザーまたはアプリケーションをシステムから強制的に切り離すように指定することができます。 これは、サーバー・リソースを求めて競合している他のアプリケーションにとってのメリットとなります。
アクティビティーの再マップ (REMAP ACTIVITY TO)
アクティビティーが特定の制限に違反した場合、そのアクティビティーに別のリソース制御を割り当ててアクティビティーの実行はそのまま続行させることもできます。 こうした対応にすると、アクティビティーがその存続期間中に消費できるリソースの量を、動的に増やしたり減らしたりできます。 この場合、既に実行中のアクティビティーは、しきい値に違反したことがユーザーやアプリケーションに示されることなく続行できます。ただし、そのアクティビティーは、使用可能な別のリソースを使用して実行されるようになります。 再マップは、CPUTIMEINSC、 SQLROWSREADINSC、DATATAGINSC のようなサービス・クラス内のしきい値であれば、どれに関しても使用可能です。
データの収集 (COLLECT ACTIVITY DATA)
一部のしきい値では、違反が生じるとデータが収集されます。 デフォルトでは、アクティビティーしきい値に違反したという事実が、アクティブにされたしきい値違反イベント・モニターに記録されます。 しきい値に違反したアクティビティーに関するより詳細な情報が必要な場合は、COLLECT ACTIVITY DATA 節を使用することで、そのアクティビティーに関する情報をアクティビティー用のアクティブなイベント・モニターに書き込むよう要求できます。この書き込みは、そのアクティビティーの実行完了時に行われます。