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生成一条记录版本链表,链表的部是最新的旧记录,链表部是最早的旧记录。

相关推荐
大道之简5 分钟前
PostgreSQL pgvector向量数据库
数据库·postgresql
yfhmmm7 分钟前
PostgreSQL如何进行时间点恢复(PITR)
数据库·postgresql
Yusei_052318 分钟前
Redis核心特性与应用全解析
开发语言·数据库·c++·redis·缓存
韩立学长9 小时前
【开题答辩实录分享】以《自助游网站的设计与实现》为例进行选题答辩实录分享
java·mysql·spring
SAP小崔说事儿9 小时前
在数据库中将字符串拆分成表单(SQL和HANA版本)
java·数据库·sql·sap·hana·字符串拆分·无锡sap
川贝枇杷膏cbppg10 小时前
asmcmd
数据库·oracle
JIngJaneIL11 小时前
基于java+ vue助农电商系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot·后端
q_191328469511 小时前
基于Springboot+MySQL+RuoYi的会议室预约管理系统
java·vue.js·spring boot·后端·mysql·若依·计算机毕业设计
IndulgeCui11 小时前
基于CentOS7 DM8单机部署配置记录-20251216
数据库
surtr111 小时前
关系代数与关系型数据库
数据库·sql·数据库系统