9.4.1.2.2 コミット条件での妥協点
ほとんどの場合、グローバル・トランザクションのすべての参加リソースが第1フェーズの正常終了を記録した場合、第2フェーズも正常終了します。CMTRET
にLOGGED
を設定すると、tpcommit()
の呼出しから制御が多少早く戻るようになります。ただし、参加リソースが、コミットの決定と矛盾する方法で、トランザクションの担当部分をヒューリスティックに終了する危険性があります。
このようなリスクを負うべきかどうかの選択は、アプリケーションの性質に左右されます。たとえば、財務アプリケーションなど正確さが要求されるアプリケーションでは、すべての参加リソースが2フェーズ・コミットを完了するまでは、制御を戻さないようにする必要があります。時間的な条件を重視するアプリケーションでは、正確さを犠牲にしても実行速度を上げます。
親トピック: 2フェーズ・コミット・プロトコル