令和5年度 秋期 高度試験 午前I 問9

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

トランザクションごとのRead回数とWrite回数
図の説明テキスト

トランザクションごとのRead回数とWrite回数を示す表。

トランザクション データベースに対する Read 回数 と Write 回数
T1, T2 Read 10, Write 20
T3, T4 Read 100
T5, T6 Read 20, Write 10
時間軸に対するトランザクションの実行状態
図の説明テキスト

時間軸に対するトランザクション(T1〜T6)の実行状態を示す図。
横軸は時間で右向きの矢印。縦方向に「チェックポイント」の枠と「障害発生」の線が引かれている。

  • T1: チェックポイント前に開始し、終了(右端黒丸)している。
  • T2: チェックポイント前に開始し、チェックポイント後かつ障害発生前に終了(右端黒丸)している。
  • T3: チェックポイント後に開始し、障害発生時点まで継続している。
  • T4: チェックポイント前に開始し、障害発生時点まで継続している。
  • T5: チェックポイント後に開始し、障害発生前に終了(右端黒丸)している。
  • T6: チェックポイント後に開始し、障害発生時点まで継続している。
    凡例:
  • 右端に黒丸のない直線は「コミットされていないトランザクションを示す。」
  • 右端に黒丸のある直線は「コミットされたトランザクションを示す。」
解答・解説

正解: ア. ロールフォワード: T2, T5 / ロールバック: T6

DBMSの障害回復処理について

システム障害発生時のデータベースの回復には、チェックポイントとトランザクションの完了状態に応じてロールフォワードとロールバックが行われます。

  • ロールフォワード(前進復帰): チェックポイント以降、障害発生前までにコミット(完了)したトランザクションが対象です。ログファイルを用いて、障害直前の完了状態まで処理を再現します。

  • ロールバック(後退復帰): 障害発生時に実行中(未完了)だったトランザクションが対象です。ログファイルを用いて、トランザクション開始前の状態に処理を取り消します。

  • 対象外(回復不要): チェックポイント取得時点ですでに完了しているトランザクションは、データがデータベースに安全に書き込まれているため、回復処理の対象外となります。

各選択肢の解説

各トランザクションの状態と適切な回復処理の組合せは以下の通りです。

  • ア: 正解です。T2およびT5は障害発生前に処理が完了しているためロールフォワードの対象となります。T6は障害発生時点で実行中(未完了)であるためロールバックの対象となります。

  • イ: T3がロールバック対象に含まれています。T3は障害発生時点で実行中(未完了)ですが、Read だけで Write(更新)をしていないため、取り消す更新がなく回復対象外です。したがって誤りです。

  • ウ: T1がロールフォワード対象に含まれています。T1はチェックポイント取得前に完了しており既にデータベースへ反映済みのため、ロールフォワードは不要であり誤りです。

  • エ: 回復不要であるT1をロールフォワード対象とし、対象外であるT3をロールバック対象としているため誤りです。

Spineチーム