令和3年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問12
テクノロジ/データベース分散データベースのトランザクションが複数のサブトランザクションに分割され,複数のサイトで実行されるとき,トランザクションのコミット制御に関する記述のうち,適切なものはどれか。
出典:令和3年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問12
- ア2 相コミットでは,サブトランザクションが実行される全てのサイトからコミット了承応答が主サイトに届いても,主サイトはサブトランザクションごとにコミット又はロールバックの異なる指示を出す場合がある。
- イ2 相コミットを用いても,サブトランザクションが実行されるサイトに主サイトの指示が届かず,サブトランザクションをコミットすべきかロールバックすべきか分からない場合がある。
- ウ2 相コミットを用いると,サブトランザクションがロールバックされてもトランザクションがコミットされる場合がある。
- エ集中型データベースのコミット制御である 1 相コミットで,分散データベースを構成する個々のサイトが独自にコミットを行っても,サイト間のデータベースの一貫性は保証できる。
正解:イ
解説
2相コミットは,主サイト(コーディネータ)が全てのサブトランザクションに準備(コミット可否の確認)を要求し,全サイトから「コミット可」の応答を得てから,改めて全サイトにコミットの指示を出すプロトコルです。しかし,このコミット指示のメッセージがネットワーク障害などによって特定のサイトに届かない場合,そのサイトは自身の判断だけではコミットすべきかロールバックすべきかを確定できない「不確定(in-doubt)」状態に陥ることがあり,これは2相コミットの既知の限界の一つです。
選択肢ごとの解説
- ア誤り。全てのサブトランザクションから「コミット可」の応答が届いた場合,主サイトは必ず全サイトに対して一貫してコミットの指示を出すため,サブトランザクションごとに異なる指示を出すことはありません。
- イ正しい。ネットワーク障害などで主サイトからのコミット又はロールバックの指示がサブトランザクションの実行サイトに届かない場合,そのサイトは自身の判断だけではコミットとロールバックのどちらにすべきか確定できない不確定状態に陥ることがあります。
- ウ誤り。2相コミットでは,一つでもサブトランザクションがコミット不可を応答すると,主サイトは全てのサブトランザクションにロールバックを指示するため,一部がロールバックされたままトランザクション全体がコミットされることはありません。
- エ誤り。1相コミットでは各サイトが他サイトの状況を確認せずに独自にコミットの判断を行うため,一部のサイトだけが障害等でコミットに失敗した場合にサイト間でデータベースの内容に矛盾が生じ得ます。サイト間の一貫性は保証されません。