Record lock:单个行记录上的锁。Gap lock:间隙锁,锁定一个范围,不包括记录本身,用于阻止多个事务将记录插入到同一范围内,避免幻读问题。Next-key lock:record+gap,锁定一个范围,包含记录本身,InnoDB对于行的查询默认使用next-key lock。相关知识点:InnoDB使用next-key lock是为了解决Phantom Probl...
调查后发现,当当前索引是一个 普通索引 的时候,会加一个gap lock来防止幻读, 此gap lock 会锁住一个左开右闭的区间。 假设索引为xx_idx(xx_id),数据分布为1,4,6,8,12,当更新xx_id=9的时候,这个时候gap lock的锁定记录区间就是(8,12],也就是锁住了xxid in (9,10,11,12)的数...
3. 记录锁(Record Lock)定义:记录锁也属于行锁中的一种,只不过记录锁的范围只是表中的某一条记录。触发条件:精准条件命中,并且命中的条件字段是唯一索引。作用:避免数据在查询时被修改的重复读问题,也避免了在修改的事务未提交前被其他事务读取的脏读问题。4. 间隙锁(Gap Lock)定义:间隙锁...
临键锁(Next-key Locks):临键锁是一种更高级的锁机制,它结合了记录锁和间隙锁的特点,用于锁定索引记录及其索引范围。临键锁的主要目的是防止幻读问题,确保在高并发环境下数据的一致性。在RC隔离级别下,临键锁的效果将失效。本文要点总结:本文详细介绍了MySQL中记录锁、间隙锁和临键锁的使用场景...
1. 它不会阻塞其他任何锁;2. 它本身仅会被 gap lock 阻塞。在学习 MySQL 过程中,一般只有在它被阻塞的时候才能观察到,所以这也是它常常被忽略的原因吧...GAP LOCK 在此例中,另外一个重要的点就是 gap lock,通常情况下我们说到 gap lock 都只会联想到 REPEATABLE-READ 隔离级别利用其解决幻...