Mysql学习之事务日志undolog深入剖析

Undo log

redo log 是事务持久性的保证,undo log是事务原子性的保证。在事务中更新数据前置操作其实是要先写入一个undo log

如何理解undo 日志?
事务需要保证原子性,也就是事务中的操作要么全部完成,要么什么也不做。但有时候事务执行到一半会出现一些情况,比如:
情况1:事务执行过程中可能遇到各种错误,比如服务器本身的错误操作系统的错误、甚至是突然断电导致的错误。
情况2:程序员可以在事务执行过程中手动输入ROLLBACK语句结束当前事务的执行。
以上情况出现,需要把数据改回原来的样子,这个过程称之为回滚,这样就可以造成一个假象:这个事务看起来什么都没做,所以符合原子性要求。
在这里插入图片描述
undo log会产生redo log,也就是undo log的产生会伴随着redo log的产生,这是因为undo log也需要持久性的保护。

Undo日志的作用
作用1:回滚数据
在这里插入图片描述
作用2: MVCC
在这里插入图片描述
undo的存储结构
在这里插入图片描述
undo页的重用
在这里插入图片描述
在这里插入图片描述
回滚段中的数据分类
在这里插入图片描述
undo的类型
在这里插入图片描述
undo log的生命周期
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
undo log是如何回滚的
在这里插入图片描述
undo log的删除
在这里插入图片描述
purge线程两个主要作用是:清理undo页和清楚page里面带有Delete_Bit标识的数据行。在InnoDB中,事务中的Delete操作实际上并不是真正的删除掉数据行,而是一种Delete Mark操作,在记录上标识Delete_Bit,而不删除记录,是一种假删除,只是做了一个标记,真正的删除工作需要后台purge线程去完成。

小结
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值