MySQL高级-MVCC-undo log &版本链

文章目录

1、undo log

  • 回滚日志,在insert、update、delete的时候产生的便于数据回滚的日志。
  • insert 的时候,产生的undo log日志只在回滚时需要,在事务提交后,可被立即删除。
  • update、delete 的时候,产生的undo log日志不仅在回滚时需要,在快照读时也需要,不会立即被删除。

2、undo log 版本链

  • DB_TRX_ID:代表最近修改事务ID,记录插入这条记录或最后一次修改该记录的事务ID,是自增的。
  • DB_ROLL_PTR:由于这条数据是才插入的,没有被更新过,所以该字段值为null。

2.1、然后,有四个并发事务同时在访问这张表。

2.1.1、修改id为30记录,age改为3

事务2执行第一条修改语句时,会记录undo log日志,记录数据变更之前的样子; 然后更新记录,并且记录本次操作的事务ID,回滚指针,回滚指针用来指定如果发生回滚,回滚到哪一个版本。

2.1.2、修改id为30记录,name改为A3

事务3执行第一条修改语句时,也会记录undo log日志,记录数据变更之前的样子; 然后更新记录,并且记录本次操作的事务ID,回滚指针,回滚指针用来指定如果发生回滚,回滚到哪一个版本。

2.1.3、修改id为30记录,age改为10

事务4执行第一条修改语句时,也会记录undo log日志,记录数据变更之前的样子; 然后更新记录,并且记录本次操作的事务ID,回滚指针,回滚指针用来指定如果发生回滚,回滚到哪一个版本。

2.2、总结

最终我们发现,不同事务相同事务同一条记录进行修改,会导致该记录的undolog生成一条记录版本链表,链表的部是最新的旧记录,链表部是最早的旧记录。

相关推荐
ManageEngineITSM4 分钟前
技术的秩序:IT资产与配置管理的现代重构
大数据·运维·数据库·重构·工单系统
档案宝档案管理3 小时前
档案宝:企业合同档案管理的“安全保险箱”与“效率加速器”
大数据·数据库·人工智能·安全·档案·档案管理
wangjialelele3 小时前
mysql库操作二
数据库·mysql
星释3 小时前
二级等保实战:MySQL安全加固
android·mysql·安全
Chloeis Syntax3 小时前
MySQL初阶学习日记(1)--- 数据库的基本操作
数据库·学习·mysql
workflower4 小时前
FDD(Feature Driven Development)特征驱动开发
大数据·数据库·驱动开发·需求分析·个人开发
韩立学长4 小时前
基于Springboot的旧物公益捐赠管理系统3726v22v(程序、源码、数据库、调试部署方案及开发环境)系统界面展示及获取方式置于文档末尾,可供参考。
数据库·spring boot·后端
苦学编程的谢5 小时前
Redis_4_常见命令(完)+认识数据类型和编码方式
数据库·redis·缓存
小光学长5 小时前
基于Vue的儿童手工创意店管理系统as8celp7(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
前端·数据库·vue.js