Mysql MVCC机制详解

MVCC机制底层是基于快照实现的,每条新增、修改、删除操作都会记录一份快照(包含每次操作的事务id)。
例如:表名称 s_score
id name score
1 张三 50
2 李四 60
3 王五 70
底层实现
id name score 创建事务id 删除事务id
1 张三 50 10 空
2 李四 60 11 空
3 王五 70 13 空

开启两个连接会话同时连接

1.第一个会话 事务id 13
1.1 select * from s_score ; 因为不新增和修改、删除不记录在底层实现中
结果:
id name score
1 张三 50
2 李四 60
3 王五 70
1.2 删除id 为1 的数据 delete from s_score where id = 1; 由于是删除操作所以底层实现会变 13
会话1事务提交
底层
id name score 创建事务id 删除事务id
1 张三 50 10 13
2 李四 60 11 空
3 王五 70 13 空
2.第二个会话 事务id 14
2.1 select * from s_score ;
结果:
id name score
1 张三 50
2 李四 60
3 王五 70
2.2修改id 为2的 成绩为55
update s_score set score = 55 where id =2;
id name score 创建事务id 删除事务id
1 张三 50 10 13
2 李四 60 11 14
3 王五 70 13 空

  4                       李四            55                  14                               空

1.对于删除操作,mysql底层会记录好被删除的数据行的删除事务id,对于更新操作
mysql底层会新增一行相同数据并记录好对应的创建事务id
2.在id为12的事务里执行查询操作mysql底层会带上过滤条件,创建事务id <=
max(当前事务id(12),快照点已提交最大事务id),删除事务id> max(当前事
务id(12),快照点已提交最大事务id)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值