SQL面试题更新 2026-08-05

请完整阐述一条 SQL 语句从客户端发送到 MySQL 服务器后,在服务端内部的整个执行流程是怎样的?

后端开发技术原理MySQLSQL

考察说明

考查对 MySQL 服务端核心组件及 SQL 执行全链路机制的理解。

回答思路

  1. 【回答框架 1】MySQL 采用典型的客户端-服务器架构,SQL 语句的执行可分为连接管理、查询解析、优化、执行和返回结果五个主要阶段。
  2. 【回答框架 2】首先,客户端与服务器建立连接,连接器负责认证、权限校验(如查询权限)以及维护连接状态,连接建立后,后续 SQL 都在该连接上下文中执行。
  3. 【回答框架 3】接着,查询缓存(MySQL 8.0 之前)可能被检查,若命中则直接返回结果,但 8.0 已移除该功能;未命中则进入解析阶段,解析器对 SQL 进行词法分析和语法分析,生成语法树。
  4. 【回答框架 4】然后进入优化器,优化器根据统计信息和代价模型选择最佳执行计划,包括决定表扫描方式(全表扫描或索引扫描)、连接顺序、使用哪个索引等;得到执行计划后,由执行器调用存储引擎 API 来真正读写数据,执行过程中会检查访问权限,并返回结果集给客户端。
  5. 【关键点 1】一条 SQL 的执行路径:连接器 -> 查询缓存(8.0前) -> 解析器 -> 优化器 -> 执行器 -> 存储引擎。
  6. 【关键点 2】解析器负责词法分析和语法分析,生成语法树;优化器选择执行计划,如是否使用索引。
  7. 【关键点 3】执行器调用存储引擎接口,并检查权限;存储引擎负责实际数据读写。
  8. 【关键点 4】MySQL 8.0 移除了查询缓存,因为其命中率低且维护成本高。
  9. 【易错点 1】不要忽略权限检查时机:权限不仅在连接时校验,执行前也可能再次校验(如存储过程调用)。
  10. 【易错点 2】不要混淆解析和优化的职责:解析只生成语法树,不涉及选择执行路径。
  11. 【易错点 3】避免认为所有 SQL 都经过查询缓存,8.0 已删除该模块。