数据库 · 单选题 · 第 40 题
计算机基础面试八股 · 第 40 题
在可重复读级别下,InnoDB 防止当前读(如 SELECT … FOR UPDATE)出现幻读,主要靠?
- A对整张表加表级共享读锁
- BAUTO-INC 自增锁(表级)
- C临键锁(记录锁 + 间隙锁)
- D单独使用表级意向锁
答案
C C. 临键锁(记录锁 + 间隙锁)
解析
临键锁同时锁住记录本身和它前面的间隙,其他事务无法在范围内插入新行,当前读也就不会读到「幻影」行。快照读的幻读则由 MVCC 处理。意向锁只是表级标记,用来快速判断表里有没有行锁,本身不阻止插入。