MVCC 及 MYSQL的Repeatable Read隔离级别的幻读

发布时间 2023-04-05 21:15:25作者: 大枇杷

当前读 和 快照读

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