応用情報技術者 2022年 秋期 午前2 問29
問題文
チェックポイントを取得する DBMS において、図のような時間経過でシステム障害が発生した。前進復帰 (ロールフォワード) によって障害回復できるトランザクションだけを全て挙げたものはどれか。

選択肢
ア:T1
イ:T2とT3
ウ:T4とT5(正解)
エ:T5
🔒 解説は解答すると表示されます
ロールフォワード対象【午前2解説】
正解の理由
ロールフォワード(前進復帰)は、チェックポイント以降のログに記録されている「コミットしたトランザクション」の更新をディスクに反映する処理です。図では、T4 と T5 がチェックポイントを越えてコミットしており、これらはコミット記録がチェックポイント後のログに存在するため再実行(redo)で回復可能です。したがって選択肢の中では ウ(T4とT5)が正解になります。
特に T3 は図の「開始」ラベルが障害発生線の左側にあり、障害時点で未コミットであるためロールフォワードの対象外(必要ならロールバック対象)である点に注意してください。
解法ステップ
- 最後のチェックポイント以降にコミットしたトランザクションを探す。
- ロールフォワードはチェックポイント以降のコミット更新を再適用するため、コミット記録がチェックポイントより後にあることが条件。
- 図の各トランザクションについて「開始」「コミット」の位置をチェックポイントおよび障害発生線との相対位置で判断する。
- チェックポイントより左でコミット:既にディスクに反映済み → 再適用不要。
- チェックポイントより右でコミット:ログにコミット記録がある → 再適用(redo)対象。
- 障害時点で未コミット:ロールフォワード対象外(undo対象)。
- 対象を列挙する。図ではT4とT5が条件を満たすため正解。
選択肢別の誤答解説
- ア: T1
- 誤り。T1 はチェックポイントよりも前に開始・コミットしているため、その更新は既にディスクに反映されており、ロールフォワードで再適用する必要はない。
- イ: T2とT3
- 誤り。T2 はチェックポイントで開始しているが障害時にコミットしておらず未コミットのためロールフォワード対象外。
- T3 は図示どおり開始ラベルが障害より左(障害発生前に開始)であり、障害時に未コミットであるためロールフォワード対象外。
- ウ: T4とT5
- 正解。T4 はチェックポイント前に開始しているがコミットはチェックポイント後に行われている、T5 はチェックポイント直後に開始してチェックポイントと障害の間でコミットしている。どちらもチェックポイント以降にコミットしているためロールフォワードで回復可能。
- エ: T5
- 誤り。T5 は確かにロールフォワード対象だが、T4 も同様にチェックポイント後にコミットしているため T5 のみを挙げるのは不完全。
よくある誤解
- 誤解1: 「矢印の向きや点線の有無で開始時点が障害後だと判断する」
- 実際にはラベルの位置(開始/コミットの明示)で判断すること。特に点線は図示の延長を表すだけで、開始ラベルが障害線の左側にあるか右側にあるかが重要。今回の T3 は開始が障害前にあるため「障害後に開始した」として扱ってはいけません。
- 誤解2: 「チェックポイントを越えて動いているトランザクションは全てロールフォワード対象」
- 正しくは「チェックポイント以降にコミットしたトランザクション」が対象。チェックポイント以降でも未コミットなら redo の対象ではなく undo の対象になる。
補足コラム
DBMSの障害復旧手順は一般に「分析 (analysis) → 前進復帰(redo) → 後退復帰(undo)」の三段階で説明されます。チェックポイントはこのうち分析とredoの開始点を短縮するために置かれ、チェックポイント時点までのログ処理・ディスク状態を保証することで、障害後の処理量を減らします。Write-Ahead Logging (WAL) により、コミット前に関連するログが確実に書かれていることが前提になります。
FAQ
Q1: コミット直後にデータページがディスクに書かれていなかったらどうなる?
A1: コミット記録がログに残っていれば、ロールフォワードでその更新を再適用してディスクに反映します(WALの原則)。
A1: コミット記録がログに残っていれば、ロールフォワードでその更新を再適用してディスクに反映します(WALの原則)。
Q2: 障害時に未コミットのトランザクションはどう処理される?
A2: ロールフォワードでは未コミットトランザクションの更新は適用されない。最後にUNDO処理を行い、未コミットの効果を取り消す(ロールバック)必要があります。
A2: ロールフォワードでは未コミットトランザクションの更新は適用されない。最後にUNDO処理を行い、未コミットの効果を取り消す(ロールバック)必要があります。
Q3: チェックポイントのタイミングにトランザクションが「ちょうど」存在していた場合は?
A3: 判定はログ中のチェックポイント記録と各トランザクションのコミットログの順序で行う。コミットログがチェックポイント記録より後にあれば redo 対象になります。
A3: 判定はログ中のチェックポイント記録と各トランザクションのコミットログの順序で行う。コミットログがチェックポイント記録より後にあれば redo 対象になります。
関連キーワード: チェックポイント、ロールフォワード、ロールバック、WAL、コミット、障害復旧、ログ再適用

\ せっかくなら /
応用情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

