mysql间隙锁 是默认开启的吗,每次查询都会走间隙锁吗

mysql间隙锁 是默认开启的吗,每次查询都会走间隙锁吗。在RR可重复读的隔离下

控制间隙锁的参数是:innodb_locks_unsafe_for_binlog 默认是关闭的
每次查询不一定会走间隙锁,间隙锁是索引上的锁,当索引不唯一时,才会触发间隙锁。如果根据主键或者唯一值的索引时,不会触发间隙锁。

间隙锁主要作用是为了防止出现幻读,但是锁定范围会扩大。
mysql5.6  innodb存储引擎,默认隔离级别repeatable-read,可重复读。innodb_locks_unsafe_for_binlog, 参数默认值是OFF,也就是启用间隙锁, 它是一个bool值, 当值为true时表示disable间隙锁。
查询走索引,索引会锁住间隔的数据
自增索引不断插入查询(并发)的时候,会有间隙锁。