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

相关推荐
Carl_.Net软开2 分钟前
NSSM后台启动influx时序数据库
数据库·时序数据库
IPdodo_14 分钟前
静态 IP 访问异常排查:403/429 归因与迁移验收
服务器·网络·数据库·python·网络协议·php·性能测试
DevOpenClub15 分钟前
PDF 多格式解析如何避免混用输出:TEXT、HTML、XML 与 TAG 数据契约
xml·前端·数据库·pdf·html
meilindehuzi_a22 分钟前
从域名到数据库:React + Node.js 项目部署全流程与用户访问链路
数据库·react.js·node.js
泡干脆面就番茄1 小时前
MySQL_流程控制_分组查询与连接查询详解
数据库·mysql
Bode_20021 小时前
全生命周期 SQL 控制
数据库·智能制造
西西弗Sisyphus1 小时前
Qt 在无边框窗口上做一套换肤系统
开发语言·数据库·qt
神仙别闹1 小时前
基于 QT(C++)实现操作系统
数据库·c++·qt
Broccoli523026652 小时前
FastAPI + SQLAlchemy 异步会话(AsyncSession)核心方法
数据库·oracle·fastapi
坐吃山猪2 小时前
【多线程】FutureTask多线程底层实现
java·开发语言·数据库