MVCC总结
2021-03-26 19:18:59 0 举报
Mysql多版本并发控制MVCC总结
作者其他创作
大纲/内容
记录额外信息
row_id
80(事物ID)
roll_pointer
peile
隐藏列
compact行格式
name
事物ID
insert_undo
Mysql利用MVCC和Shared都可以防止脏读MVCC和Shared锁防止脏读的区别:用锁所有事物都访问最新版本的数据,不可以读取历史版本的数据。而用MVCC可以实现多版本读取
m_ids(集合)
生成ReadView时当前系统活跃的事物ID
min_trx_id
生成事务时,活跃的最小事务ID
max_trx_id
生成事务时,活跃的最大事务ID
creator_trx_id
生成该ReadwView的事物的事物ID
回滚指针,指向undo日志链的头部
第一次事物ID为100的事物进行修改形成的版本链
1
访问的trx_id < min_trx_id
可以访问
说明创建该事物前该版本记录已经被提交
2
访问的trx_id >= max_trx_id
不可访问
说明该版本记录在事物开启后才生成的
3
min_trx_id<trx_id<max_trx_id
需要判断
查看当前版本trx_id是否存在于m_ids中,存在证明当前trx_id事物活跃,则不可访问
4
trx_id = creator_trx_id
意味着这个记录本事物已经修改过
第二次事物ID为200的事物进行修改形成的版本链
指向一个insert_undo
100(事物ID)
insert_undo事物提交后会被回收或者释放,所以在MVCC中不起作用
zhong
可变长字段列表
NULL值列表
记录头信息
trx_id
列1的值
列2的值
事物id为80的事物插入一条数据
记录的额外信息
每个事物都会创建自己独有的ReadView
记录真实的数据
200(事物ID)
bin
MVCC(多版本并发控制)
0 条评论
下一页