当前读 和 快照读
MVCC,也就是多版本并发控制,是为了在读取数据时不加锁来提高读取效率和并发性的一种手段。不过可能会读到历史数据。
MVCC 作用于普通的select语句。
快照读,读取的是记录的可见版本 (有可能是历史版本),不用加锁。主要应用于无需加锁的普通查询(select)操作。
当前读,是一种悲观锁的操作。它会对当前读取的数据进行加锁,所以读到的数据都是最新的。主要包括以下几种操作:
select lock in share mode(共享锁)
select for update(排他锁)
update(排他锁)
insert(排他锁)
delete(排他锁)
在读已提交和可重复读隔离级别下的快照读,都是基于MVCC实现的!
MySQL 可重复读隔离级别并没有彻底解决幻读,只是很大程度上避免了幻读现象的发生。
https://blog.csdn.net/h2517956473/article/details/118727878
https://blog.csdn.net/m0_71777195/article/details/126968432
https://blog.csdn.net/lans_g/article/details/124232192