mysql隔离级别

http://www.zsythink.net/archives/1233/

1、select @@tx_isolation;  默认是REPEATABLE-READ   可重复读

2、select @@innodb_locks_unsafe_for_binlog; 默认是0 开启间隙锁 1关闭间隙锁

 

 

 

2. 阐述了一些概念:

认识锁的算法

 

nnoDB存储引擎的锁的算法有三种:

  • Record lock:单个行记录上的锁

  • Gap lock:间隙锁,锁定一个范围,不包括记录本身

  • Next-key lock:record+gap 锁定一个范围,包含记录本身

Lock的精度(type)分为 行锁、表锁、意向锁

Lock的模式(mode)分为:

  • 锁的类型 ——【读锁和写锁】或者【共享锁和排他锁】即 【X or S】

  • 锁的范围 ——【record lock、gap lock、Next-key lock】

知识点

  1. innodb对于行的查询(rr级别的当前读)使用next-key lock

  2. Next-locking keying为了解决Phantom Problem幻读问题

  3. 当查询的索引含有唯一属性时,将next-key lock降级为record key

  4. Gap锁设计的目的是为了阻止多个事务将记录插入到同一范围内,而这会导致幻读问题的产生

  5. 有两种方式显式关闭gap锁:(除了外键约束和唯一性检查外,其余情况仅使用record lock) A. 将事务隔离级别设置为RC B. 将参数innodb_locks_unsafe_for_binlog设置为1

posted @ 2020-12-08 16:08  jiangxi  阅读(91)  评论(0)    收藏  举报