科技颠覆者 发表于 2025-2-19 12:00:18

MYSQL--一条SQL执行的流程,分析MYSQL的架构

执行一条select 语句中心会发生什么? 这个是对 mysql 架构的深入明确。
select * from product where id = 1;
对于mysql的架构分层:
https://i-blog.csdnimg.cn/img_convert/6fde0c7f3a9b3c94d9efbed86bc0db72.png
mysql 架构分成了 Server 层和存储引擎层:
Sever 层 负责建立连接、分析和执行 sql 语句。 一些核心功能模块比如剖析器天生语法树,预处置惩罚器、优化器、执行器这些。
在存储引擎层:支持 InnoDB 存储引擎。底层使用的是 B+树。mysql5.5 之后 InnoDb 成为默认的存储引擎了。
第一步建立连接

通过连接器和 mysql 的客户端建立连接,连接的过程需要使用 TCP 三次握手。
msyql -u root -p

在输入对应的密码就登录成功了
查看 mysql 当前有多少连接数量:
show processlist;
执行了一次查询就算建立连接了,连接默认是八个小时,超过这个数量就会自动的断开。
https://i-blog.csdnimg.cn/img_convert/22b3265a729604952f4ca85cf830f117.png
连接数太多了
https://i-blog.csdnimg.cn/img_convert/d28fc327244858849b8eb07be38647ae.png
删除了查询缓存,在 mysql8 之前有缓存的内容。
https://i-blog.csdnimg.cn/img_convert/7965824763c0f71ee5f69a4e3b82980e.png
第二部剖析 SQL

剖析器会做两件事变,第一个是词法分析:
mysql 会根据你输入的字符串识别出关键字出来,比如 select username from userinfo 会剖析出来 4 个 token,有两个 key word,是 select 和 from。
第二个进行语法的分析:
根据词法分析的效果,语法剖析器根据语法规则判断输入的 sql 是否满意 MYSQL 的语法。没有题目就构建出来 sql 语法树。
构成一个这样的语法树。
https://i-blog.csdnimg.cn/img_convert/8ac479693a6fd7201d1071fa24669f0b.png
https://blog.csdn.net/zhang24360/article/details/128963299 语法树的详细内容
第三步执行 sql

分为三个阶段 预处置惩罚 优化阶段 执行阶段
预处置惩罚

预处置惩罚阶段:
查抄 sql 查询语句中的表大概字段是否存在。
将 select * 中的*符号扩展为表上的所有列。
优化阶段

优化阶段:
需要确定一个执行筹划,比如现在有多个索引到底用哪一个索引。确定 sql 查询语句的执行方案。
想要知道选择哪个索引可以在查询语句之前加一个 explain 下令,会展示书 sql 语句的查询筹划。
https://i-blog.csdnimg.cn/img_convert/ff29b4c06c0452b9a0c2a9634976622d.png
查询主键索引 B+树的资本会高于查询二级索引 B+树的资本,优化器会基于查询资本思量选择代价最小的普通索引。
执行阶段

执行阶段:
这个时候 server 层要去和存储引擎层进行交互了:
比如有 全表扫描、主键索引查询、索引下推。
索引下推

https://i-blog.csdnimg.cn/img_convert/eff7c2e33e79c1ffc8d8c46e7337e1e7.png
https://i-blog.csdnimg.cn/img_convert/efc54b4103990949dd000a8d51283248.png
https://i-blog.csdnimg.cn/img_convert/2cf70b2cb4ae0b40b4f5b52d27382f54.png
索引下推是淘汰二级索引的回表查询操作,提高查询的服从。将 Server 层做的一些事变交给了存储引擎层去做。
查询 age>20 的时候遇到>联合索引就会失效了,这个时候就需要回表查询 reward 是否是即是 1000 的。
这样服从太慢了,直接在存储引擎层去判断 reward 是否即是 1000. 如果成立在回表给 Server 层操作。
https://i-blog.csdnimg.cn/img_convert/c37cfa5e7f0cd9f7b149c757602a96e9.png

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: MYSQL--一条SQL执行的流程,分析MYSQL的架构