令和3年度 秋期 データベーススペシャリスト試験 午前II 問12
2025年6月30日
【問題12】
分散データベースのトランザクションが複数のサブトランザクションに分割され、複数のサイトで実行されるとき、トランザクションのコミット制御に関する記述のうち、適切なものはどれか。
2相コミットでは、サブトランザクションが実行される全てのサイトからコミット了承応答が主サイトに届いても、主サイトはサブトランザクションごとにコミット又はロールバックの異なる指示を出す場合がある。
2相コミットを用いても、サブトランザクションが実行されるサイトに主サイトの指示が届かず、サブトランザクションをコミットすべきかロールバックすべきか分からない場合がある。
2相コミットを用いると、サブトランザクションがロールバックされてもトランザクションがコミットされる場合がある。
集中型データベースのコミット制御である1相コミットで、分散データベースを構成する個々のサイトが独自にコミットを行っても、サイト間のデータベースの一貫性は保証できる。
【解説】
2相コミット (Two-Phase Commit) の特徴
2相コミットは、分散データベースにおいてトランザクションの一貫性を保証するプロトコルです。以下の2つのフェーズで構成されます:
1. 準備フェーズ (Prepare Phase)
– 主サイト(コーディネーター)が各サイト(パーティシパント)にコミット可能かを確認します。
– 各サイトは「コミット可能」または「ロールバック」の応答を返します。
2. コミットフェーズ (Commit Phase)
– 主サイトが全てのサイトから「コミット可能」の応答を受け取った場合、全サイトに「コミット」を指示します。
– いずれかのサイトが「ロールバック」を応答した場合、全サイトに「ロールバック」を指示します。
各選択肢の評価
ア: 2相コミットでは、サブトランザクションが実行される全てのサイトからコミット了承応答が主サイトに届いても、主サイトはサブトランザクションごとにコミット又はロールバックの異なる指示を出す場合がある。
誤り。2相コミットでは、一貫性を保つため、主サイトは全てのサブトランザクションに対して同じ指示(コミットまたはロールバック)を出します。
イ: 2相コミットを用いても、サブトランザクションが実行されるサイトに主サイトの指示が届かず、サブトランザクションをコミットすべきかロールバックすべきか分からない場合がある。
正しい。分散システムでは、ネットワーク障害やシステム障害により、主サイトの指示が一部のサイトに届かない場合があります。この場合、サブトランザクションがコミットすべきかロールバックすべきか分からない状態(不確定状態)が発生します。
ウ: 2相コミットを用いると、サブトランザクションがロールバックされてもトランザクションがコミットされる場合がある。
誤り。2相コミットでは、一部のサブトランザクションがロールバックされた場合、全体のトランザクションもロールバックされます。一貫性を保つため、サブトランザクションがロールバックされたままトランザクションがコミットされることはありません。
エ: 集中型データベースのコミット制御である1相コミットで、分散データベースを構成する個々のサイトが独自にコミットを行っても、サイト間のデータベースの一貫性は保証できる。
誤り。1相コミットでは、各サイトが独自にコミットを決定するため、分散データベースの一貫性を保証することはできません。一貫性を保つには、2相コミットや類似のプロトコルが必要です。
【答え】
イ: 2相コミットを用いても、サブトランザクションが実行されるサイトに主サイトの指示が届かず、サブトランザクションをコミットすべきかロールバックすべきか分からない場合がある。
出典:令和3年度 秋期 データベーススペシャリスト試験 午前II 問12