B站搜索“乐哥聊编程“有本篇文章配套视频 https://www.bilibili.com/video/BV1f24y117Dw
我们前面讲过MVCC机制实现了快照读,普通select 查询就是快照读,快照读到数据有可能不是最新的数据,它主要是为了实现可重复读的事务隔离级别。
读取的是最新的数据版本,当我们使用UPDATE、DELETE、INSERT、SELECT … LOCK IN SHARE MODE、SELECT … FOR UPDATE 是当前读。当前读就是加了锁的增删改查语句。
这个问题可以这么回答:在快照读的情况下,InnoDB通过MVCC机制解决了幻读现象;但是在当前读的情况下,InnoDB是无法通过MVCC解决幻读的现象,因为它每次读取的都是最新的数据。