IPA過去問ドリル

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

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

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

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

正解:イ

解説

2相コミットでは,主サイトがまず各サイトにコミット準備ができているかを確認する第1相(準備フェーズ)を行い,全サイトから準備完了の応答を得た後に,第2相としてコミットを指示する。もし主サイトが全サイトからの準備完了応答を受け取った直後に障害で停止するなどした場合,各サブトランザクションを実行しているサイトは,主サイトからのコミットまたはロールバックの最終的な指示を受け取れず,どちらの処理をすべきか判断できない「不確定(in-doubt)」状態に陥ることがある。これは2相コミットに内在する既知の問題点(ブロッキング問題)である。

選択肢ごとの解説

  • 誤り。2相コミットでは,全てのサイトからコミット了承応答が届いた場合,主サイトは全てのサブトランザクションに対して同じ指示(全てコミット)を出す。サブトランザクションごとに異なる指示を出すことはない。
  • 正しい。2相コミットを用いていても,全サイトが準備完了を応答した後に主サイトが障害などで指示を送れなくなると,サブトランザクションが実行されるサイトは,コミットすべきかロールバックすべきか分からない不確定な状態になることがある。
  • 誤り。2相コミットは,あるサブトランザクションがロールバックされた場合には,トランザクション全体(他の全サブトランザクションを含む)もロールバックされるように制御するプロトコルであり,一部だけロールバックされて全体がコミットされることはない。
  • 誤り。1相コミットで各サイトが独自にコミットを行うと,一部のサイトだけがコミットに成功し他は失敗するといった事態が起こり得るため,サイト間でのデータベースの一貫性を保証することはできない。
データベーススペシャリストの過去問を演習モードで解く