2 フェーズ・コミット・アプリケーションを実行するには、以下の点を考慮してください。
- 2 フェーズ・コミット・アプリケーション内のトランザクションは、2 フェーズ・コミット・トランザクションが
継続している間は MPP 領域を使用し続けるため、2 フェーズ・コミット・アプリケーションが領域で競合しないようにするために、
可能な限り多くの MPP 領域を実行するのが最善の方法です。
- 多数の IMS™ トランザクションが 2 フェーズ・コミット・トランザクション内で実行されている
場合には、2 フェーズ・コミット・アプリケーションのハングを避けるために、
少なくともそれと同数の MPP 領域が使用可能になっていなければなりません。
- トランザクションが無期限にリソースを待ち続けることがないようにするために、
グローバル・トランザクションで行われるそれぞれの対話について、
適切なタイムアウト値を設定することをお勧めします。
- 1 つの 2 フェーズ・コミット・トランザクションで、あまりに多くのデータベース対話を行わないようにしてください。
複数の IMS トランザクションが 1 つの 2 フェーズ・コミット・トランザクションで
使用されている場合には、同一のデータを更新または変更しようとして、競合またはロックが発生する場合があります。
これを避けるには、同一の 2 フェーズ・コミット操作内の重複項目にユーザーがアクセスできないようなアプリケーションを作成するのが一番良い方法です。
- データベースの最小の項目と同じブロック・サイズを使用するように、IRLM または PI ロック・マネージャーを
構成することを検討してください。
大きなブロック・サイズでは、ハード・ディスク内に非常に接近して存在する項目 (同一ではない) に対して、2 つのトランザクションの競合が発生することがあります。
- 1 つのグローバル・トランザクション (作業単位) の中で、
同じ IMS データベースにある
同じ IMS トランザクションを使用して、
複数の対話が実行される場合、
その IMS トランザクションとの間で行われる
それぞれの対話は、別の MPP 領域で実行する必要があります。
IMS トランザクションでは、SCHDTYP=PARALLEL および PARLIM=0 という
値を設定して、その IMS トランザクションが複数の MPP 領域で実行できること、
および、新規 MPP 領域で行われるそれぞれの対話を処理するためのスケジューリング要件を
常に満たす (メッセージの数がゼロより大きい) ことを指定する必要があります。
- 実行タイムアウト値が設定されていない場合に RRS-OTMA を待っていて、ある領域がハングしたときには、MPP 領域
のハングの原因となっているトランザクションの実行をそれ以上試みないようにすることができます。
これは、異常終了トランザクション・パラメーターを指定して領域停止 IMS コマンドを
発行することによって行うことができます。
例えば、/STOP REGION reg#ABDUMP tranname を発行します。
これにより、その特定の対話に関してトランザクションがロールバックされ、MPP 領域が解放されます。