关于锁的算法
InnoDB存储引擎有3种行锁的算法,其分别是:
Record Lock:单个行记录上的锁,它会锁住索引记录,如果InnoDB存储引擎表在建立的时候没有设置任何一个索引,那么这时InnoDB存储引擎会使用隐式的主键来进行锁定;
Gap Lock:间隙锁,锁定一个范围,不包含记录本身;
Next-Key Lock:Gap Lock + Record Lock,锁定一个范围,包含记录本身。Next-Key Lock可以解决幻读问题(Phantom Problem)。
当查询的索引含有唯一属性时,InnoDB存储引擎会对Next_Key Lock进行优化,将其降级为Record Lock,即仅锁住索引本身,而不是范围。