IPA過去問ドリル

令和3年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問12

テクノロジ/データベース

分散データベースのトランザクションが複数のサブトランザクションに分割され,複数のサイトで実行されるとき,トランザクションのコミット制御に関する記述のうち,適切なものはどれか。

出典:令和3年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問12

正解:イ

解説

2相コミットは,主サイト(コーディネータ)が全てのサブトランザクションに準備(コミット可否の確認)を要求し,全サイトから「コミット可」の応答を得てから,改めて全サイトにコミットの指示を出すプロトコルです。しかし,このコミット指示のメッセージがネットワーク障害などによって特定のサイトに届かない場合,そのサイトは自身の判断だけではコミットすべきかロールバックすべきかを確定できない「不確定(in-doubt)」状態に陥ることがあり,これは2相コミットの既知の限界の一つです。

選択肢ごとの解説

  • 誤り。全てのサブトランザクションから「コミット可」の応答が届いた場合,主サイトは必ず全サイトに対して一貫してコミットの指示を出すため,サブトランザクションごとに異なる指示を出すことはありません。
  • 正しい。ネットワーク障害などで主サイトからのコミット又はロールバックの指示がサブトランザクションの実行サイトに届かない場合,そのサイトは自身の判断だけではコミットとロールバックのどちらにすべきか確定できない不確定状態に陥ることがあります。
  • 誤り。2相コミットでは,一つでもサブトランザクションがコミット不可を応答すると,主サイトは全てのサブトランザクションにロールバックを指示するため,一部がロールバックされたままトランザクション全体がコミットされることはありません。
  • 誤り。1相コミットでは各サイトが他サイトの状況を確認せずに独自にコミットの判断を行うため,一部のサイトだけが障害等でコミットに失敗した場合にサイト間でデータベースの内容に矛盾が生じ得ます。サイト間の一貫性は保証されません。
データベーススペシャリストの過去問を演習モードで解く