幻读专题
定义:同一个事务前后两次查询同一个范围,因为插入操作而导致结果不一致:加行锁,没办法阻止插入元素,因为相应的间隙没有锁
注意:标准的ANSI SQL的RR是存在幻读问题的,InnoDB通过MVCC解决了RR下的幻读问题。
InnoDB引入了间隔锁Gap Lock,行上锁且间隔也上锁,因此不能插入了。
间隙锁和行锁合称 next-key lock,每个 next-key lock 是前开后闭区间。
但是间隙锁可能会导致同样的语句锁了更大的范围,因此影响并发:可用读提交+binlog_format=row(消除间隙锁&& 数据和日志一致)