平成30年度 春期 データベーススペシャリスト試験 午前Ⅱ 問13
テクノロジ/データベース分散データベースのトランザクションは複数のサブトランザクションに分割され,複数のサイトで実行される。このとき,トランザクションのコミット制御に関する記述のうち,適切なものはどれか。
出典:平成30年度 春期 データベーススペシャリスト試験 午前Ⅱ 問13
- ア2相コミットでは,サブトランザクションが実行される全てのサイトからコミット了承応答が主サイトに届いても,主サイトはサブトランザクションごとにコミット又はロールバックの異なる指示を出す場合がある。
- イ2相コミットを用いても,サブトランザクションが実行されるサイトに主サイトの指示が届かず,サブトランザクションをコミットすべきかロールバックすべきか分からない場合がある。
- ウ2相コミットを用いると,サブトランザクションがロールバックされてもトランザクションがコミットされる場合がある。
- エ集中型データベースのコミット制御である1相コミットで,分散データベースを構成する個々のサイトが独自にコミットを行っても,サイト間のデータベースの一貫性は保証できる。
正解:イ
解説
2相コミットは,全てのサイトが同一のコミット判断(コミット又はロールバックのいずれか)を下すことを保証するプロトコルですが,通信障害などによって主サイトからの最終指示がサブトランザクション実行サイトに届かないと,そのサイトはコミットすべきかロールバックすべきか判断できない「不確定(in-doubt)」状態に陥ることがあります。これが2相コミットが抱える代表的な問題点です。
選択肢ごとの解説
- ア誤り。2相コミットでは,全サイトからコミット了承応答(Yes)が届いた場合,主サイトは全サブトランザクションに対して一様にコミットを指示し,サブトランザクションごとに異なる指示(一部コミット・一部ロールバック)を出すことはありません。
- イ正しい。通信障害などで主サイトの最終指示がサブトランザクション実行サイトに届かない場合,そのサイトはコミットすべきかロールバックすべきか判断できない状態になり得ます。これは2相コミットの既知の問題点です。
- ウ誤り。2相コミットの目的は,全てのサブトランザクションを一貫してコミットするかロールバックするかのいずれかにすることであり,一部がロールバックされたのにトランザクション全体がコミットされることは起こりません。
- エ誤り。1相コミットで各サイトが独自にコミット判断を行うと,あるサイトはコミットし別のサイトはロールバックするといった不整合が生じ得るため,サイト間のデータベースの一貫性は保証できません。