平成24年春期試験問題 午前Ⅱ 問12

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

  • 2相コミットでは,全てのサブトランザクションからコミット了承応答が届いても,必ずしも全てのサブトランザクションをコミットするとは限らない。
  • 2相コミットを用いても,サブトランザクションが実行されるサイトに主サイトの指示が届かず,サブトランザクションをコミットすべきかロールバックすべきか分からない場合がある。
  • 2相コミットを用いると,サブトランザクションがロールバックされてもトランザクションがコミットされる場合がある。
  • 集中型データベースのコミット制御である1相コミットで,個々のサイトが独自に分散データベースのコミットを行っても,サイト間のデータベースの一貫性は保証できる。
正解 問題へ
分野:テクノロジ系
中分類:データベース
小分類:トランザクション処理
解説
  • 2相コミットでは、全てのサブトランザクションが一律でコミット又はアボートのどちらかで終了します。全てのサブトランザクションからコミット了承応答を受け取った主サイトは、コミット実行メッセージをブロードキャストします。
  • 正しい。主サイトにコミットの可否を応答したサブトランザクションは、いつでもコミットまたはロールバックが可能なセキュア状態になります。この状態は主サイトからの指示を受け取るまで何の処理も行えません。
    このため各サブトランザクションからの応答を受けとった主サイトが、行うべきアクションを各サイトに送信する直前(第2相の開始時)にダウンすると、主サイトからのメッセージがサブトランザクションに届かず待ち状態のままになってしまいます。
    12.png
  • 2相コミットでは、全てのサブトランザクションが一律でコミット又はアボートのどちらかで終了します。1つのサブトランザクションがロールバックされた場合、他のサブトランザクションにもアボートメッセージが通達されロールバックが実行されます。
  • サブトランザクションは、1つのトランザクションを各データベースサイトが担当する処理ごとに分割したものです。一部のサブトランザクションだけがコミットされ、他のサブトランザクションがロールバックされるとデータベースに不整合が生じる可能性があります。また一部の処理だけがコミットされた状態はトランザクションの原子性にも反します。

この問題の出題歴


Pagetop