戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

応用情報技術者 2016年 秋期 午前230


問題文

DBMS をシステム障害発生後に再立上げするとき、ロールフォワードすべきトランザクションとロールバックすべきトランザクションの組合せとして、適切なものはどれか。ここで、トランザクションの中で実行される処理内容は次のとおりとする。
応用情報技術者 2016年 秋期 午前2 問30の問題画像応用情報技術者 2016年 秋期 午前2 問30の選択肢の画像

選択肢

(正解)

🔒 解説は解答すると表示されます

クラッシュリカバリ判定【午前2解説】

正解の理由

図から、チェックポイント時点以降にコミットしたトランザクションは T2 と T5、障害時に未コミットでかつ書込みを行っているトランザクションは T6 である。したがって、コミット済みでチェックポイント以降の更新をディスクへ反映(ロールフォワード)すべき対象は T2 と T5、未コミットで更新の取り消し(ロールバック)を行うべき対象は T6 である。以上より選択肢 が正しい。
(補足)T3・T4 は図示ではチェックポイントを越えて未コミットのまま障害になっているが、与えられた I/O 表では「Read のみ」で書込み(更新)が一切ないため、データベースに対する変更を行っておらずロールバック対象にはならない。

解法ステップ

  1. チェックポイントの位置と各トランザクションのコミット時点を確認する。
    • チェックポイント前にコミット:その更新はディスクに反映済み(通常は REDO 不要)。
    • チェックポイント後にコミット:ログに残る更新を再適用(REDO/ロールフォワード)する必要がある。
  2. 障害時に未コミットのトランザクションを特定する。
    • 未コミットかつ更新(Write)を行っているものは UNDO(ロールバック)する必要がある。
    • 未コミットでも更新がない(Read のみ)なら、元に戻すべき変更が存在しないため UNDO は不要。
  3. 与えられた表から書込みの有無を確認し、上記基準を適用する。
    • T2, T5:チェックポイント後にコミット → ロールフォワード対象。
    • T6:チェックポイント後で未コミットかつ Writeあり → ロールバック対象。
    • T3, T4:チェックポイント後で未コミットだが Writeなし → ロールバック不要。
    • T1:チェックポイント前にコミット → ロールフォワード不要。

選択肢別の誤答解説

  • (ロールフォワード:T2, T5 / ロールバック:T6)
    正答。T2・T5 はチェックポイント以降にコミットしたため REDO が必要。T6 は未コミットで書込みがあるため UNDO が必要。T3・T4 は書込みがないため UNDO 不要。
  • イ(ロールフォワード:T2, T5 / ロールバック:T3, T6)
    誤り。T3 は未コミットではあるが I/O 表に書込みが記載されておらず(Read のみ)データベースに対する変更をしていないため、ロールバックして取り消すべき更新が存在しない。
  • ウ(ロールフォワード:T1, T2, T5 / ロールバック:T6)
    誤り。T1 はチェックポイント以前にコミット済みで、その更新は既に安定化(通常はディスクに反映)しているため、チェックポイント方式では再度ロールフォワードする必要はない(不要な REDO)。
  • エ(ロールフォワード:T1, T2, T5 / ロールバック:T3, T6)
    誤り。ウの誤りに加え、T3 が不要なロールバックに含まれている点も誤り。

よくある誤解

  • 「チェックポイント以降で未コミットなら必ずロールバック」
    → 未コミットでも書込みがなければ取り消す変更がないため、ロールバック操作は不要(ログにUNDOすべき更新がない)。
  • 「コミット済みなら常にロールフォワード」
    → チェックポイント前にコミット済みで更新が安定化(ディスクへ反映)していれば、再適用(REDO)は不要な場合が多い。
  • 「Read もロールバック対象になる」
    → Read はデータを参照するだけでデータベースを書き換えないため、復旧で取り消すべきことはない。

補足コラム

  • 実運用では WAL(Write-Ahead Logging)や ARIES のような方式で「分析→ロールフォワード(REDO)→ロールバック(UNDO)」の順に復旧を行います。ポイントはログにより「どの更新を再適用すべきか」「どの未完了更新を取り消すべきか」を判断する点です。
  • 簡易ルールまとめ:
    • REDO(ロールフォワード):チェックポイント以降にコミットしたトランザクションの更新を再適用。
    • UNDO(ロールバック):障害時に未コミットで、実際に書込みをしたトランザクションの更新を取り消す。
  • 小さな例(擬似ログ):
    LSN100: T2 write X
    LSN110: T2 commit
    LSN120: checkpoint
    LSN130: T5 write Y
    LSN140: T5 commit
    LSN150: T6 write Z
    crash
    
    この場合 REDO は T5 の Y(および T2 の更新がチェックポイント後のログに無ければ不要)、UNDO は T6 の Z。

FAQ

Q. チェックポイント前にコミットしたトランザクションの更新がディスクにない可能性は?
A. チェックポイントは「ある時点での安定化」を表しますが、実装によってはチェックポイント時にログからの適用やバッファのフラッシュ動作が異なります。設問ではチェックポイント以前にコミットしたものは安定化済みと扱うのが通常の前提です。
Q. 未コミットでもログに書込みがあれば必ず UNDO するのか?
A. はい。ログに記録された更新が存在する場合、未コミットならその更新は不整合を招くため UNDO(ロールバック)で取り消します。
Q. Read のみのトランザクションが障害時に残っていると何か問題になるか?
A. Read のみであればデータの整合性に影響を与える書込みがないため復旧処理では特別な処理は不要です。

関連キーワード: トランザクション回復、チェックポイント、REDO、UNDO、WAL、ARIES、障害復旧、ログベースリカバリ
← 前の問題へこの年度をクイズで解く次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

応用情報技術者
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について