Skip to the content.

最終更新日:2026年7月15日

まず結論

2相コミットとは、分散データベースで、複数サイトの更新を「全員で確定」または「全員で中止」にそろえる仕組みです。

基本情報技術者試験では、次の表現が決め手になります。

複数サイトへ更新可能か問い合わせる
+
すべてのサイトが可能なら確定する
→ 2相コミット

いきなり更新を確定せず、まず全参加者へ確認し、その後に全体を確定または中止する点が重要です。

直感的な説明

2相コミットは、全員に準備できたか確認してから、一斉に実行する仕組みと考えると分かりやすいです。

例えば、複数の支店で同じ取引に関するデータを更新するとします。

支店A:更新成功
支店B:更新失敗

このように一部だけ更新されると、データのつじつまが合わなくなります。

そこで、最初に全支店へ確認します。

調停者:
「全員、更新を確定できる状態ですか?」

全員が「できます」と答えた場合だけ、確定を指示します。

全員が可
→ 全員コミット

1つでも「できません」があれば、全体を中止します。

1つでも不可
→ 全員ロールバック

定義・仕組み

2相コミットでは、中心となる調停者と、更新に参加する参加者が登場します。

役割 すること
調停者 各参加者へ可否を問い合わせ、最終指示を出す
参加者 更新を確定できるか回答し、最終指示に従う

処理は2段階に分かれます。

第1相:準備・確認

調停者が、各参加者にコミット可能か問い合わせます。

参加者は、更新を確定できる状態なら「可」、できない場合は「不可」と回答します。

この段階では、まだ最終確定しません。

調停者
→ 参加者A:コミット可能?
→ 参加者B:コミット可能?
→ 参加者C:コミット可能?

第2相:確定・中止

すべての参加者が「可」なら、調停者は全員へコミットを指示します。

A:可
B:可
C:可
→ 全員コミット

1つでも「不可」がある場合は、全員へロールバックを指示します。

A:可
B:不可
C:可
→ 全員ロールバック

2相コミットは、この仕組みによって、分散環境でもトランザクションの原子性を保とうとします。

全サイト更新
または
全サイト未更新

のどちらかにそろえます。

公式の出題範囲やシラバスは、IPA:基本情報技術者試験から確認できます。

科目Aでどう出る?

科目Aでは、問題文の表現から方式を選ばせる問題が中心です。

問題文の表現 選ぶ用語
複数サイトに更新可能か問い合わせる 2相コミット
全参加者の合意後に一斉に確定する 2相コミット
同じデータへの同時アクセスを制限する 排他制御
未確定の更新を処理前へ戻す ロールバック
ログを使って更新を再実行し復旧する ロールフォワード

試験では、次の3つを見つけます。

複数サイト
全参加者へ確認
全員可なら確定

この3つがそろえば、2相コミットを疑います。

調停者と参加者を読み分ける

問い合わせる側
→ 調停者

可否を回答する側
→ 参加者

調停者は、全参加者から「可」を受け取ったときだけコミットを指示します。

第1相と第2相を読み分ける

第1相
→ コミット可能か確認する

第2相
→ コミットまたはロールバックを指示する

「確認」と「確定」を混同しないことがポイントです。

どんな場面で使う?

2相コミットは、1つのトランザクションが複数のデータベースやサイトにまたがる場合に使います。

例えば、次のような処理です。

拠点Aの在庫を減らす
+
拠点Bの配送情報を登録する
+
本部の売上を記録する

一部だけ成功すると不整合が起こるため、全体の結果をそろえる必要があります。

ただし、複数サイトとの通信や応答待ちが必要になるため、単一サイトの通常のコミットより処理は複雑になります。

よくある誤解・混同

2相コミットと排他制御

用語 目的
2相コミット 複数サイトの更新結果をそろえる
排他制御 同じデータへの同時アクセスを制御する
全員の合意を取る
→ 2相コミット

他の処理を待たせる
→ 排他制御

2相コミットとロールバック

ロールバックは、処理を取り消して開始前の状態へ戻す操作です。

2相コミットでは、1つでも「不可」があればロールバックを指示しますが、2相コミットそのものは全参加者へ確認して、全体の最終結果を決める方式です。

更新前ログで元に戻す
→ ロールバック

複数サイトへ可否を確認する
→ 2相コミット

2相コミットとロールフォワード

ロールフォワードは、更新後ログを使って、バックアップ取得後の更新を再実行する復旧方法です。

用語 向き
ロールバック 更新を取り消して戻す
ロールフォワード ログで更新を進めて復旧する
2相コミット 複数サイトの確定・中止をそろえる

2相コミットと通常のコミット

通常のコミット
→ 1つのトランザクション結果を確定する

2相コミット
→ 複数サイトの合意を確認して全体を確定する

「コミット」という名前だけで判断せず、複数サイトと可否確認があるかを見ます。

まとめ(試験直前用)

  • 2相コミットは、分散DBで複数サイトの更新結果をそろえる方式
  • 第1相でコミット可能か確認する
  • 第2相でコミットまたはロールバックを指示する
  • 全参加者が可ならコミット、1つでも不可ならロールバック
  • 同時アクセスの制御は排他制御
  • 更新取消しはロールバック、ログによる再実行はロールフォワード

© 2024-2026 stemtazoo. All rights reserved.