自学内容网 自学内容网

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线程去完成。

小结
在这里插入图片描述


原文地址:https://blog.csdn.net/qq_26641137/article/details/136308626

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!