ロールバック
ろーるばっく
ひとことで言うと
障害発生時にデータベースをトランザクション開始前の状態に戻す回復処理。
解説
トランザクション処理において、障害発生時などにデータベースをトランザクション開始前の状態に戻す回復処理。更新前のデータ(更新前ログ)を使用して、未コミットのトランザクションによる変更を取り消す。ACID特性の原子性を保証するための重要な機能である。
くわしく解説
ロールバックとは、データベーストランザクション処理において、障害発生・エラー・明示的な取消命令(ROLLBACK文)により、トランザクション開始前の状態にデータベースを戻す回復処理である。更新前ログ(ビフォーイメージ)を使用して、そのトランザクションが加えた変更をすべて取り消す。ACID特性の原子性(Atomicity)を保証するための中心的な機能であり、トランザクションが完全に成功(コミット)しなければ、実施した更新はすべて無効化される。ロールバックはトランザクション単位での回復(局所的回復)に使用され、ソフトウェア障害時の回復に適している。一方、ロールフォワードはバックアップからの前進回復(前進復旧)であり、ハードウェア障害後の全体回復に使用される。
具体例で考えよう
銀行振込処理で「口座Aから出金」は成功したが「口座Bへ入金」でエラーが発生した場合、ロールバックにより口座Aからの出金処理も取り消され、振込前の残高状態に戻される。これにより資金の消滅を防ぐ。
試験対策ポイント
ロールフォワードとの違い(使用するログ・適用場面・回復方向)は最頻出。ACID特性の原子性との関連を押さえる。「未コミットのトランザクション取消」という定義を正確に覚えること。