【すりーふぇーずこみっと】
3フェーズコミット とは?
公開:
💡 確定前にもう一段階。ただし障害の前提がある
複数の参加者の更新をそろえる分散コミット方式。投票と最終確定の間に事前確約を挟み、一定の障害前提の下で、調整役の停止による待ち続けを避ける。
📌 このページのポイント
2フェーズコミットに、もう1段階足すの?
そうだよ。複数の参加者に更新をまとめて確定してもらう方式なんだ。2PCでは、準備完了と返事をした参加者が、調整役の停止で最終結果を知れず待ち続ける場合がある。それを一定の前提の下で避けようとするよ。
3つの段階は何をするの?
まず参加者に実行できるか投票してもらう。全員が賛成なら、調整役は事前確約のPreCommitを伝えて応答を待ち、それから最終的な確定を伝える。事前確約は利用者に処理完了を返す段階ではないよ。
途中の段階を増やすと、なぜ助かるの?
参加者が持つ状態から、取り消し得る段階と確定へ進む段階を区別しやすくするためだよ。調整役が止まったときは、生存する参加者の状態を調べる終了手順と組み合わせて結論を出す。単に各自が好きな時間で確定する仕組みではないんだ。
通信が切れても止まらないの?
じゃあ、いつも2PCよりよいわけではないんだね?
そのとおり。追加の通信や状態管理が必要で、安全に動かせる障害モデルも確かめなければならない。「段階が多いほど強い」ではなく、どんな障害まで想定している方式なのかを比較しよう。
まとめ:ざっくりこれだけ覚えればOK!
「3フェーズコミット」は「確定前にもう一段階。ただし障害の前提がある」と押さえておこう!
📖 おまけ:英語の意味
「three-phase commit」 = 3段階での確定
💬 three-phase commitは「3段階での確定」という意味の表現だよ。