(26)redo和undo区别

redo(重做):1)改后备份,保证事的持久化,一直写。保证事务持久性,

                     2)记录:db变化日志,表、索引、undo数据块。nologging除外

undo(撤销还原):1)改前备份    保证事务原子性

                             2)记录:undo段,为保持读一致性的存历史数据

ps:为什么要保持读一致性?

A更改,B查询,并发:    A改没提交,B查历史  / rollback数据(源于UNDO)

一、Undo + Redo事务简化过程

A=1,B= 2    事务开始

    记录A=1到undo log    A=3.   记录A=3到redo log

    记录B=2到undo log    B=4    记录B=4到redo log

redo log写入磁盘    事务提交

二、Undo + Redo事务特点

1、事务提交(或每秒刷盘)Redo Log持久化

2、事务提交前缓存在内存中,不写磁盘。sync_binlog决定何时刷盘

三、undo与redo流程联系:

问题:没commit前,随时从内存写入表数据块,属于脏数据。 

解决:db崩溃用redo,脏数据还在,靠undo旧数据覆盖(用rollback)

不管脏/旧,redo都复制

1.undo是“数据文件datafile”,有表空间,有块block;

2.redo是“文件file”,没表空间

四、前滚与回滚:

前滚:从以前“正常点”,前滚到崩溃点

          回到正常点(一致点),数据清空,相当于之后什么都没发生。db用redo里重做(use redo log to redo),构造undo块,表块,索引块

回滚:“崩溃点”到一致

           表数据块中,已修改未提交脏数据前滚undo块撤销还原覆盖回滚rollback(保持一致性,每种块scn号都一样,db就可打开)

https://blog.csdn.net/z69183787/article/details/106638592/

https://blog.csdn.net/haiross/article/details/17003543

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • innodb事务日志包括redo log和undo log。redo log是重做日志,提供前滚操作。undo l...
    钟离惜阅读 336评论 0 0
  • innodb事务日志包括redo log和undo log。redo log是重做日志,提供前滚操作,undo l...
    阿里高级码农阅读 311评论 0 3
  • 久违的晴天,家长会。 家长大会开好到教室时,离放学已经没多少时间了。班主任说已经安排了三个家长分享经验。 放学铃声...
    飘雪儿5阅读 7,866评论 16 22
  • 今天感恩节哎,感谢一直在我身边的亲朋好友。感恩相遇!感恩不离不弃。 中午开了第一次的党会,身份的转变要...
    余生动听阅读 10,912评论 0 11
  • 可爱进取,孤独成精。努力飞翔,天堂翱翔。战争美好,孤独进取。胆大飞翔,成就辉煌。努力进取,遥望,和谐家园。可爱游走...
    赵原野阅读 3,541评论 1 1

友情链接更多精彩内容