基本情報技術者 2016年 秋期 午前(科目A) 問30
問題文
トランザクションTはチェックポイント取得後に完了したが、その後にシステム障害が発生した。トランザクションTの更新内容をその終了直後の状態にするために用いられる復旧技法はどれか。ここで、チェックポイントの他に、トランザクションログを利用する。
選択肢
ア:2相ロック
イ:シャドウページ
ウ:ロールバック
エ:ロールフォワード(正解)
トランザクションTはチェックポイント取得後に完了したが、その後にシステム障害が発生した。トランザクションTの更新内容をその終了直後の状態にするために用いられる復旧技法はどれか。【午前2 解説】
要点まとめ
- 結論: チェックポイント取得後にコミット(完了)したトランザクションの更新内容を反映して終了直後の状態に戻すのはロールフォワードです。
- 根拠: トランザクションログに記録されたredo(再実行)操作を適用することで、チェックポイント以降の変更を再現してデータを最新状態にできます。
- 差がつくポイント: ロールバックは未コミットの取り消し、シャドウページはページ置換戦略、2相ロックは整合性維持であり復旧目的とは役割が異なります。
正解の理由
正解は エ ロールフォワードです。問題文では「チェックポイント取得後に完了(コミット)した」トランザクションTがあり、その後に障害が発生しています。チェックポイント以降にコミット済みの更新は失われてはならず、トランザクションログのredo情報を用いて当該更新を再実行(ロールフォワード)することで、終了直後の状態に戻せます。ロールフォワードはログの順序に従って変更を再適用する復旧手法であり、ここで求められる挙動に一致します。
よくある誤解
- ロールバック(取り消し)とロールフォワード(再実行)を混同する:ロールバックは未コミットの変更を元に戻すための処理であり、コミット済みの変更を復元する手段ではありません。
- チェックポイント後の変更は自動でディスクに反映されていると思い込む:チェックポイントは「いつまでログを参照すればよいか」を示す目印であり、実際の更新がすべてディスクに反映済みとは限りません。
- シャドウページとログ再生を混同する:シャドウページはページ単位で古い状態を保持する方式で、ログのredo/undoとは原理が異なります。
解法ステップ
- 問題文から「チェックポイント取得後に完了(コミット)した」とある点を確認する。
- コミット済みトランザクションの復旧には、ログに記録されたredo(再実行)を使って変更を適用する必要があると認識する。
- 「ロールバック」はundo(取り消し)を行う手法であり目的が異なることを排除する。
- 「シャドウページ」「2相ロック」はそれぞれページ管理や同時実行制御に関する技法で、要求事項に合致しないと判断する。
- 以上より、コミット後の更新を反映するための技法としてロールフォワードを選択する。
選択肢別の誤答解説
- ア: 2相ロック
- 説明: 同時実行制御のためのロック手法で、トランザクションの同時実行性とデッドロック抑制に関係します。障害復旧(ログを使った更新再適用)を行うための手段ではありません。
- イ: シャドウページ
- 説明: 更新時に新しいページ(シャドウ)を作成し、コミット時に参照を切り替えることで元状態を保つ方式です。ログ再生とは異なるアプローチで、問題文の「トランザクションログを利用する」前提とも不整合です。
- ウ: ロールバック
- 説明: 未コミットの変更を取り消す(undo)ための処理です。問題の対象は「チェックポイント後に完了した(コミット済み)」トランザクションなので、取り消す必要はなく、むしろ再適用(redo)が必要です。
- エ: ロールフォワード
- 説明: トランザクションログのredo情報を用いてチェックポイント以降のコミット済み更新を再適用し、終了直後の状態に戻す手法であり本問の正解です。
補足コラム
- ロールフォワード(redo)とロールバック(undo)は復旧処理の両輪です。一般的な方式(例:WAL/ARIES)では、障害発生時に未コミットのトランザクションをundoし、コミット済みの変更をredoして整合性を回復します。
- チェックポイントは復旧時にログを巻き戻す開始点を示す役割を果たし、チェックポイント以降だけを再生すれば良い場合は復旧コストが下がります。
- シャドウページ方式はログを使わない設計上の選択肢で、ログベース復旧(WAL)とは設計トレードオフがあります。2相ロックは並行実行制御、障害復旧とは目的が違います。
FAQ
Q1: チェックポイント後にコミット済みなら必ずロールフォワードだけで済みますか?
A1: 基本的にはコミット済み更新はredoで再適用しますが、同時に未コミット分のundoも必要な場合があり、総合的にはundoとredo両方の処理を行うことが多いです。
A1: 基本的にはコミット済み更新はredoで再適用しますが、同時に未コミット分のundoも必要な場合があり、総合的にはundoとredo両方の処理を行うことが多いです。
Q2: ログにredo情報がないとどうなりますか?
A2: redo情報がないとコミット済みだった変更を再現できないため、データの完全な回復ができない可能性があります。Write-Ahead Logging(WAL)では必ずログに先に書くことが原則です。
A2: redo情報がないとコミット済みだった変更を再現できないため、データの完全な回復ができない可能性があります。Write-Ahead Logging(WAL)では必ずログに先に書くことが原則です。
Q3: シャドウページはどんな場面で有利ですか?
A3: シャドウページはアトミックなページ切替によりクラッシュ後も整合性を保ちやすく、ログ管理を省略できる設計に向きますが、更新効率やディスク使用量の面で不利になることがあります。
A3: シャドウページはアトミックなページ切替によりクラッシュ後も整合性を保ちやすく、ログ管理を省略できる設計に向きますが、更新効率やディスク使用量の面で不利になることがあります。
関連キーワード: トランザクション、ロールフォワード、ロールバック、チェックポイント、トランザクションログ、WAL、ARIES、シャドウページ、2相ロック、障害復旧

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

