一条 SQL 查询语句是如何执行的?

递归季风
• 阅读 133

一条 SQL 查询语句是如何执行的?

MySQL 都有哪些零件?

1.连接器:管理连接,权限验证。
2.分析器:词法分析,语法分析。
3.优化器:执行计划生成,索引选择。
4.执行器:操作存储引擎,返回结果。
5.存储引擎:存储数据,提供读写接口。
一条 SQL 查询语句是如何执行的?

连接器

第一步,我们会先连接到 MySQL 数据库,此时就是连接上连接器。连接器负责和客户建立连接,获取权限,维持和管理连接。

mysql -h $ip -u root -p

查询缓存

建立好连接之后,我们就可以使用 SELECT 语句了,执行逻辑就会来到第二步:查询缓存。MySQL 会现在查询缓存看看之前是不是执行过这条语句,如果有就直接返回。在 MySQL 8.0 之后,此模块已被移除。

分析器

如果没有查询缓存,从这里 MySQL 就要开始分析我们要干什么,需要对我们编写 SQL 语句进行分析。分析器会先做词法分析,识别出字符串以及它代表的含义。然后再进行语法分析,判断我们编写的 SQL 语句有没有错误,如果有错误就会抛出错误。

优化器

经过了分析器之后,MySQL 知道你要干什么了,此时优化器会根据表结构以及语句目的来决定使用哪个方案。

执行器

MySQL 通过分析器知道了我们要做什么,通过优化器知道了该怎么做效率最高。于是就可以进入执行器,真正执行 SQL 语句了。

select * from users where name = ‘operator'

假设 users 表中,name 字段上没有建立索引,那么执行器调用 InnoDB 引擎接口取第一行,判断 name 是不是等于 operator,如不是则跳过,如果是就放在结果集中。然后再调用引擎接口取下一行,重复相同的逻辑判断,直到取到这个表的最后一行。最后将结果集返回给客户端。

※部分文章来源于网络,如有侵权请联系删除;更多文章和资料|点击后方文字直达 ↓↓↓
100GPython自学资料包
阿里云K8s实战手册
[阿里云CDN排坑指南]CDN
ECS运维指南
DevOps实践手册
Hadoop大数据实战手册
Knative云原生应用开发指南
OSS 运维实战手册
云原生架构白皮书
Zabbix企业级分布式监控系统源码文档
10G大厂面试题戳领
点赞
收藏
评论区
推荐文章
Stella981 Stella981
4年前
Explain(MySQL高级知识四)
前言:explain(执行计划),使用explain关键字可以模拟优化器执行sql查询语句,从而知道MySQL是如何处理sql语句。explain主要用于分析查询语句或表结构的性能瓶颈。注:本系列随笔如无特殊说明都MySQL版本都为5.7.22。1.explain的作用通过explainsql语句可以知道如下内容:①表的读取顺序。(
Wesley13 Wesley13
4年前
135 MySQL子查询
\TOC\一、子查询的概念将一条sql语句执行的结果作为另一个sql语句的条件二、子查询的规则以下是基于对表的增删改查操作的1.增数据时:insertinto表名select子查询注解:对一个表插入数据时,插入的数据可以是另外一个sql
Wesley13 Wesley13
4年前
Mysql 执行计划各列释义
在排查编写Mysql查询语句时,除了需要满足业务条件,还需要考虑所编写SQL的性能表现,避免出现慢SQL导致大量慢查询的情况。通常,可以通过查看执行计划的方式查看所编写SQL语句的性能优劣。此外,还可以通过查看语句的分阶段执行的时间、操作消耗来进行补充分析。1\.执行计划的列1.1.id列查询的序号1.2.s
Wesley13 Wesley13
4年前
MySQL EXPLAIN 详解
一.介绍  EXPLAIN命令用于SQL语句的查询执行计划。这条命令的输出结果能够让我们了解MySQL优化器是如何执行SQL语句的。这条命令并没有提供任何调整建议,但它能够提供重要的信息帮助你做出调优决策。先解析一条sql语句,你可以看出现什么内容1EXPLAIN SELECT
Wesley13 Wesley13
4年前
SQL语句优化
SQL语句优化规范:1\.使用mysqlexplain对sql执行效率进行检测,explain显示了mysql如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。1)使用方法:在select语句前加上explain即可2)explain分析结果形式如下:table|type
Wesley13 Wesley13
4年前
mysql 执行流程解析
MySQL可以分为Server层和存储引擎层两部分Server层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖MySQL的大多数核心服务功能,以及所有的内置函数,所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等而存储引擎层负责数据的存储和提取。其架构模式是插件式的,支持InnoDB、MyISAM、Memory
Wesley13 Wesley13
4年前
Hibernate常见知识汇总
1.在数据库中条件查询速度很慢的时候,如何优化?1.建索引2.减少表之间的关联3.优化sql,尽量让sql很快定位数据,不要让sql做全表查询,应该走索引,把数据量大的表排在前面4.简化查询字段,没用的字段不要,已经对返回结果的控制,尽量返回少量数据2.在Hibernate中进行多表查询,每个表中各取几个字段,也就是说查询出来的结果
Wesley13 Wesley13
4年前
MySQL中你必须知道的10件事,1.5万字!
!(https://oscimg.oschina.net/oscnet/8d67b5d5fa2e44018500b16cc2710eb1.png)攻击性不大,侮辱性极强1、SQL语句执行流程MySQL大体上可分为Server层和存储引擎层两部分。Server层:连接器:TCP握手后服务器
3A网络 3A网络
3年前
输入的查询 SQL 语句,是如何执行的?
输入的查询SQL语句,是如何执行的?执行如下SQL,我们看到的只是输入一条语句,返回一个结果,却不知道这条语句在MySQL内部的执行过程。textselectfromwhereid'1';上图给出的是MySQL的基本架构示意图,从中你可以清楚地看到SQL语句在MySQL的各个功能模块中的执行过程。大体来说,MySQL可以分为
浅谈SQL优化小技巧 | 京东云技术团队
回顾MySQL的执行过程,帮助介绍如何进行sql优化。(1)客户端发送一条查询语句到服务器;(2)服务器先查询缓存,如果命中缓存,则立即返回存储在缓存中的数据;(3)未命中缓存后,MySQL通过关键字将SQL语句进行解析,并生成一颗对应的解析树,MySQL
浅谈SQL优化小技巧
作者:京东零售王军回顾:MySQL的执行过程回顾MySQL的执行过程,帮助介绍如何进行sql优化。(1)客户端发送一条查询语句到服务器;(2)服务器先查询缓存,如果命中缓存,则立即返回存储在缓存中的数据;(3)未命中缓存后,MySQL通过关键字将SQL语句