2相コミットとは?にそうこみっと
2相コミットとは、更新先が複数のデータベースに分かれていても、結果を全員確定か全員取消しのどちらかに揃えるための合意手順。まず調整者が全参加者へ確定できるかを確約させ、確約が全部そろって初めて確定を命じる。確約した参加者は資源を押さえたまま指示を待つため、分散環境でも原子性が保たれる。
最終更新:2026-10-06
この語が出る過去問を解く →背景
単一のデータベースなら、ログを書いてからコミットを返すだけで全か無かを保証できる。相手が複数になると、片方は確定でき片方は失敗するという状態が起こりうる。確定の可否を先に全員へ確約させ、確約が揃ってから実際の確定を命じる二段構えは、この「途中で断られる」可能性を前倒しで潰すための手順である。
具体例
銀行Aの口座から引き落とし、銀行Bの口座へ入金する処理では、両行のDBへ確定可能かを問い合わせ、両方が可と答えたときだけ確定を指示する。片方でも不可なら双方を取り消すため、引き落としだけが成立する状態を防げる。XA仕様がこの手順を規定する。
試験での引っ掛け
第1相で可と答えた後、確定指示が届く前に調整者が落ちると、参加者は資源を押さえたまま判断できないブロッキング状態になる点が弱点として問われる。3相コミットはこれを緩和するが通信回数が増える。2相ロックとは名前が似ているだけの別物。
関連用語
出た過去問
出典:令和元年度 秋期 応用情報技術者試験 午前 問30(IPA)
分散トランザクション管理において、複数サイトのデータベースを更新する場合に用いられる2相コミットプロトコルに関する記述のうち、適切なものはどれか。
正解:主サイトが全ての従サイトからコミット準備完了メッセージを受け取った場合、全ての従サイトに対してコミット要求を発行する。
要点:2相コミットは全サイトの準備完了が揃って初めてコミットする
2相コミットでは、第1相で主サイトが各従サイトにコミット準備を要求し、全サイトから準備完了の応答が揃ってはじめて、第2相で全サイトにコミットを指示します。1つでも準備できないサイトがあれば、全サイトにロールバックを指示します。全員一致でなければコミットしないのが原則です。
出典:令和6年度 秋期 応用情報技術者試験 午前 問27(IPA)
2相コミットで分散トランザクションの原子性を保証する場合、ネットワーク障害の発生によって参加者のトランザクションが、コミットすべきか又はロールバックすべきかを判…
正解:調停者のトランザクションが、コミット又はロールバックの決定を参加者に送る直前に障害になった。
要点:2相コミットは決定通知前の調停者障害で参加者が不確定になる
2相コミットでは、参加者が第1相で可否を回答した後、調停者からの最終決定を待つ「不確定(インダウト)」状態になる。この状態のときに調停者が決定を送る直前に障害となると、参加者は自分ではコミットすべきかロールバックすべきか判断できず、資源を保持したままブロックされる。これが2相コミットの弱点として知られる。
出典・参考
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。