【すりーふぇーずこみっと】

3フェーズコミット とは?

公開:
💡 確定前にもう一段階。ただし障害の前提がある

複数の参加者の更新をそろえる分散コミット方式。投票と最終確定の間に事前確約を挟み、一定の障害前提の下で、調整役の停止による待ち続けを避ける。

📌 このページのポイント
3フェーズコミット 正常に確定する経路の概念図 1. 投票 実行できる? 全員が賛成 2. 事前確約 PreCommit 応答を集める 3. 確定 Commit 結果を確定 調整役停止時は、生存参加者の状態を調べる手順が必要 原論文の前提:ネットワークは故障しない/故障を確実に検出
確定前にもう一段階。ただし障害の前提がある
ひよこ ひよこ
2フェーズコミットに、もう1段階足すの?
ペンギン先生 ペンギン先生
そうだよ。複数の参加者に更新をまとめて確定してもらう方式なんだ。2PCでは、準備完了と返事をした参加者が、調整役の停止で最終結果を知れず待ち続ける場合がある。それを一定の前提の下で避けようとするよ。
ひよこ ひよこ
3つの段階は何をするの?
ペンギン先生 ペンギン先生
まず参加者に実行できるか投票してもらう。全員が賛成なら、調整役は事前確約のPreCommitを伝えて応答を待ち、それから最終的な確定を伝える。事前確約は利用者に処理完了を返す段階ではないよ。
ひよこ ひよこ
途中の段階を増やすと、なぜ助かるの?
ペンギン先生 ペンギン先生
参加者が持つ状態から、取り消し得る段階と確定へ進む段階を区別しやすくするためだよ。調整役が止まったときは、生存する参加者の状態を調べる終了手順と組み合わせて結論を出す。単に各自が好きな時間で確定する仕組みではないんだ。
ひよこ ひよこ
通信が切れても止まらないの?
ペンギン先生 ペンギン先生
そこが大切な注意点だよ。原論文ではネットワークは故障せず、ノードの故障をタイムアウトで確実に検出できると仮定している。長い遅延と故障を区別できない環境やネットワーク分断に、その保証をそのまま持ち込めないんだ。
ひよこ ひよこ
じゃあ、いつも2PCよりよいわけではないんだね?
ペンギン先生 ペンギン先生
そのとおり。追加の通信や状態管理が必要で、安全に動かせる障害モデルも確かめなければならない。「段階が多いほど強い」ではなく、どんな障害まで想定している方式なのかを比較しよう。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「3フェーズコミット」は「確定前にもう一段階。ただし障害の前提がある」と押さえておこう!
📖 おまけ:英語の意味
「three-phase commit」 = 3段階での確定
💬 three-phase commitは「3段階での確定」という意味の表現だよ。

参考資料

← 用語集にもどる