日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

数据库的UNDO和REDO

發布時間:2025/3/20 数据库 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据库的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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。