跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 数据库基于日志的事务恢复为什么要分 undo 和 redo
未分類
13 2 月 2021

数据库基于日志的事务恢复为什么要分 undo 和 redo

数据库基于日志的事务恢复为什么要分 undo 和 redo

資深大佬 : zxCoder 5

是为了效率考虑吗?

我觉得理论上可以不需要 redo 吧,崩溃时把最后一个检查点到奔溃点的所有日志记录全部 undo 不就好了吗?

把系统崩溃点之前已经提交或者回滚的事务进行 redo 而不是 undo 的原因是效率问题吗?

大佬有話說 (5)

  • 資深大佬 : 3dwelcome

    恢复过几百 G 的数据飘过,只能 redo 。
    undo 你也存不下那么大的日志数据量。

  • 主 資深大佬 : zxCoder

    @3dwelcome redo 和 undo 不是都需要保存日志记录吗

  • 資深大佬 : 3dwelcome

    redo 逻辑简单啊,快照前后只要存 sql 语句,恢复就是简单 SQL 重放。
    undo 不一样,要跟踪所有的数据变动,万一一个 SQL 影响几百万数据,把每个数据变化值都要存下来,那多亏。

  • 主 資深大佬 : zxCoder

    @3dwelcome 可能是实际数据库和课本说的不太一样,我才看到课本,课本上说的 redo 和 undo 都是保存一个<T,data,oldVal,newVal>的日志记录

  • 資深大佬 : zjbztianya

    @zxCoder undo 是保存在页(page)里的,redo 日志是保存在日志文件里的,崩溃恢复的时候,需要先执行 redo 日志,构造 undo page 再 undo 掉回滚的事务。而且 mvcc 也需要通过 undo page 实现

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具