Skip to content
目录概览

InnoDB存储引擎的锁的算法有那些?

  • 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