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


選択肢
ア:(正解)
イ:
ウ:
エ:
🔒 解説は解答すると表示されます
前進・後退復帰判定【午前2解説】
正解の理由
障害後の再立ち上げでは、チェックポイント以降にコミットされた変更は前進復帰(ロールフォワード)で再適用し、コミットされていない書き込みは後退復帰(ロールバック)で取り消します。図の状況では、チェックポイント通過後にコミットされたトランザクションは T2 と T5、したがってこれらは前進復帰対象です。一方、T6 は未コミットで書込みのあるトランザクションなので後退復帰が必要です。アはこの組合せを正しく示しています。
重要にして見落としやすい点:T3 と T4 は表から「Read のみ(Write なし)」であり、読み取り専用のためデータベースに対する実体的な変更を行っていません。従って未コミットでも取り消すべき変更(undo)の対象にならず、後退復帰の実体的対象には含めません。これが選択肢アが正しい理由の一つです。
解法ステップ
- チェックポイントの意味を確認する
- チェックポイントより前にコミット済みの変更は安定化されている前提(再適用不要)と扱う。
- 各トランザクションのコミット状態と時点を確認する
- チェックポイント以降にコミット:redo(前進復帰)対象
- 未コミットで書込みあり:undo(後退復帰)対象
- 各トランザクションの操作内容を確認する
- Readのみ(Writeなし)ならば、復旧時に undo は不要
- 上記を当てはめて該当トランザクションを分類する
- 前進復帰:チェックポイント通過後にコミットされた T2, T5
- 後退復帰:未コミットで書込みを行った T6
- T1 はチェックポイント到達直前にコミット → 安定化済みで再適用不要
- T3, T4 は Readのみ → 復旧上の undo 対象外
選択肢別の誤答解説
- ア(正):前進復帰に T2, T5、後退復帰に T6 を配置。T3/T4 が読み取り専用で undo 不要、T1 はチェックポイント以前にコミットされ安定化済みである点を正しく扱っている。
- イ:後退復帰に T3 を含めている誤り。T3 は Write がない読み取り専用であり、未コミットでも取り消す変更が存在しないため undo の対象にはならない。
- ウ:前進復帰に T1 を含めている誤り。T1 はチェックポイント到達直前にコミットされているため、チェックポイントが安定化を示す想定では再適用(redo)は不要である。
- エ:前進復帰に T1、後退復帰に T3 を含める二重の誤り。T1 はチェックポイント以前のコミットで redo 不要、T3 は書込みがないため undo 不要である。
よくある誤解
- 誤解1:未コミット=必ず後退復帰対象
- 未コミットでも「読み取りのみ」はデータを変更していないため、undo の対象にはならない点を忘れがちです。
- 誤解2:コミット済みなら常に前進復帰が必要
- コミットの時点がチェックポイントの前か後かで扱いが変わります。チェックポイントより前にコミット済みなら通常再適用は不要と判断されます。
- 誤解3:チェックポイントの意味を過度に単純化
- 実装によってチェックポイントの取り方(完全チェックポイント、フェーズ分けなど)が異なりますが、試験問題では「チェックポイント到達前にコミット済みは安定化済み」とするのが基本想定です。
補足コラム
- 実際の DBMS(例えば ARIES)の復旧では、ログの内容(WAL)や checkpoint の記録位置を使い、undo フェーズと redo フェーズを厳密に分けて処理します。問題では簡略化されたモデルを使っているため、読み取り専用トランザクションが未コミットでも復旧上の undo が不要という点を明確に理解しておけば十分です。
- 「読み取り専用」でも一時構造を更新するようなケース(統計情報の更新など)は実装次第で例外になり得ますが、図に明示された Read 回数のみの表記は変更無しと解釈します。
FAQ
Q1. チェックポイント以前にコミットされたトランザクションの変更が物理媒体に書かれていない可能性は?
A1. 試験問題の前提ではチェックポイントは安定化の目印として扱われます。現実の DBMS では WAL やフラッシュの整合性が重要ですが、本問ではチェックポイント以前のコミットは再適用不要とするのが正解です。
A1. 試験問題の前提ではチェックポイントは安定化の目印として扱われます。現実の DBMS では WAL やフラッシュの整合性が重要ですが、本問ではチェックポイント以前のコミットは再適用不要とするのが正解です。
Q2. 読み取り専用でも一時ファイルに書き込む処理があればどうなる?
A2. その場合は「Write」があると見なすべきで、未コミットなら undo の対象になります。本問では明示的に Write 回数がないため、読み取り専用と判断します。
A2. その場合は「Write」があると見なすべきで、未コミットなら undo の対象になります。本問では明示的に Write 回数がないため、読み取り専用と判断します。
Q3. 複数チェックポイントがある場合は?
A3. 最後の一貫性の取れたチェックポイント(last checkpoint)以降のコミット状況を基に判断します。問題の図のチェックポイントはその標準的な扱いです。
A3. 最後の一貫性の取れたチェックポイント(last checkpoint)以降のコミット状況を基に判断します。問題の図のチェックポイントはその標準的な扱いです。
関連キーワード: ロールフォワード、ロールバック、チェックポイント、読み取り専用、WAL、復旧アルゴリズム

\ せっかくなら /
データベーススペシャリストを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

