令和3年秋期試験問題 午前Ⅱ 問12

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

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

この問題の出題歴


Pagetop