每天记录一道Java面试题---day34
InnoDB存储引擎的锁算法
回答重点
- Record lock:单个行记录上的锁
- Gap lock:间隙锁,锁定一个范围,包含记录本身
- Next-key lock:record+gap锁定一个范围,包含记录本身
- 相关知识:
- innodb对于行的查询使用next-key lock
- Next-locking keying 为了解决Phantom Problem幻读问题
- 当查询的索引含有唯一属性时,将next-key lock降级为record key
- Gap锁设计的目的是为了阻止多个事务将记录插入到同一范围内,而这会导致幻读问题的产生
- 有两种方式显示关闭gap锁:(除了外键约束和唯一性检查外,其余情况仅使用record lock)A.将事务隔离级别设置为RC B.将参数innodb_locks_unsafe_for_binlog设置为1