基本情報技術者 2017年 秋期 午前(科目A) 問30
問題文
トランザクション処理プログラムが、データベース更新の途中で異常終了した場合、ロールバック処理によってデータベースを復元する。このとき使用する情報はどれか。
選択肢
ア:最新のスナップショット情報
イ:最新のバックアップファイル情報
ウ:ログファイルの更新後情報
エ:ログファイルの更新前情報(正解)
トランザクションのロールバックで使用する情報はどれか【午前2 解説】
要点まとめ
- 結論: ロールバックで必要なのはトランザクション前の状態を復元する「ログの更新前情報(undo 情報)」で、該当はエです。
- 根拠: 異常終了で未確定の変更を取り消すには、変更前の値(before-image)が必要であり、それをログが保持します。
- 差がつくポイント: バックアップやスナップショットは全体復旧や過去点復元で用い、ロールバックはログ中の「更新前情報」と役割が明確に異なります。
正解の理由
ロールバックは「未コミットの変更を取り消す」操作であり、取り消すためには変更される前の値(before-image)が必要です。データベースではこの before-image をログに書き込み、障害時にその情報を使って元の値に戻します。したがって正解は エ(ログファイルの更新前情報)です。更新後情報(after-image)は主にコミット後の復旧(redo)に使われ、バックアップやスナップショットはロールバックそのものの即時取り消しには向きません。
よくある誤解
- ログ=バックアップと考える: ログは逐次の変更記録であり、バックアップはデータ全体の静止コピーで用途が異なります。
- 更新後情報(after-image)がロールバックに使えると誤認: after-imageはredo(再適用)用で、undo には before-image が必要です。
- スナップショットで即時ロールバックできると期待: スナップショットは時点復旧に使えるが、トランザクション単位の即時取り消しは通常ログで行います。
解法ステップ
- 問題文から「ロールバック」「更新の途中で異常終了」といったキーワードを抽出する。
- ロールバックの目的を明確化する(未確定の変更を元に戻す)。
- 「何が必要か」を考える(元の値=更新前情報)。
- 選択肢を照合し、ログの更新前情報(undo)を選ぶ。
選択肢別の誤答解説
- ア: 最新のスナップショット情報
- スナップショットはある時点の全体状態を保持するが、トランザクション単位での即時取り消しや途中更新の細かな undo には適さない。時間や粒度の問題がある。
- イ: 最新のバックアップファイル情報
- バックアップは完全復旧や災害復旧に有効だが、途中の未コミット変更だけを取り消す用途には不適。復旧時間やデータの粒度が合わない。
- ウ: ログファイルの更新後情報
- 更新後情報(after-image)は redo(再適用)で使う。障害復旧でコミット済みの変更を復元するための情報であり、ロールバック(undo)には向かない。
- エ: ログファイルの更新前情報
- 正解。更新前イメージ(before-image/undo 情報)を使って、未確定の変更を元の値に戻す。
補足コラム
トランザクション制御と障害復旧では undo(更新前情報)と redo(更新後情報)の区別が重要です。多くのデータベースは書き込み順序の保証(Write-Ahead Logging; WAL)を採用し、まずログに before/after 情報を記録してからデータ領域を更新します。障害発生時は、コミット済みトランザクションの再適用(redo)と、未コミットトランザクションの取り消し(undo)を組み合わせて一貫性を回復します。スナップショットやバックアップは時点復旧や災害復旧の手段で、目的と粒度が異なります。
FAQ
Q1: ロールバックとリカバリは同じですか?
A1: 異なります。ロールバックは特定トランザクションの取り消し操作で、リカバリは障害後にデータベース全体を一貫性のある状態に戻す処理です。どちらもログを利用しますが目的と範囲が違います。
A1: 異なります。ロールバックは特定トランザクションの取り消し操作で、リカバリは障害後にデータベース全体を一貫性のある状態に戻す処理です。どちらもログを利用しますが目的と範囲が違います。
Q2: すべてのDBが更新前情報をログに保存しますか?
A2: 多くの商用・オープンソースDBは undo(またはトランザクションログ)を保持しますが、実装方式は製品により異なります(論理ログや物理ログ、MVCC の仕組みなど)。
A2: 多くの商用・オープンソースDBは undo(またはトランザクションログ)を保持しますが、実装方式は製品により異なります(論理ログや物理ログ、MVCC の仕組みなど)。
Q3: スナップショットでロールバックできる場合はありますか?
A3: スナップショットから時点復元すれば間接的にロールバックの効果を得られるが、トランザクション単位の即時取り消しや並行制御とは運用面で異なるため注意が必要です。
A3: スナップショットから時点復元すれば間接的にロールバックの効果を得られるが、トランザクション単位の即時取り消しや並行制御とは運用面で異なるため注意が必要です。
関連キーワード: トランザクション、ロールバック、undoログ、redoログ、ログファイル、WAL、ACID、障害復旧、before-image、after-image、バックアップ、スナップショット、コミット、データ一貫性

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

