几乎所有后端面试、数据库调优、慢SQL优化的底层根基,都是这一个问题:一条SQL语句,从敲下回车到返回结果,到底经历了什么?
很多开发者只会写SQL、只会用索引、只会背慢查询优化技巧,但完全不懂执行底层链路:
为什么索引失效?为什么加了索引还是慢?为什么更新SQL会产生锁、日志?为什么MySQL不推荐大事务?为什么8.0废弃查询缓存?
所有MySQL疑难问题,根源都藏在SQL完整执行生命周期里。
本文基于MySQL 8.0 + InnoDB最新稳定版本,摒弃老旧5.7过时知识点,全程分层拆解、无废话、纯硬核底层原理,区分查询SQL、更新SQL双流程,补齐服务层+存储引擎层全链路,吃透本篇,搞定90%MySQL底层面试与性能调优。
一、前置认知:MySQL双层核心架构(重中之重)
MySQL整体分为两大层级,一条SQL的执行,就是上层服务层处理逻辑 + 下层存储引擎层读写数据的完整配合。
1.1 服务层(通用层,所有引擎共用)
核心模块:连接器、解析器、预处理器、优化器、执行器、日志模块、权限模块
职责:不碰磁盘数据,只做逻辑处理、语法校验、执行计划生成、流程调度。