データベーススペシャリスト試験 2018年 午前213


分散データベースのトランザクションは複数のサブトランザクションに分割され、複数のサイトで実行される。このとき、トランザクションのコミット制御に関する記述のうち、適切なものはどれか。
2相コミットでは、サブトランザクションが実行される全てのサイトからコミット了承応答が主サイトに届いても、主サイトはサブトランザクションごとにコミット又はロールバックの異なる指示を出す場合がある。
2相コミットを用いても、サブトランザクションが実行されるサイトに主サイトの指示が届かず、サブトランザクションをコミットすべきかロールバックすべきか分からない場合がある。(正解)
2相コミットを用いると、サブトランザクションがロールバックされてもトランザクションがコミットされる場合がある。
集中型データベースのコミット制御である1相コミットで、分散データベースを構成する個々のサイトが独自にコミットを行っても、サイト間のデータベースの一貫性は保証できる。

解説

分散データベースのトランザクションのコミット制御【午前2 解説】

要点まとめ

  • 結論:分散トランザクションの2相コミットでは、主サイトの指示が届かない場合、サブトランザクションはコミットかロールバックか判断できないことがある。
  • 根拠:2相コミットは全サイトの準備完了を確認後にコミット指示を出すが、通信障害などで指示が届かないケースが存在する。
  • 差がつくポイント:2相コミットの仕組みと通信障害時の挙動を正確に理解し、各選択肢の誤りを見抜くことが重要。

正解の理由

選択肢イは、2相コミットの特徴を正しく表しています。2相コミットは「準備フェーズ」と「コミットフェーズ」の2段階で処理を行いますが、主サイトからの最終指示がサブサイトに届かない場合、サブサイトはコミットすべきかロールバックすべきか判断できず、待機状態になることがあります。これは分散環境での通信障害や障害復旧時に起こりうる問題であり、2相コミットの欠点として知られています。

よくある誤解

2相コミットは必ず全サイトで一貫したコミットやロールバックが行われると誤解されがちですが、通信障害時には判断不能状態が発生することがあります。

解法ステップ

  1. 分散トランザクションが複数のサブトランザクションに分割されることを理解する。
  2. 2相コミットの「準備フェーズ」と「コミットフェーズ」の流れを確認する。
  3. 各選択肢の内容が2相コミットの仕組みと矛盾していないか検証する。
  4. 通信障害時の挙動に関する知識を活用し、正しい記述を選ぶ。

選択肢別の誤答解説

  • ア: 2相コミットでは全サブトランザクションが同一のコミットまたはロールバック指示を受けるため、異なる指示を出すことはない。
  • イ: 主サイトの指示が届かない場合、サブトランザクションは判断不能状態になることがあるため正しい。
  • ウ: 2相コミットは全サブトランザクションの整合性を保証するため、ロールバックされたサブトランザクションがあってもトランザクション全体がコミットされることはない。
  • エ: 1相コミットは集中型データベース向けであり、分散環境で各サイトが独自にコミットすると一貫性は保証できない。

補足コラム

2相コミットは分散トランザクションの整合性を保つ基本的なプロトコルですが、通信障害時にサブサイトが判断不能になる「ブロッキング問題」があります。これを解決するために3相コミットや分散トランザクションの代替技術が研究されています。

FAQ

Q: 2相コミットの「準備フェーズ」とは何ですか?
A: 各サブトランザクションがコミット可能かどうかを確認し、準備完了の応答を主サイトに返す段階です。
Q: 2相コミットで通信障害が起きた場合、どうなりますか?
A: 主サイトの最終指示が届かず、サブサイトはコミットかロールバックか判断できず待機状態になります。

関連キーワード: 分散トランザクション, 2相コミット, コミット制御, トランザクション整合性, ブロッキング問題
← 前の問題へ次の問題へ →

©︎2025 情報処理技術者試験対策アプリ