読み方 : ツーフェーズコミット
2フェーズコミット【2-phase commit】2相コミット
概要
2フェーズコミットとは、複数の独立したシステムが参加する分散トランザクションにおいて、処理の整合性が保たれるよう2段階に分けてコミットを行う手法。

トランザクション処理では、振り込みにおける出金と入金のように一体不可分な連続した処理を、すべて成功かすべて失敗(途中の処理が失敗したら実行済みの処理を取り消して開始前の状態に戻す)のどちらかに制御する。
分散トランザクションでは複数の独立した処理主体が一連の処理を分担して実行するため、通常のコミット処理によって結果を確定させることができない。このような場合に、準備と確定の2段階に分けてコミットを実施する方式を2フェーズコミットという。
トランザクションの制御を司るコーディネータはまず、処理を実行して結果を返すよう参加者に通知する。各参加者はトランザクションを構成する処理を実行し、成功したら「コミット可能」の応答を返す。すべての参加者から成功の通知を受け取ったら、コーディネータはコミットを確定するよう参加者に通知する。これを受けてすべての参加者がコミットを実行することにより、トランザクション全体のコミットが完了する。
準備段階で処理に失敗した参加者がいた場合、コーディネータはトランザクションの失敗を全参加者に伝え、行った処理を取り消して巻き戻すロールバック処理を行うよう促す。参加者がコミット可能な状態で待っている際にコーディネータが故障などで停止すると、コミットもロールバックもできないまま放置されてしまうという問題がある。
(2019.1.17更新)
「2フェーズコミット」の関連用語
他の用語辞典による「2フェーズコミット」の解説 (外部サイト)
資格試験などの「2フェーズコミット」の出題履歴
▼ 基本情報技術者試験
【令4修6 問28】 分散データベースシステムにおいて,一連のトランザクション処理を行う複数サイトに更新処理が確定可能かどうかを問い合わせ,全てのサイトが確定可能である場合,更新処理を確定する方式はどれか。
【令1修12 問28】 分散データベースシステムにおいて,一連のトランザクション処理を行う複数サイトに更新処理が確定可能かどうかを問い合わせ,全てのサイトが確定可能である場合,更新処理を確定する方式はどれか。
【平30修6 問28】 分散データベースシステムにおいて,一連のトランザクション処理を行う複数サイトに更新処理が確定可能かどうかを問い合わせ,全てのサイトが確定可能である場合,更新処理を確定する方式はどれか。
【平29春 問28】 分散データベースシステムにおいて,一連のトランザクション処理を行う複数サイトに更新処理が確定可能かどうかを問い合わせ,全てのサイトが確定可能である場合,更新処理を確定する方式はどれか。
【平27修12 問29】 分散データベースシステムにおいて,一連のトランザクション処理を行う複数サイトに更新処理が確定可能かどうかを問い合わせ,全てのサイトが確定可能である場合,更新処理を確定する方式はどれか。
【平25修6 問34】 分散データベースシステムにおいて,一連のトランザクション処理を行う複数サイトに更新処理が確定可能かを問い合わせ,すべてのサイトの更新処理が確定可能である場合,更新処理を確定する方式はどれか。
【平23修6 問33】 分散データベースシステムにおいて,一連のトランザクション処理を行う複数サイトに更新処理が確定可能かどうかを問い合わせ,すべてのサイトが確定可能である場合,更新処理を確定する方式はどれか。
【平21修6 問33】 分散データベースシステムにおいて,一連のトランザクション処理を行う複数サイトに更新可能かどうかを問い合わせ,すべてのサイトが更新可能であることを確認した後,データベースの更新処理を行う方式はどれか。