平成24年度 春期 データベーススペシャリスト試験 午前Ⅱ 問12
テクノロジ/データベース分散データベースのトランザクションは複数のサブトランザクションに分割され,複数のサイトで実行される。このとき,トランザクションのコミット制御に関する記述のうち,適切なものはどれか。
出典:平成24年度 春期 データベーススペシャリスト試験 午前Ⅱ 問12
- ア2相コミットでは,全てのサブトランザクションからコミット了承応答が届いても,必ずしも全てのサブトランザクションをコミットするとは限らない。
- イ2相コミットを用いても,サブトランザクションが実行されるサイトに主サイトの指示が届かず,サブトランザクションをコミットすべきかロールバックすべきか分からない場合がある。
- ウ2相コミットを用いると,サブトランザクションがロールバックされてもトランザクションがコミットされる場合がある。
- エ集中型データベースのコミット制御である1相コミットで,個々のサイトが独自に分散データベースのコミットを行っても,サイト間のデータベースの一貫性は保証できる。
正解:イ
解説
分散データベースの2相コミットでは,調停者(主サイト)が各参加者(サブトランザクションを実行するサイト)にコミットの可否を問い合わせ,全ての参加者からコミット了承(準備完了)の応答が届いた場合に限り,コミットの決定を各参加者に送信する。しかし,参加者が準備完了の応答を返した後,調停者からの最終決定(コミット又はロールバック)が何らかの障害でその参加者に届かない場合,その参加者はロックを保持したまま,自らコミットすべきかロールバックすべきかを判断できない「判断不能(in-doubt)」の状態に陥ることがある。これは2相コミットに内在する既知の問題点である。
選択肢ごとの解説
- ア誤り。2相コミットでは,全てのサブトランザクションからコミット了承応答が届いた場合,調停者は原子性を保証するために,原則として全てのサブトランザクションをコミットさせる決定を行う。応答がそろっているのにコミットしないサブトランザクションが生じるのは,2相コミットの正常な動作ではない。
- イ正しい。2相コミットを用いていても,参加者がコミット了承の応答を返した後,調停者からの最終的な決定(指示)がネットワーク障害などで参加者に届かない場合,参加者はコミットすべきかロールバックすべきか自ら判断できない状態に陥ることがある。
- ウ誤り。2相コミットは,全てのサブトランザクションが同じ結論(全てコミット又は全てロールバック)に至ることを保証するプロトコルであり,一部のサブトランザクションだけがロールバックされたにもかかわらずトランザクション全体がコミットされるという事態は,2相コミットが防ごうとしている状況そのものであり,正常には発生しない。
- エ誤り。1相コミットは単一サイト(集中型データベース)向けのコミット制御であり,分散環境で各サイトが互いに独立してコミットを行うと,一部のサイトだけが更新を確定し他のサイトが確定しない(あるいはロールバックする)といった不整合が生じ得るため,サイト間の一貫性を保証することはできない。