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 对象。

相关推荐
啾啾Fun4 分钟前
【向量数据库】Milvus:为大规模、高性能而生的企业级向量数据库
数据库·milvus
骑士雄师6 分钟前
18.2 PostgreSQL 的安装
数据库·postgresql
海南java第二人9 小时前
Nebula Graph 实战:基于图数据库存储 CMDB 实体关系
数据库·图数据库·nebula
曹牧10 小时前
oracle:“not all variables bound”
数据库·oracle
数据库百宝箱10 小时前
Oracle RMAN Image Copy 本地恢复
数据库·oracle
zuYM4g7Dp11 小时前
NoSql数据库设计心得
数据库·nosql
睡不醒男孩03082313 小时前
第七篇:揭秘 PostgreSQL 数据库内核级管控:CLup 深度架构设计与高可用底座技术白皮书
数据库·postgresql·clup
cmes_love13 小时前
Level 2逐笔成交历史数据下载方法笔记
数据库·笔记·oracle
swordbob14 小时前
MySQL字符集陷阱:从Oracle迁移踩坑到utf8mb4强制规范
数据库·sql
牛油果子哥q14 小时前
【C++ STL string 】C++ STL string 终极精讲:底层原理、内存机制、全套API、深浅拷贝、易错坑点与工程实战规范
数据库·c++