(二)深入理解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 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步