草庐IT

MySQL间隙锁(幻读解决原理)

文章目录一、间隙锁概念二、测试间隙锁范围加锁场景1:用不可重复的主键id测试间隙锁场景2:用可重复的age(有索引)测试间隙锁场景3:实际情况需要具体分析用的到底是行锁还是表锁三、测试等值间隙锁1.测试不能重复的主键索引2.测试能重复的辅助索引一、间隙锁概念当我们用范围条件而不是相等条件检索数据,并请求共享或排他锁时,InnoDB会给符合条件的已有数据记录的索引项加锁;对于键值在条件范围内但并不存在的记录,叫做“间隙(GAP)”,InnoDB也会对这个“间隙”加锁,这种锁机制就是所谓的间隙锁举例来说,假如user表中只有101条记录,其userid的值分别是1,2,…,100,101,下面的S