MySQL
MySQL
通过可执行 SQL 连接索引、执行计划、事务隔离与死锁排查。
- 适用人群
- 已会编写 SQL,希望理解查询与并发行为的开发者
- 前置知识
- SELECT、UPDATE、主键与事务基本语法
- 版本与验证
- 样例以 MySQL 8.4 / InnoDB 为准;其他引擎与版本单独核对。
01基础理解
- MySQL 索引:聚簇索引、二级索引与回表
观察二级索引如何定位记录,以及什么是覆盖查询。
MySQL 8.4:隔离实例功能验证;执行计划的耗时不作为固定结果。 - MySQL 事务隔离:复现可重复读的快照行为
通过两个连接比较同一事务内和提交后的读取。
MySQL 8.4:隔离实例功能验证;执行计划的耗时不作为固定结果。
02实践应用
- MySQL EXPLAIN:从估计计划到实际执行
区分估计行数与实际执行信息,避免误读计划。
MySQL 8.4:隔离实例功能验证;执行计划的耗时不作为固定结果。 - MySQL 联合索引:区分定位范围、过滤与回表
把联合索引的定位、过滤与读取记录分开观察。
本轮通过隔离 MySQL 8.4 功能实验;计划与锁行为仅限正文条件,未做性能测试。 - MySQL ICP:用开关对比索引条件下推
通过相同查询的计划对比理解 ICP 的作用位置。
本轮通过隔离 MySQL 8.4 功能实验;计划与锁行为仅限正文条件,未做性能测试。 - MySQL 分页:用稳定排序比较 OFFSET 与游标
在主键不连续、排序值重复时正确构造下一页条件。
本轮通过隔离 MySQL 8.4 功能实验;计划与锁行为仅限正文条件,未做性能测试。
03问题排查
- MySQL 锁等待与死锁:用两个事务复现
观察循环等待与死锁回滚,建立排查顺序。
MySQL 8.4:隔离实例功能验证;执行计划的耗时不作为固定结果。 - MySQL 无索引更新:为什么阻塞很多行却不是锁升级
根据 data_locks 区分扫描范围扩大与表级排他锁。
本轮通过隔离 MySQL 8.4 功能实验;计划与锁行为仅限正文条件,未做性能测试。
延伸实践
以下是保留历史 URL 的补充练习。新增示例的版本和运行范围在各篇中单独说明;它们不替代上方的核心路线。
学完之后
能阅读索引访问计划,复现一致性读,并识别循环锁等待。
继续选择学习专题