バックワードリカバリ (ロールバック)
更新日:
用語解説
バックワードリカバリ(ロールバック)は、未完了又は取消対象トランザクションの更新を、ログの更新前情報などを逆向きにたどって取り消し、トランザクション開始前又は指定したセーブポイントの状態へ戻す処理です。
■ 試験で押さえるポイント
障害時にはログを調べ、COMMIT記録のないトランザクションがデータファイルへ行った変更をUNDOして、原子性を保ちます。
一つのトランザクションが同じデータを複数回更新している場合、最後の更新から開始時点へ向けて逆順にbefore imageを適用します。
利用者がROLLBACKを明示した場合も同じく、そのトランザクションの更新を取り消して保持ロックなどを解放します。COMMIT済み更新は通常のROLLBACKでは取り消しません。
媒体障害後にバックアップから新しい状態へ進めるロールフォワードはREDO、未確定更新を過去へ戻すロールバックはUNDOです。方向と対象を対応付けます。
■ 選択肢での判断ポイント
未コミットTx=更新前ログでUNDO、コミット済みだが未反映=更新後ログでREDOと判定します。ログを適用する順序も、UNDOは更新と逆順です。
例: Txが残高100→80→70と更新して障害前に未コミットなら、ログを逆順にたどって70→80、80→100とUNDOし、開始前の100へ戻します。