2相コミット (2フェーズコミット) とは
複数のデータベースの内容を更新する時に、処理が矛盾しないように整合性を保つための手法。 具体的には、複数のデータベースを更新する前に、全てのデータベースが更新可能かどうかを確かめてから、一斉に更新を行う。
2相コミットの処理ステップ
- マスターのサーバーから複数のデータベースへ更新可能か否かを問い合わせる
- それぞれのデータベースは自身が更新可能か否かをマスターのサーバーへ返す
- マスターのサーバーは全てのデータベースが更新可能であることを確認した後に、一斉にデータベースの更新を行う
- 更新処理の途中であるデータベースが更新処理を失敗した場合、失敗したということをマスターのサーバーへ返す。
- 失敗を知ったサーバーは全てのデータベースへ、ロールバックの指示を出し前の状態へ戻す。
更新可能か問い合わせるフェーズと、実際に更新するフェーズがあることから2フェーズコミットと呼ばれる。