MVCC多版本控制流程(innodb)
2021-10-05 22:05:26 0 举报
innodb的MVCC多版本控制流程
作者其他创作
大纲/内容
null
name
50
.......
小明
上一个版本地址
此时事务990 再次执行id=1的select查询。
现在有个事务id为60的执行这条记录的修改语句:update table set name=\"小明1\" where id=1; 该事务已经提交
trx_id
小明3
select的结果是小明1。所以第二次select结果和第一次一样,所以叫可重复读
60
id
去版本链通过trx_id对比查找到合适的结果就是小明2
小明1
1
ReadView(读视图)
1. 初始状态(以下为undo日志中的记录)
roll_pointer
该列表保存了当前数据库系统中了 begin了但还未提交的事务
小明2
其他事务(990):select name from t where id=1
1. 事务100已经提交2. 新事务110修改了记录,但还没有提交
如果隔离级别是可重复读
100
持有一个列表
......
如果隔离级别是Read Commited
重新一个ReadView
110
trx_id: 110
现在有个事务id为100的执行的这条记录的修改语句:update table set name=\"小明2\" where id=1; 该事务还未提交
trx_id: 100
收藏
0 条评论
回复 删除
下一页