平成18年 春期 ソフトウェア開発技術者 午前 問68

DBMSをシステム障害発生後に再立上げするとき、前進復帰(ロールフォワード)すべきトランザクションと後退復帰(ロールバック)すべきトランザクションの組合せとして、適切なものはどれか。
ここで、トランザクションの中で実行される処理内容は次のとおりとする。

トランザクション データベースに対するRead回数とWrite回数
T1、T2 Read 10、Write 20
T3、T4 Read 100
T5、T6 Read 20、Write 10

前進復帰 後退復帰
T2、T5 T6
T2、T5 T3、T6
T1、T2、T5 T6
T1、T2、T5 T3、T6


答え ア


解説
各トランザクションについて考える。

  • T1
    チェックポイントの前にコミットしているので、復帰処理は不要。
  • T2
    チェックポイントと障害発生の間でコミットしているので前進復帰が必要。
  • T3
    障害発生時点で処理が完了していないが、T3の処理はReadのみなので復帰処理は不要。
  • T4
    障害発生時点で処理が完了していないが、T4の処理はReadのみなので復帰処理は不要。
  • T5
    チェックポイントと障害発生の間でコミットしているので前進復帰が必要。
  • T6
    障害発生時点で処理が完了していないので後退復帰が必要。
したがって、前進復帰はT2とT5、後退復帰はT6(ア)である。


キーワード
・データベースの復旧

キーワードの解説
  • データベースの復旧
    データベースに障害が発生した場合、障害発生直前のチェックポイント時点まではデータを戻すことができる。
    チェックポイントから障害発生まででコミットまで行ったトランザクションは、障害発生時には処理が完了しているので、データベースの更新ログを用いて前進復帰する。
    また、障害発生時点で処理中のトランザクションは、データベースの更新ログを用いて後退復帰する。

もっと、「データベースの復旧」について調べてみよう。

戻る 一覧へ 次へ