在InnoDB中,执行一条UPDATE语句,其WHERE条件包含id、age、name,且age<16,请问该语句会锁定哪些记录?请重点分析边界情况,例如age恰好等于16的记录是否会被锁住。
考察说明
考察对InnoDB锁机制及next-key lock原理的理解,特别是范围条件下的边界处理
回答思路
- 能说明InnoDB加锁的基本流程,根据索引情况确定扫描范围
- 准确分析age<16条件下,age=15及以下记录被锁,age=16边界如何被next-key lock覆盖
- 能解释next-key lock(记录锁+间隙锁)的作用,以及如何防止幻读
- 结合id、name条件说明复合索引或非索引情况下的锁范围差异