become who you want to be zhang|

张三Blog

园龄:3年4个月粉丝:3关注:0

(二)深入理解MySql锁与事务隔离级别

1.MVCC机制详解

MVCC主要是为了提高高并发的读写性能,不用加锁就能让多个事务并发读写
在这里插入图片描述
对于事务id为12的操作,先查询select * from account(创建了查询快照,记录执行sql这一刻最大的已提交事务id 快照点已提交最大事务id ) ,对于事务13的操作,先删除id=1的记录,然后更新id=2的记录,再提交.对于删除操作,mysql底层会记录好被删除的数据行的删除事务id,对于更新操作mysql 底层会新增一行相同数据并记录好对应的创建事务id

在id为12的事务里执行查询操作mysql 底层会带上过滤条件,创建事务id<=max(当事务id 为12 ,快照点已提交最大事务id ,删除事务id >max[当前事务id为12 ,快照点已提交最大事务id])

注意:begin/start transaction 命令并不是一个事务的起点,在执行到它们之后的第一个操作 InnoDB表的语句,事务才真正启动,才会向mysql申请事务id,mysql 内部是严格按照事务的启动顺序来分配事务id的

本文作者:张三Blog

本文链接:https://www.cnblogs.com/zhangsan-plus/p/16503290.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   张三Blog  阅读(26)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起