平成27年度 春期 データベーススペシャリスト試験 午前Ⅱ 問12
テクノロジ/データベース分散データベースのトランザクションは複数のサブトランザクションに分割され,複数のサイトで実行される。このとき,トランザクションのコミット制御に関する記述のうち,適切なものはどれか。
出典:平成27年度 春期 データベーススペシャリスト試験 午前Ⅱ 問12
- ア2相コミットでは,サブトランザクションが実行される全てのサイトからコミット了承応答が主サイトに届いても,主サイトはサブトランザクションごとにコミット又はロールバックの異なる指示をする場合がある。
- イ2相コミットを用いても,サブトランザクションが実行されるサイトに主サイトの指示が届かず,サブトランザクションをコミットすべきかロールバックすべきか分からない場合がある。
- ウ2相コミットを用いると,サブトランザクションがロールバックされてもトランザクションがコミットされる場合がある。
- エ集中型データベースのコミット制御である1相コミットで,個々のサイトが独自に分散データベースのコミットを行っても,サイト間のデータベースの一貫性は保証できる。
正解:イ
解説
2相コミットでは,主サイトがまず各サイトにコミット準備ができているかを確認する第1相(準備フェーズ)を行い,全サイトから準備完了の応答を得た後に,第2相としてコミットを指示する。もし主サイトが全サイトからの準備完了応答を受け取った直後に障害で停止するなどした場合,各サブトランザクションを実行しているサイトは,主サイトからのコミットまたはロールバックの最終的な指示を受け取れず,どちらの処理をすべきか判断できない「不確定(in-doubt)」状態に陥ることがある。これは2相コミットに内在する既知の問題点(ブロッキング問題)である。
選択肢ごとの解説
- ア誤り。2相コミットでは,全てのサイトからコミット了承応答が届いた場合,主サイトは全てのサブトランザクションに対して同じ指示(全てコミット)を出す。サブトランザクションごとに異なる指示を出すことはない。
- イ正しい。2相コミットを用いていても,全サイトが準備完了を応答した後に主サイトが障害などで指示を送れなくなると,サブトランザクションが実行されるサイトは,コミットすべきかロールバックすべきか分からない不確定な状態になることがある。
- ウ誤り。2相コミットは,あるサブトランザクションがロールバックされた場合には,トランザクション全体(他の全サブトランザクションを含む)もロールバックされるように制御するプロトコルであり,一部だけロールバックされて全体がコミットされることはない。
- エ誤り。1相コミットで各サイトが独自にコミットを行うと,一部のサイトだけがコミットに成功し他は失敗するといった事態が起こり得るため,サイト間でのデータベースの一貫性を保証することはできない。