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

相关推荐
尽兴-2 分钟前
MySQL执行UPDATE语句的全流程深度解析
数据库·mysql·innodb·dba·存储引擎·update
alonewolf_995 分钟前
MySQL 架构与SQL执行全流程深度解析
sql·mysql·架构
MXM_7777 分钟前
laravel 并发控制写法-涉及资金
java·数据库·oracle
·云扬·8 分钟前
【实操教程】Excel文件转CSV并导入MySQL的完整步骤
android·mysql·excel
进阶的小名9 分钟前
[超轻量级消息队列(MQ)] Redis 不只是缓存:我用 Redis Stream 实现了一个 MQ(自定义注解方式)
数据库·spring boot·redis·缓存·消息队列·个人开发
列御寇9 分钟前
MongoDB分片集群——分片键(Shard Keys)概述
数据库·mongodb
oMcLin14 分钟前
如何在Ubuntu 22.04 LTS上通过配置ZFS存储池,提升高吞吐量数据库的读写性能与可靠性?
linux·数据库·ubuntu
Cx330❀22 分钟前
脉脉平台深度测评:【AI创作者xAMA】从职场社交到AI创作赋能
数据库·人工智能·脉脉
f***241122 分钟前
Bug侦探团:破解技术悬案的秘密武器
数据库
Li_76953227 分钟前
Redis 进阶(八)—— 分布式锁
数据库·redis·分布式