SQL 执行流程

SQL 执行流程

你就记一条完整链路:从写 SQL → 到数据库返回结果,一共这几步。

1. 应用层发起

  • Java 代码调用 mapper 方法
  • MyBatis 拼接 SQL、参数
  • 通过 JDBC 向 MySQL 发送请求

2. 连接器层(Connection)

  • 验证账号密码、权限
  • 建立连接,拿到执行线程

3. 查询缓存(MySQL 8.0 已去掉)

  • 先查缓存有没有相同 SQL
  • 命中直接返回
  • 没命中继续往下

4. 解析器(Parser)

  • 词法分析:拆出关键字(select、from、where...)
  • 语法分析:检查 SQL 语法是否合法
  • 生成解析树

5. 预处理器(Preprocessor)

  • 检查表名、字段名是否存在
  • 处理视图、表达式
  • 生成新的解析树

6. 优化器(Optimizer)

  • 决定走哪个索引
  • 决定 join 顺序
  • 生成最优执行计划

7. 执行器(Executor)

  • 调用存储引擎接口
  • 先查缓冲池(Buffer Pool)
  • 不命中再去磁盘加载数据

8. 存储引擎

  • InnoDB 负责实际数据读取/写入
  • 返回结果给执行器

9. 结果返回

  • 依次返回客户端
  • MyBatis 封装成 Java 对象(List/Bean)

面试一句话背诵版

SQL 流程是:应用通过 JDBC 发送 SQL → 连接器鉴权 → 解析器语法解析 → 预处理器校验 → 优化器生成执行计划、选择索引 → 执行器调用存储引擎查询数据 → 最后结果返回并由 MyBatis 映射成 Java 对象。

相关推荐
星星也在雾里7 小时前
PgBouncer 解决 PostgreSQL 连接数超限 + 可视化监控
数据库·postgresql
雨辰AI8 小时前
SpringBoot3 + 人大金仓读写分离 + 分库分表 + 集群高可用 全栈实战
java·数据库·mysql·政务
长城20249 小时前
关于MySql的ONLY_FULL_GROUP_BY问题
数据库·mysql·聚合列
常常有9 小时前
MySQL 底层执行原理:输入SQL语句到两阶段提交
数据库·sql·mysql
Mr. zhihao9 小时前
深入解析redis基本数据结构
数据结构·数据库·redis
m0_748839499 小时前
利用天正暖通CAD快速掌握风管数量统计的方法
数据库
随身数智备忘录9 小时前
什么是设备管理体系?设备管理体系包含哪些核心模块?
网络·数据库·人工智能
海市公约10 小时前
MySQL更新语句执行全流程:从Buffer Pool修改到二阶段提交
数据库·mysql·binlog·innodb·undo log·二阶段提交·update执行原理
颂love10 小时前
MySQL的执行流程
android·数据库·mysql
海市公约11 小时前
一条SQL查询的完整旅程:MySQL执行流程深度解析
sql·mysql·数据库优化·执行计划·连接器·查询缓存·sql执行原理