跳到主要内容

1 篇博文 含有标签「MVCC」

多版本并发控制:undo 版本链、Read View 与快照读

查看所有标签

面试题:InnoDB 的四种隔离级别到底隔离了什么?MVCC 的快照读为什么在可重复读下看不见别人提交的数据、undo 版本链和 Read View 怎么配合、当前读为什么必须加锁、间隙锁又怎么在等值查询里锁住一整片区间、线上死锁该怎么读?

· 阅读需 27 分钟

这是「每日一题」专栏的第二十五篇。每天一道面试题,后端 + AI 混合路线,从原理到代码一次讲清。上一篇是 PD 分离为什么能提速,今天按轮换回到后端/分布式方向,兑现上一篇的预告:InnoDB 的隔离级别、MVCC 与锁。

这题是「八股文浓度最高」的一道。几乎所有人都能背出那张四行三列的隔离级别表,也都能说出「RR 靠 MVCC 实现可重复读」。但面试官只要往下压两层——「MVCC 具体怎么让一条旧记录变回旧值?」「既然 RR 用 MVCC 解决了幻读,那间隙锁是干什么用的?」——大部分人就开始绕了。今天不谈结论,只谈机制,并且每一条机制都在 MySQL 8.0.46 上跑出来给你看。