mysql事务mvcc模型实现原理
2020-04-14 14:05:00 0 举报
mysql mvcc模型实现原理
作者其他创作
大纲/内容
版本1
查询操作B
name = lilei1 事务id = 100
mysql事务mvcc模型实现原理
事务id=300begin----------------------------------------------------------------------------update account set name = ‘lilei300’ where id = 1commit----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
max_id=300
不同隔离级别下生成readview的逻辑:1.读未提交:直接取版本链最新的版本数据即可。2.读已提交:每次查询产生新的readview3.可重复读:每次查询沿用首次查询的readview4.串行化:不需要版本链,因为每次只有一个事务执行。
name = lilei1 事务id = 200
account表中id = 1的记录版本链按时间流程如上图:
事务id=100beginupdate test set c1 = 123 where id = 1------------------------------------------------------------------------------------------------------------------------------------------------update account set name = ‘lilei1’ where id = 1update account set name = ‘lilei2’ where id = 1------------------------------------commit------------------------------------------------------------------------------------------------------------
以默认可重复读为例,以下各个事务按时间顺序从上往下分别执行,事务中只有执行更新操作才会生成事务id对数据的更新等操作都会产生新版本加入版本链中
事务id=200begin------------------------------------update test set c1 = 666 where id = 5------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------update account set name = ‘lilei1’ where id = 1update account set name = ‘lilei2’ where id = 1------------------------------------commit
版本5
未开始事务
name = lilei2 事务id = 100
版本4
版本3
已提交事务或未提交事务
版本2
查询操作A
name = lilei300 事务id = 300
min_id=100
name = lilei2 事务id = 200
已提交事务
收藏
0 条评论
下一页