IPA過去問ドリル

平成30年度 春期 データベーススペシャリスト試験 午前Ⅱ 問13

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

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

出典:平成30年度 春期 データベーススペシャリスト試験 午前Ⅱ 問13

正解:イ

解説

2相コミットは,全てのサイトが同一のコミット判断(コミット又はロールバックのいずれか)を下すことを保証するプロトコルですが,通信障害などによって主サイトからの最終指示がサブトランザクション実行サイトに届かないと,そのサイトはコミットすべきかロールバックすべきか判断できない「不確定(in-doubt)」状態に陥ることがあります。これが2相コミットが抱える代表的な問題点です。

選択肢ごとの解説

  • 誤り。2相コミットでは,全サイトからコミット了承応答(Yes)が届いた場合,主サイトは全サブトランザクションに対して一様にコミットを指示し,サブトランザクションごとに異なる指示(一部コミット・一部ロールバック)を出すことはありません。
  • 正しい。通信障害などで主サイトの最終指示がサブトランザクション実行サイトに届かない場合,そのサイトはコミットすべきかロールバックすべきか判断できない状態になり得ます。これは2相コミットの既知の問題点です。
  • 誤り。2相コミットの目的は,全てのサブトランザクションを一貫してコミットするかロールバックするかのいずれかにすることであり,一部がロールバックされたのにトランザクション全体がコミットされることは起こりません。
  • 誤り。1相コミットで各サイトが独自にコミット判断を行うと,あるサイトはコミットし別のサイトはロールバックするといった不整合が生じ得るため,サイト間のデータベースの一貫性は保証できません。
データベーススペシャリストの過去問を演習モードで解く