InnoDB存储引擎
引擎区别
索引和算法
锁的机制
关键特性
事务一:重做日志
事务二:undo log
异步复制和半同步复制
MySQL主从配置参数
GTID
MySQL操作手册
自增ID和UUID 对性能的影响
本文档使用 MrDoc 发布
-
+
首页
事务二:undo log
## 基本概念 重做日志记录了事务的行为,可以很好的通过它对页进行重做操作。但是事务有时还需要进行回滚,这时就需要undo log。因此在对数据库进行操作时,InnoDB不仅会产生redo log,也会产生undo log。当事务需要回滚时,可以利用这些undo log将数据回滚到修改之前的样子。 undo log是逻辑日志。而且undo log没有独立的日志文件,它存放于共享表空间中。 undo log的内容: - 对于 INSERT 语句,undo log是一个 DELETE 语句 > 由于 INSERT 操作的记录只对当前事务可见,对其他事务不可见,因此该undo log可以在事务提交后直接删除,不需要等待purge 操作。 - 对于 DELETE 语句,undo log是一个 INSERT 语句 - 对于 UPDATE 语句,undo log是一个相反的 UPDATE 语句 > UPDATE 产生的undo log不可以在事务提交后直接删除,因为MVCC。 undo log会产生redo log,因为它需要持久性的保护。 > 除了用于回滚以外,undo log的另一个重要功能是用于实现MVCC(多版本控制)。在InnoDB引擎中,MVCC的实现是通过undo log来完成的。当用户读取一行记录时,若该行记录被其他事务占用,那么可以通过undo log读取到该行数据之前的版本信息,从而实现非锁定读。 > 所以,事务提交后不能马上删除undo log及 undo log所在的页,因为可能有事务需要通过undo log来得到行记录之前的版本。因此事务提交时将undo log放入一个链表中,是否可以最终删除undo log及undo log所在的页由purge 线程来判断。
gaojian
2021年6月26日 11:19
分享文档
收藏文档
上一篇
下一篇
微信扫一扫
复制链接
手机扫一扫进行分享
复制链接
关于 MrDoc
觅思文档MrDoc
是
州的先生
开发并开源的在线文档系统,其适合作为个人和小型团队的云笔记、文档和知识库管理工具。
如果觅思文档给你或你的团队带来了帮助,欢迎对作者进行一些打赏捐助,这将有力支持作者持续投入精力更新和维护觅思文档,感谢你的捐助!
>>>捐助鸣谢列表
微信
支付宝
QQ
PayPal
Markdown文件
分享
链接
类型
密码
更新密码