MySQL一条SQL语句的执行过程

例:SELECT * FROM USERS WHERE age = '18' AND name = 'student';

执行过程如下图:

综合上面的说明,我们分析下这个语句的执行流程:

1、使用连接器通过客户端/服务器通信协议与MySQL建立连接,并查询是否有权限。

2、MySQL8.0之前检查是否开启缓存,开启了Query Cache且命中完全相同的SQL语句,则将查询结果直接返回给客户端。

3、解析器(分析器) 进行语法分析和语义分析,并生成解析树。如查询是select、表名是users、条件是age='18' AND name='student',预处理器则会根据MySQL规则进一步检查解析树是否合法。比如检查要查询的数据表或数据列是否存在等。

4、优化器生成执行计划,根据索引看看是否可以优化。

5、执行器来执行SQL语句,这里具体的执行会操作MySQL的存储引擎来执行SQL语句,根据存储引擎类型得到查询结果,若开启了Query Cache则缓存,否则直接返回。

参考:Hollis

相关推荐
wespaul6 小时前
VeapAI 自然语言操作实战|第 08 篇:治理层——审计、指标、评估与权限
运维·网络·数据库
小羊没烦恼!6 小时前
浅谈SQL Server中的事务日志(二)----事务日志在修改数据时的角色
前端·数据库·后端·python·web安全·oracle
hgf10116 小时前
大内密探 · 案卷 1.2:一夫当关,万夫莫开(Receive Enable)
数据库·mysql
data analyse 4566 小时前
页面卸载时埋点上报总丢失?sendBeacon 上报与补偿方案
大数据·运维·服务器·前端·数据库·人工智能·数据分析
企查查数据服务6 小时前
充电桩集采准入:用企业数据做供应商失信批量核验
大数据·数据库·人工智能
敲上瘾6 小时前
分布式系统——Redis哨兵:自动故障转移与选举原理
linux·数据库·redis·分布式·缓存·微服务
子沫20207 小时前
mysql慢sql
sql·mysql
2501_933923257 小时前
MySQL CRUD 详解:表数据插入、更新与删除,附生产避坑指南
数据库·mysql
kaixin_啊啊7 小时前
飞牛部署Mtab完整实战:Docker安装、MySQL建库与固定地址访问
mysql·docker·容器
爱喝水的鱼丶9 小时前
SAP-ABAP:S/4 HANA ABAP 新特性入门:与 ECC ABAP 的核心差异、架构优势与学习路径规划
运维·数据库·性能优化·sap·abap·hana·开发交流