3.2.3 トランザクションのコミットとロールバック
トランザクションは,成功または失敗することによって終了します。トランザクションが成功すること,つまり整合性を保って資源を更新することを,トランザクションのコミットといいます。トランザクションがコミットしたときに初めて,グローバルトランザクション内のすべてのトランザクションブランチでの資源の更新が有効になります。トランザクションをコミットするかどうか最終的に決定するトランザクション処理の区切りを,同期点といいます。資源は,同期点で更新します。
トランザクションが失敗して,トランザクションで更新するはずの資源の状態を,トランザクション開始直前の状態に戻すことを,トランザクションのロールバックといいます。トランザクションをコミットできなかった場合や,処理の不整合を検出した場合には,これまでの処理をロールバックで取り消して,データの整合性を保ちます。トランザクションがロールバックした要因はログに取得できます。ロールバック要因をログに取得するかどうか,トランザクション関連定義のtrn_rollback_information_putオペランドで指定してください。
TP1/EEはトランザクションブランチごとに経過時間を監視しています。経過時間を過ぎてもトランザクションが終了しないときには,トランザクションをロールバックします。経過時間の監視については,「11.4.3 トランザクション処理時間監視」を参照してください。
トランザクションのロールバックを次の図に示します。
- 〈この項の構成〉
(1) グローバルトランザクションの完了
グローバルトランザクション全体が完了するのは,次に示すどちらかの時点です。
-
トランザクションブランチがすべてコミットまたはすべてロールバックしたあとに各ノードでのトランザクション完了処理が終了する時点
-
ヒューリスティック決着がすべてのトランザクションブランチに対して完了する時点
グローバルトランザクション全体が完了した時点で,このグローバルトランザクションに関する情報は,すべて消滅します。
ヒューリスティック決着については,「3.2.4(1)(b) ヒューリスティック決着」を参照してください。
(2) トランザクションの決着
トランザクションブランチの決着結果は,そのトランザクションブランチが属するグローバルトランザクションの決着結果と一致している必要があります。トランザクションブランチの決着結果がグローバルトランザクションの決着結果と一致しない場合は,ヒューリスティック決着となります。
ヒューリスティック決着については,「3.2.4(1)(b) ヒューリスティック決着」を参照してください。