MySQL(一)——执行一条select语句期间会发生什么?
1. MySQL 的架构共分为两层:Server 层和存储引擎层
2. 包括连接器,查询缓存、解析器、预处理器、优化器、执⾏器等。另外,所
有的内置函数(如⽇期、时间、数学和加密函数等)和所有跨存储引擎的功
能(如存储过程、触发器、视图等。)都在 Server 层实现。
3. InnoDB 成为了 MySQL 的默认存储引擎。我们常说的索引数据结构,InnoDB
⽀持索引类型是 B+树
4. 先经过 TCP 三次握⼿,因为 MySQL 是基于 TCP 协议进⾏传输的
5. 可以看到,使⽤⻓连接的好处就是可以减少建⽴连接和断开连接的过程,所
以⼀般是推荐使⽤⻓连接。
6. 连接器的作⽤
与客户端进⾏ TCP 三次握⼿建⽴连接;
校验客户端的⽤户名和密码,如果⽤户名或密码不对,则会报错;
如果⽤户名和密码都对了,会读取该⽤户的权限,然后后⾯的权限逻辑判断
都基于此时读取到的权限;
1. 查询缓存——MySQL 服务收到 SQL 语句后,就会解析出 SQL 语句的第⼀
个字段,看看是什么类型的语句
2
MySQL 8.0 开始,执⾏⼀条 SQL 查询语句,不会再⾛到查询缓存这个阶段
了
2. 解析SQL——MySQL 会先对 SQL 语句做解析,这个⼯作交由「解析器」来
完成。
1.词法分析【构建语法树】2.语法分析【检查语法】
3. 执⾏SQL——每条 SELECT 查询语句流程主要可以分为下⾯这三个阶段prepare
阶段,也就是预处理阶段;optimize 阶段,也就是优化阶段;execute 阶
段,也就是执⾏阶段(预处理器、优化器、执⾏器)
4. 优化器主要负责将 SQL 查询语句的执⾏⽅案确定下来
,⽐如在表⾥⾯有多个索引的时候,优化器会基于查询成本的考虑,来决定
选择使⽤哪个索引
5. 【执⾏器】执⾏器就会和存储引擎交互了,交互是以记录为单位的
6. 总结
执⾏⼀条 SQL 查询语句,期间发⽣了什么?
连接器:建⽴连接,管理连接、校验⽤户⾝份;
查询缓存:查询语句如果命中查询缓存则直接返回,否则继续往下执⾏。
MySQL 8.0 已删除该模块;
解析 SQL,通过解析器对 SQL 查询语句进⾏词法分析、语法分析,然后构
建语法树,⽅便后续模块读取表名、字段、语句类型;
执⾏ SQL:执⾏ SQL 共有三个阶段:
预处理阶段:检查表或字段是否存在;将 select * 中的 符号扩展为表
上的所有列。
优化阶段:基于查询成本的考虑, 选择查询成本最⼩的执⾏计划;
执⾏阶段:根据执⾏计划执⾏ SQL 查询语句,从存储引擎读取记录,返
回给客户端;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~