目录
目标
对mysql的学习总结,我会从执行引擎、索引、sql、锁、MVCC、事务等几个部分进行阐述。本节阐述MVCC。
名词解释
multi-version-concurrency-control 多版本并发控制
作用范围
针对重复读和读提交两个隔离级别的select生效
快照读
snapshot read
选快照
记录A已加事务1的排他锁,当其它事务2通过select读记录A时,事务2直接读取记录A的undo log里最近提交的版本的数据。
当数据修改后会产生一个快照,其版本可以理解为是事务ID,所以选择快照的方式为"快照的版本号小于当前事务ID,且距离当前事务ID最近"。
不同隔离级别的表现
很重要,很多文章只是片面的讲解重复读的表现。
重复读
同一事务中多次读,以第一次读时所选择的快照为准,所以解决不可重复读问题。
读提交
一个事务中多次读则每次读都会重新获取最新版本,所以仍可能出现不可重复读问题。