Mysql在RR隔离级别下解决幻读的方式有两种
第一种就是MVCC
大致的过程就是: 事务开启后,使用快照读就创建了一个视图,之后每次快照读就读这个视图里的数据。视图是快照图和对数据的修改、新增和删除都隔离了,所以就解决了幻读。
第二种就是加锁
能防止幻读的锁一般是间隙锁和临键锁,锁住一个范围里的数据,无法新增。新增操作就只能阻塞等待,也解决了幻读
但也不是完全能解决幻读
如果开启事务后,使用快照读创建视图之后,其它事务新增数据,此时再使用当前读就读到了最新的新增数据,与快照读数据不一致,就没有解决幻读。