読み方: にそうこみっと
1行定義
分散トランザクションで複数のデータベースサーバーに対して一貫してコミットまたはロールバックを保証するプロトコル。Prepare(準備)とCommit(確定)の2段階で合意を取る
詳細解説
2相コミット(Two-Phase Commit: 2PC)は、複数のデータベースノード(参加者)にまたがる分散トランザクションで、全ノードがトランザクションをコミット(確定)するか全ノードがロールバック(取り消す)かを一致させるための合意プロトコルです。「部分的なコミット(一部ノードはコミット・他はロールバック)」を防ぎ、分散環境でのACID特性のうち「Atomicity(原子性)」を実現します。2相コミットの流れは次の2段階です。第1相(Prepare Phase:準備フェーズ):コーディネーター(調整役サーバー)が全参加者に「コミットできるか?」を問い合わせます。各参加者はトランザクションを実行済み・ロールバック可能な状態にして「Yes(コミット可)」または「No(コミット不可)」を返答します。第2相(Commit Phase:確定フェーズ):全参加者が「Yes」の場合、コーディネーターは全参加者に「コミットせよ」を送信。全員がコミットを完了します。一人でも「No」または応答なし(タイムアウト)の場合、コーディネーターは全参加者に「ロールバックせよ」を送信。全員がロールバックします。2相コミットの問題点はコーディネーター単一障害点(コーディネーターが第2相途中で障害すると参加者がコミット・ロールバックの判断をできない「ブロッキング問題」)・レイテンシ増加(通信ラウンドトリップが2往復必要)・スループット低下です。これを改善した3相コミット(3PC)やSaga パターン(補償トランザクション)が分散システムで使われます。ITパスポートでは「2相コミットの目的(分散原子性)」「Prepare/Commitの2段階の流れ」「ブロッキング問題」が出題されます。
ITパスポートでの出題ポイント
- 分散トランザクションで全ノード一致してコミットorロールバックを保証
- 第1相(Prepare:コミット可否確認)→第2相(Commit/Rollback指示)の2段階
- 全参加者がYesの場合のみコミット・一人でもNoや無応答でロールバック
- コーディネーター障害時のブロッキング問題が欠点
関連用語
- トランザクション(Transaction) データベース
- ACID特性 データベース
- ロールバック データベース
- シャーディング データベース
- レプリケーション データベース
「2相コミット」の過去問を解いて理解を定着
合格ナビでは IPA 公式 600問 + 3段階の解説(初級・標準・上級) で「○○とは?」をその場で深掘りできます。
シラバス 6.5 準拠 / 最終更新: 2026-05-26
