戦国IT - 情報処理技術者試験の過去問対策サイト
お知らせお問い合わせ料金プラン

データベーススペシャリスト 2011年 午前212


問題文

分散データベースシステムにおいて、複数のデータベースを更新する場合に用いられる2相コミットの処理手順として、適切なものはどれか。ここで、トランザクションの中で実行される処理内容は次のとおりとする。

選択肢

主サイトが各データベースサイトにコミット準備要求を発行した場合、 各データベースサイトは、 準備ができていない場合だけ応答を返す。
主サイトは、 各データベースサイトにコミットが可能であることを確認した後、 コミットを発行する。(正解)
主サイトは、 各データベースサイトにコミットを発行し、 コミットが失敗した場合には、 再度コミットを発行する。
主サイトは、 各データベースサイトのロックに成功した後、コミットを発行し、 各データベースサイトをアンロックする。

分散データベースシステムにおける2相コミットの処理手順【午前2 解説】

要点まとめ

  • 結論:2相コミットは「コミット準備完了の確認後にコミット命令を発行」する手順が正しいです。
  • 根拠:分散トランザクションの整合性を保つため、全サイトの準備完了を確認してから一斉にコミットを行います。
  • 差がつくポイント:準備段階での応答の意味と、コミット失敗時の再試行の誤解を避けることが重要です。

正解の理由

選択肢イは、主サイトが各データベースサイトに「コミット可能かどうか」を確認し、全サイトが準備完了を返した後にコミット命令を発行する流れを正確に示しています。これが2相コミットの基本的なプロトコルであり、トランザクションの原子性を保証します。

よくある誤解

2相コミットでは、準備ができていない場合にだけ応答を返すわけではなく、全サイトからの応答を待ちます。また、コミット失敗時に再度コミットを発行することはありません。

解法ステップ

  1. 主サイトが各データベースサイトに「コミット準備要求(prepare)」を送信する。
  2. 各サイトはトランザクションの準備ができていれば「準備完了(yes)」を返し、できなければ「中止(no)」を返す。
  3. 主サイトは全サイトから「準備完了」の応答を受け取った場合、コミット命令を送信する。
  4. 各サイトはコミット命令を受けてトランザクションを確定し、応答を返す。
  5. いずれかのサイトが「中止」を返した場合、主サイトは全サイトにロールバック命令を送る。

選択肢別の誤答解説

  • ア: 「準備ができていない場合だけ応答を返す」は誤り。全サイトから応答を受け取り、準備完了か否かを判断します。
  • : 正解。全サイトの準備完了を確認後にコミットを発行する正しい手順です。
  • ウ: コミット失敗時に再度コミットを発行するのは誤り。失敗時はロールバックを行います。
  • エ: ロック成功後に即コミットを発行するのは誤り。2相コミットでは準備段階とコミット段階を分けて管理します。

補足コラム

2相コミットは分散トランザクションの整合性を保つための標準的なプロトコルです。1相目で「準備完了」を確認し、2相目で「コミットまたはロールバック」を決定します。これにより、全サイトが同じ状態になることを保証しますが、ネットワーク障害時にはデッドロックや待機状態が発生するリスクもあります。

FAQ

Q: 2相コミットで全サイトが準備完了しなかった場合はどうなる?
A: 主サイトは全サイトにロールバック命令を送り、トランザクションを中止します。
Q: 2相コミットと3相コミットの違いは?
A: 3相コミットは2相コミットの問題点(デッドロックなど)を改善するために、さらに段階を増やしたプロトコルです。

関連キーワード: 分散トランザクション、2相コミット、データベース整合性、トランザクション管理、分散システム
← 前の問題へ次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

データベーススペシャリスト
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

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

このサイトについてプライバシーポリシー利用規約特商法表記開発者について