9.3.2. 1相コミット (1PC) の LRCO 最適化

トランザクションでは、一般的に 2 相コミットプロトコル (2PC) が使用されることが多いですが、両フェーズに対応する必要がなかったり、対応できない場合もあります。そのような場合、1 相コミット (1PC) プロトコルを使用することができます。XA 未対応のデータソースがトランザクションに参加する必要がある場合などがこの一例になります。
このような状況では、最終リソースコミット最適化 (LRCO: Last Resource Commit Optimization) という最適化が適用されます。1 相リソースは、トランザクションの準備フェーズで最後に処理され、コミットが試行されます。コミットに成功すると、トランザクションログが書き込まれ、残りのリソースが 2PC に移動します。最終リソースがコミットに失敗すると、トランザクションはロールバックされます。
このプロトコルにより、トランザクションの多くが通常に完了できますが、特殊なエラーによりトランザクションの結果に一貫性がなくなってしまう場合もあります。そのため、このアプローチは最終手段としてお使いください。
ローカルの TX データソースが1つのみトランザクションで使用されると、LRCO が自動的に適用されます。