参考答案
结论:InnoDB在可重复读(RR)级别通过MVCC快照读和Next-Key Lock当前读解决幻读;串行化通过完全加锁解决。原理:幻读指同一事务内多次范围查询因其他事务插入新行导致结果集变化。RR下,普通SELECT为快照读,依赖MVCC版本链保证读取一致性,避免看到新插入行;若使用SELECT ... FOR UPDATE等当前读,InnoDB采用Next-Key Lock(记录锁+间隙锁)锁定查询范围及间隙,阻止其他事务插入;串行化则对所有读加共享锁,完全避免幻读但性能低。对比:读已提交(RC)仅解决脏读,存在幻读;读未提交连脏读都有。