数据库的UNDO和REDO
2020年的第一篇博客,哈哈哈
Undo日志記錄某數據被修改前的值,可以用來在事務失敗時進行rollback(回滾);
Redo日志記錄某數據塊被修改后的值,可以用來恢復未寫入data file的已成功事務更新的數據。
通過Undo/Redo操作,可實現界面操作過程的撤銷和恢復。
Undo是將用戶上一步做的操作對程序造成的改動恢復到改動之前,而Redo操作是指重新實現這種改動。
Undo/Redo操作的實現方式分為兩類:記錄數據和記錄操作。
記錄數據是指將信息編輯窗口打開時,保存原始數據,然后記錄用戶每次操作后的結果數據,這里的數據是指信息編輯窗口中所有可能發生變動的數據。做undo操作時程序將用戶上一步操作前的數據傳給信息編輯窗口相應控件。這種做法是以空間來換時間,程序不必考慮用戶到底改變了哪些數據,反正每次都是替換的所有可能改變的數據。當每次保存的數據量比較小時,這種做法比較方便快捷,但是如果數據量大,比如包括圖形、視頻信息等,這種方法就比較耗費內存了。
記錄操作是指信息編輯窗口打開后,記錄用戶每次的操作,包括具體的操作動作以及操作改變的數據,這里的數據是指既能還原操作的數據又能重復操作的數據。做undo操作時程序根據記錄的用戶操作進行反向處理,對信息編輯窗口進行改動,而做redo操作的時候程序根據記錄的用戶操作來重復用戶的操作。這種做法是以時間換來空間,程序記錄的信息變少了,每次只需要記錄用戶的操作類型以及相關的操作數據(比如用戶編輯的哪個控件,編輯前后的控件內容分別是什么),與操作無關的其他數據則不需要記錄。這種做法比起記錄數據的方式肯定要復雜,但是勝于節儉內存。
在系統故障的恢復策略中,如果存在數據的多個Undo操作,需要將數據恢復到第一個失敗事務之前,如果正向掃描處理日志文件,無法實現這一目標,因此要反響掃描日志文件;對于同一個數據的多個Redo操作,需要將數據恢復到最后一個成功事務之后,因此應該正向掃描日志文件。Undo可以保證將未成功提交的事務所有操作都取消,而Redo可以保證將成功提交的事務所有操作都完成,所以兩者結合可以保證事務的原子性(要么操作都做,要么都不做);Redo可以保證事務只要提交,改變一定被永久實現,故Redo可以保證事務的持續性(事務一旦提交,對數據庫的改變將是永久性的)。
總結
以上是生活随笔為你收集整理的数据库的UNDO和REDO的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于HTML头文件中的meta
- 下一篇: Office的Word设置指定页码