2相コミットとは?にそうコミット
2相コミットとは、複数のサイトにまたがる更新を一括して確定するための手順で、調停者が第1相(準備相)で全サイトにコミット可否を問い合わせ、全員が可と答えたときだけ第2相(コミット相)でコミットを指示する。1つでも不可または無応答があればすべてロールバックさせる。分散トランザクションの原子性を保証する基本方式で、XAとして標準化されている。
最終更新:2026-10-06
この語が出る過去問を解く →背景
サイトごとに個別にコミットすると、途中でネットワークやサイトが落ちたときに片方だけが確定し、本社の在庫は減ったのに支店の出庫が残っていない、という業務上ありえない状態が残る。あとから突き合わせて直すのは費用がかかるうえ、その間の照会は誤った値を返す。そこで「全員が確定できると約束してから、全員に確定させる」と段階を2つに割り、確定の可否と確定そのものを分離した。
具体例
本社と支店のデータベースを同時に更新する処理で、調停者が両サイトに準備を指示し、どちらも「可」と返した場合だけコミットを指示する。支店側でディスクが満杯なら「不可」が返り、本社側の更新も取り消される。
試験での引っ掛け
準備相で「可」と答えたサイトは、指示が届くまでコミットもロールバックもできない不確定状態(ブロッキング)に置かれ、資源を握ったまま待ち続ける。調停者が障害で指示を出せないとこの待ちが解けない点が最大の弱点で、これを改善したのが3相コミットである。
関連用語
出た過去問
出典:平成28年度 春期 データベーススペシャリスト試験 午前Ⅱ 問14(IPA)
分散データベースシステムにおいて、複数のデータベースを更新する場合に用いられる2相コミットの処理手順として、適切なものはどれか。
正解:主サイトは、コミットが可能であることを各データベースサイトに確認した後、コミットを発行する。
要点:2相コミットは全サイトの可否確認後にコミットを指示する
2相コミットは、まず主サイトが全サイトにコミット可能かを問い合わせて可否を集める第1相(準備フェーズ)と、全サイトから可の応答が得られた場合にコミットを指示する第2相(コミットフェーズ)から成る。1サイトでも不可なら全サイトへロールバックを指示し、分散したデータベースの整合性を保つ。
出典:平成29年度 春期 データベーススペシャリスト試験 午前Ⅱ 問14(IPA)
データベース更新における2相コミットに関する記述のうち、適切なものはどれか。
正解:2相コミットを行うためには、同時に更新しようとする分散データベースの全てが更新可能かどうかを判断するためのやり取りが必要である。
要点:2相コミットは全サイトへの可否確認のやり取りが前提
2相コミットでは、第1相で調停役のサイトが関係する全サイトにコミット可能かどうかを問い合わせ、その応答を集めてから第2相でコミットまたはロールバックを指示する。この可否確認のやり取りがあるからこそ、分散した複数のデータベースの更新を一括して確定・取消しできる。
出典:平成30年度 春期 データベーススペシャリスト試験 午前Ⅱ 問13(IPA)
分散データベースのトランザクションは複数のサブトランザクションに分割され、複数のサイトで実行される。このとき、トランザクションのコミット制御に関する記述のうち、…
正解:2相コミットを用いても、サブトランザクションが実行されるサイトに主サイトの指示が届かず、サブトランザクションをコミットすべきかロールバックすべきか分からない場合がある。
要点:2相コミットでも指示が届かないと判断できず待たされる
2相コミットには、了承応答を返した後に主サイトからの最終指示が届かないと、そのサイトがコミットもロールバックもできずロックを保持したまま待ち続けるという弱点がある。これをブロッキングと呼び、2相コミットでも完全には避けられない。
出典:平成31年度 春期 データベーススペシャリスト試験 午前Ⅱ 問15(IPA)
分散データベースシステムにおいて、複数のデータベースサイトを更新する場合に用いられる2相コミットの処理手順のうち、適切なものはどれか。
正解:主サイトは、コミットが可能であることを各データベースサイトに確認した後、コミットを発行する。
要点:2相コミットは可否確認の相とコミット指示の相から成る
2相コミットでは、第1相で主サイトが各サイトにコミット可能かを問い合わせて可否の応答を集め、全て可であれば第2相でコミットを指示する。1サイトでも不可であれば全サイトにロールバックを指示することで、分散データベース全体の整合性を保つ。
出典:令和3年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問12(IPA)
分散データベースのトランザクションが複数のサブトランザクションに分割され、複数のサイトで実行されるとき、トランザクションのコミット制御に関する記述のうち、適切な…
正解:2相コミットを用いても、サブトランザクションが実行されるサイトに主サイトの指示が届かず、サブトランザクションをコミットすべきかロールバックすべきか分からない場合がある。
要点:2相コミットは指示不達時に不確定で待つブロッキング問題を残す
2相コミットでは、参加サイトが了承を返した後に主サイトからの最終指示を待つ。この待ち状態のときに主サイトが障害を起こしたり通信が途切れたりすると、参加サイトはコミットすべきかロールバックすべきか判断できず、資源をロックしたまま待ち続けることになる。これがブロッキング問題であり、イが正しい。
出典・参考
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。