単一文トランザクションは、スロットルによって遅延した場合、キューからリリースされて実行を開始するまで、データベース ロックやAMPワーカー タスクなどのリソースを受け取りません。ただし、トランザクション(BT/ET間の複数のリクエスト)の一部であるリクエストは、遅延キューで待機している間、リソースを保持する場合があります。TASMでは、次の一連のイベントを自動的に検出できます。
- トランザクションが実行を開始します。
- そのトランザクションの最初のリクエストの1つがロックを取得します。ロックは、トランザクション全体が完了するまでは解放されません。
- システムがビジー状態であるため、スロットルはトランザクションの以降のリクエストを遅らせます。
- 現在実行されているリクエストが、遅延キュー内のリクエストによって保持されているロックを必要としています。これらのアクティブなリクエストは、必要なロックを取得できないため、完了できません。
- アクティブなリクエストが完了していないため、TASMは遅延キューのリクエストを解放できません。
ブロックされたリクエストは自動的に解決することがあります。TASMは、トランザクションの1つのリクエストがスロットルによって遅延した場合にも対応できます。ブロック周期パラメータと例外間隔パラメータによって、ブロックされたリクエストに対応するまでのTASMの待機時間を指定できます。
ブロック アクションパラメータは、ブロック周期 の数が満たされたときにTASMで行なう処理を制御します。TASMは、次の方法のいずれかで遅延キュー内のリクエストに対応できます。
- ログで実行中のリクエストに必要なリソースを保持していることをログに記録
- 実行中のリクエストに必要なリソースを保持しているため、アボート
- 実行するためにリリース
アボートまたはリリースを選択した場合、TASMによってそのアクションがDBC.TDWMEventLogに記録されます。
デフォルトでは、ブロック周期は1に設定されており、ブロック アクションはリリースに設定されています。ブロックされたリクエストが発生した場合に、ブロック周期の数がブロックの正常な解決をシステムで試みるのに十分な数である必要があります。待機期間後、TASMでは、ブロックしているリクエストを実行させて、他のリクエストのためにロックを解放することができます。例外間隔を60秒に設定し、ブロック周期を2に設定した場合、2度の60秒サイクル(2分)が経過するまでTASMによる対応は行なわれません。ブロック周期をオフに設定した場合、TASMによるブロックされたリクエストの解決は行なわれません。
リリースオプションを使用したTASMによるブロックされたリクエストの解決における1つの欠点は、同時並行性の上限が緩和されることです。例えば、スロットル制限が5の場合、6個以上のリクエストが実行される可能性があります。スロットル数が上限を超えると、新しいリクエストはスロットル数が減少するまで待機するため遅延キューにより長く滞在することになります。多くのトランザクションでTASMによるブロックされたリクエストの解決を使用している場合、一部の作業の開始が大幅に遅れ、ワークロード管理全体が影響を受けることがあります。TASMによるブロックされたリクエストの解決については、慎重に評価し、他の作業に対する影響をモニターしてください。