加锁规则

  1. 查询过程中访问到的对象才会加锁,加锁的基本单位是next-key lock(前开后闭);
  2. 等值查询:
    1. 如果是唯一索引查询,next-key lock会退化成行锁;
    2. 如果不是唯一索引,需要访问到第一个不满足条件的值,此时next-key lock会退化成间隙锁。
  3. 范围查询:无论是否是唯一索引,范围查询都需要访问到不满足条件的第一个值为止。
  1. CREATE TABLE `t` (
  2. `id` int(11) NOT NULL,
  3. `c` int(11) DEFAULT NULL,
  4. `d` int(11) DEFAULT NULL,
  5. PRIMARY KEY (`id`),
  6. KEY `c` (`c`)
  7. ) ENGINE=InnoDB;
  8. insert into t values(0,0,0),(5,5,5),
  9. (10,10,10),(15,15,15),(20,20,20),(25,25,25);