ロールバックとロールフォワードはどちらもデータベースの内容を復旧させる操作です。
以下でそれぞれの違いを解説していきます。
ロールバック
トランザクション(いくつかの処理をまとめたもの)の処理中にトラブルが発生して、データベースの更新に失敗した!
ここで、トラブル発生までの処理を取り消し、更新前の状態に戻すのがロールバックです。
例として、下記のようにトランザクション(処理1〜4)を行って、データベースを更新します。
※「ジャーナル」とはデータベースの情報を持ったファイルだと思ってください。
![](https://www.moringa-moringu.com/wp-content/uploads/2020/05/ロールバック、フォワード.001-1-1024x422.jpeg)
処理3の途中でトラブルが発生し、処理が止まってしまいました。
このような場合に、処理4は行わず、ジャーナルの情報を元に、処理を行う前のデータベースの状態に戻します。
![](https://www.moringa-moringu.com/wp-content/uploads/2020/05/ロールバック、フォワード.004-1024x572.jpeg)
ロールフォワード
処理は全て終わって更新したけど、データベースそのものが壊れてしまった!
このような時に、バックアップデータとジャーナルを用いて更新後の状態に戻すのがロールフォワードです。
例として、下記のようにトランザクション1,2を行って更新したデータベースがあるとします。
更新した情報はジャーナルに書き込まれます。
![](https://www.moringa-moringu.com/wp-content/uploads/2020/05/ロールバック、フォワード.005-1024x504.jpeg)
しかし、何らかの理由で更新したデータベースが故障しました。
![](https://www.moringa-moringu.com/wp-content/uploads/2020/05/ロールバック、フォワード.006-1024x478.jpeg)
まずは、バックアップデータから更新前の状態に戻します。
![](https://www.moringa-moringu.com/wp-content/uploads/2020/05/ロールバック、フォワード.007-1024x477.jpeg)
続いて、トランザクション1,2を実行した際に作られたジャーナル(更新情報が書かれている)を使って、またデータを更新します。
![](https://www.moringa-moringu.com/wp-content/uploads/2020/05/ロールバック、フォワード.008-1024x472.jpeg)
まとめ
ロールバックとは?
・トランザクションの処理中に、データベースにトラブルが発生した時の操作
・更新前の状態に戻す操作
ロールフォワードとは?
・トランザクションの処理中以外で、データベースにトラブルが発生した時の操作
・更新後の状態に戻す操作
コメント