令和5年度 秋期 応用情報技術者試験 午前 問30

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

トランザクションとデータベースに対する 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
イ T2, T5 T3, T6
ウ T1, T2, T5 T6
エ T1, T2, T5 T3, T6
解答・解説

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

正解の根拠

DBMS(データベース管理システム)において、システム障害発生後にデータベースを矛盾のない状態に回復するためには、ロールフォワードとロールバックの2つの処理を適切に組み合わせる必要があります。

  • ロールフォワード(前進復帰): 障害発生前にコミット(処理完了)済のトランザクションが対象です。ログファイルの更新後ジャーナルを用いて、完了したトランザクションの結果を再反映します。
  • ロールバック(後退復帰): 障害発生時に実行中(未コミット)だったトランザクションが対象です。ログファイルの更新前ジャーナルを用いて、処理開始前の状態に戻します。
  • 回復処理不要: チェックポイントより前に完了しているトランザクションは、すでにディスクへの書き込みが完了しているため、復旧処理は不要です。

本問の正解(ア)の構成から、各トランザクションの状態は以下のように判断できます。

  • T2, T5: 障害発生前にコミット済であるためロールフォワードの対象
  • T6: 障害発生時に実行中であったためロールバックの対象

各選択肢の解説

  • ア(正解): ロールフォワード(T2, T5)、ロールバック(T6)の組み合わせであり、各トランザクションの状態と回復処理の原則に一致しています。
  • イ: T3がロールバック対象に含まれていますが、T3は障害発生時点で未コミットでも Read だけで Write(更新)をしていないため、取り消す更新がなく対象外です。したがって誤りです。
  • ウ: ロールフォワード対象にT1が含まれています。T1はチェックポイント前に完了しているトランザクションであり、回復処理は不要なため誤りです。
  • エ: T1(回復処理不要)やT3が含まれている点で誤りです。

Spineチーム