本文へ移動

基本情報技術者試験

にそうこみっとめんと

2相コミットメント

2PC

Two-Phase Commit

分散データベースでデータの一貫性を保つための手法です。準備フェーズで全ノードの合意を確認し、確定フェーズで一斉に更新を反映します。

詳しい説明

2相コミットメントとは、分散データベース環境において、複数のデータベースノード間でデータの一貫性を保つためのトランザクション制御プロトコルです。全てのノードで更新が成功するか、あるいは全く更新しないかのどちらか一方の状態にすることで、部分的な更新による矛盾を防ぎます。

仕組みは名前の通り2つのフェーズに分かれます。まず準備フェーズで、コーディネーターが全ノードに更新可能か問い合わせ、全員からOKの返事があれば、次の確定フェーズで一斉に更新を確定させます。もし1つでもNGがあれば、全員で処理を取り消すロールバックを行います。

試験では、一貫性を保つための技術として登場します。すべてのノードで合意が取れないと完了できないという制約があるため、通信障害などで一部のノードが応答しないと、システム全体が待機状態になる(ブロックされる)リスクがあるという点が繰り返し問われます。可用性と整合性のトレードオフの文脈でも重要です。

試験で問われること

基本情報技術者試験

  • 準備フェーズと確定フェーズの手順を理解する。
  • ブロックが発生するリスクを理解する。
  • 整合性と可用性のバランスの論点として押さえる。

最終更新日: 2026/09/14