Mysql MVCC多版本解析

1.首先各行数据,都有一个trx_id(事务ID)和回滚指针,形成一个链表数据结构的数据。其实这便是undo.log(回滚日志)
2.当select查询数据的时候,还会生成视图数据。
其中包含未提交的最小事务未提交事务ID数组、应该分配下一个的事务ID创建视图的事务ID
首先会生成read view,将未提交的事务记录下来,并生成当前read view事务ID、未提交事务最小的ID。
3.此时就可以通过这个read view和undo.log进行比较。
首先会比较行数据trx_id与未提交的事务最小事务ID,如果trx_id<未提交的事务最小事务ID,说明事务是在已提交后创建的,所以可见。
trx_id>=分配下一个事务ID,则说明当前视图是所有未提交的事务创建之后才提交的.
如出现未提交的事务最小事务ID<trx_id<分配给下一个事务ID
这里还会出现一个判断如果trx_id在未提交数组里面,是可见的。否则不可见。

posted @   辉辉、  阅读(6)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示