mysql innodb的行锁(5)键锁

  间隙锁键,是针对范围条件不存在的记录上的锁,避免不可重复读和幻象读。如果是读取提交的隔离级别,则不存在此问题。
  所以,我们在开发中,如果使用可重复读的隔离级别,要尽量减少针对一定范围记录的更新,不然会严重影响并发插入。
  
  特例:通过相等的条件,申请一个不存在的记录的锁,也会使用键锁,并影响记录的插入。
  
  
  
  
  
  
  
  
  
  
  会话1:
  root@sakila 10:49:04> select * from tab_no_index更新id=111;
  空集(0.00秒)
     
     会话2:,因为第一个会话加锁的记录不存在,所以对键加锁了,没有范围,等于所有,所以插入不了新的记录了
  root@sakila 10:47:43>插入tab_no_index值(200 ' 200 ');
  错误1205 (HY000):锁等待超时超过;试着重新启动事务
  root@sakila 10:49:17>回滚;
  查询好,0行影响(0.01秒)
     

mysql innodb的行锁(5)键锁