D

RuntimeScope · MySQL Interview Lab

MySQL 面试执行实验室

不是背八股,而是看见一条 SQL 如何在 InnoDB 里跑起来。用可暂停 Lab 动画拆解索引、Buffer Pool、MVCC、锁、EXPLAIN 和慢查询排障。

解决什么

把高频 MySQL 面试题还原成一条 SQL 的真实执行路径。

为什么这样学

先查找数据,再看存储、可见性、锁、计划和排障闭环。

Lab 强在哪

每一步都能暂停,看状态变化、追问答案和常见误区。

你会学会什么

把 7 个高频追问变成可执行路径

每个问题都对应后面的章节和 Lab,不先堆定义,先看 SQL 在引擎里发生了什么。

  1. Q01

    SELECT * 为什么会回表?什么时候不会回表?

  2. Q02

    联合索引最左前缀到底怎么判断?

  3. Q03

    Buffer Pool、页、聚簇索引是什么关系?

  4. Q04

    RR 和 RC 下 ReadView 创建时机有什么不同?

  5. Q05

    next-key lock 为什么能阻止幻读?

  6. Q06

    EXPLAIN 的 type、key、rows、Extra 怎么连起来分析?

  7. Q07

    慢查询来了,如何定位、修改、验证和回滚?

学习路线图

为什么必须按这个顺序学

路线从一次索引查找开始,逐层进入 InnoDB 存储、事务可见性、锁、执行计划,最后回到线上排障。

  1. STEP 1

    一条 SQL 先找到数据

    索引与查询路径

    先把二级索引、主键和回表路径看见,否则后面的页、锁、EXPLAIN 都没有落点。

  2. STEP 2

    数据存在 InnoDB 页/B+Tree 里

    InnoDB 存储结构

    知道行在聚簇索引页里,才能理解 Buffer Pool 命中、页分裂和主键成本。

  3. STEP 3

    多事务读写时 MVCC 决定可见版本

    事务与 MVCC

    把 ReadView 和 undo 版本链放到时间线上,回答 RR/RC 的追问才稳定。

  4. STEP 4

    写冲突和范围查询由锁控制

    锁与并发控制

    范围查询会落到索引轴上的 record、gap、next-key,等待关系才说得清。

  5. STEP 5

    性能问题用 EXPLAIN 分析

    SQL 优化与 EXPLAIN

    把 type、key、rows、Extra 翻译成真实执行路径,而不是背字段定义。

  6. STEP 6

    最后进入工程排障闭环

    工程场景与排障

    慢查询、锁等待、索引上线和回滚,都要回到证据、修改、验证、兜底。

SQL 执行全景地图

从 Client 到 InnoDB 的可点击结构图

点击任意节点进入对应章节。主链路说明 SQL 如何流动,分支说明 InnoDB 内部哪些结构参与执行。

6 个章节入口

每章都有明确面试能力和 Lab 观察点

保留现有 6 个章节入口,并把每章从目录项升级为“问题 -> 动画 -> 能力”的学习单元。

  • 1

    索引与查询路径

    基础必会

    核心问题

    SELECT * FROM user WHERE name='Tom' 为什么会回表?

    本章动画看什么

    二级索引 -> 主键 -> 聚簇索引 -> 完整行

    面试能力

    能解释回表、覆盖索引、联合索引、索引下推

    Lab A · Index Lookup12 问追问链
    进入索引 Lab
  • 2

    InnoDB 存储结构

    中高频

    核心问题

    Buffer Pool、页和聚簇索引到底怎么连在一起?

    本章动画看什么

    页命中 -> B+Tree 叶子 -> 隐藏字段 -> 行记录

    面试能力

    能解释页、区、聚簇索引、主键设计和 Buffer Pool

    关联 Lab A · 聚簇/二级索引路径10 问追问链
    进入存储 Lab
  • 3

    事务与 MVCC

    高频追问

    核心问题

    RR 和 RC 下,为什么同一条 SELECT 可能读到不同版本?

    本章动画看什么

    事务时间线 -> ReadView -> undo 版本链 -> 可见版本

    面试能力

    能判断 ReadView 创建时机、快照读、当前读和长事务风险

    Lab B · MVCC ReadView14 问追问链
    进入 MVCC Lab
  • 4

    锁与并发控制

    高频追问

    核心问题

    next-key lock 为什么能阻止幻读?它到底锁住了什么?

    本章动画看什么

    索引轴 -> record/gap/next-key -> insert intention 等待

    面试能力

    能解释范围锁、幻读、死锁治理和无索引更新风险

    Lab C · Next-Key Lock13 问追问链
    进入锁 Lab
  • 5

    SQL 优化与 EXPLAIN

    高级闭环

    核心问题

    EXPLAIN 的 type、key、rows、Extra 怎么串成执行路径?

    本章动画看什么

    坏计划 -> rows 估算 -> filesort -> 联合索引改造

    面试能力

    能把 EXPLAIN 字段翻译成索引选择、排序成本和验证指标

    Lab D · EXPLAIN Plan15 问追问链
    进入 EXPLAIN Lab
  • 6

    工程场景与排障

    高级闭环

    核心问题

    线上慢查询来了,如何定位、修改、验证和回滚?

    本章动画看什么

    慢日志/APM -> EXPLAIN -> 改造方案 -> 灰度验证

    面试能力

    能用证据链处理慢查询、锁等待、缓存一致性和索引上线

    关联 Lab D · 优化闭环11 问追问链
    进入排障 Lab

普通教程 vs RuntimeScope

区别不在动效,而在能不能把追问讲完整

动画只服务理解:看见状态变化,才能把概念、面试表达和工程判断连起来。

普通教程

  • 背概念
  • 看静态图
  • 答案碎片化
  • 很难应对追问

RuntimeScope

  • 看执行路径
  • 可暂停 Lab 动画
  • 每步都有“当前发生什么 / 为什么 / 面试怎么答 / 常见误区”
  • 有追问链和工程判断

推荐学习方式

按目标选择进入方式

完整学习、查漏补缺和工程排障都能进入同一套章节与 Lab,不需要重新找入口。

MODE 1

面试冲刺模式

按 1->6 章顺序学,每章刷追问链。

适合需要快速形成完整回答框架的人。

MODE 2

查漏补缺模式

哪里不会点哪里,比如 MVCC、锁、EXPLAIN。

适合已经有基础,但追问时容易断线的人。

MODE 3

工程排障模式

直接从慢查询/锁等待案例反推底层机制。

适合有项目经验,需要把机制讲成闭环的人。

Reference Guardrail

参考依据保留为校验来源

首页先讲执行路径和面试能力;参考书目用于校验术语和边界,避免 Lab 动画变成脱离资料的想象。

高性能 MySQL(第 4 版)

Baron Schwartz / Jeremy Zaitsev / Peter Zaitsev 等

索引设计、查询优化、Schema 与运维闭环的经典参考。

MySQL 技术内幕:InnoDB 存储引擎(第 2 版)

姜承尧

InnoDB 页结构、Buffer Pool、MVCC、锁机制的工程级拆解。

MySQL 8.4 Reference Manual

Oracle / MySQL

索引、InnoDB、EXPLAIN 等机制的权威定义。