首页 > 数据库 >带你5分钟搞懂一条SQL查询语句是如何执行的

带你5分钟搞懂一条SQL查询语句是如何执行的

时间:2022-10-07 10:00:27浏览次数:48  
标签:语句 缓存 MySQL 查询 --- SQL 搞懂 执行

前言

平时我们使用数据库查询,我们看到的只是输入一条语句,返回一个结果,却不太关心这条语句在MySQL内部的执行过程,所以今天我想把MySQL的查询过程拆解一下,借由这个过程,对MySQL有更深入的了解,大体来说,MySQL可以分为Server层和存储引擎层两部分,Server层包包括连接器、查询缓存、分析器、优化器、执行器等。存储引擎层负责数据的存储和提取。示例图如下:

带你5分钟搞懂一条SQL查询语句是如何执行的_缓存

连接器

第一步需要先连接到这个数据库上,负责处理连接的就是连接器,连接器负责跟客户端简历连接、获取权限、维持和管理连接。

查询缓存

连接建立完成后,那就可以执行select语句了,首先查询缓存,之前是不是执行过这条语句,之前执行过得语句及其结果可能会以key-value的形式缓存在内存中,key是查询的语句,value是查询的结果。如果命中缓存,那么对应的value就会直接返回给客户端。否则继续后面的执行阶段,执行完成后,执行结果会被存入查询缓存中。我们可以看到,如果命中缓存,可以直接返回结果,效率会很高。

缓存是一把双刃剑,有利也有弊,对于更新比较频繁的数据库来说,数据每次更新,这个表上所有的查询缓存都会被清空,这样对数据库就会造成一定压力,所以查询缓存我们应该按需使用。

分析器

如果没有命中查询缓存,则继续执行后续过程,首先需要对SQL语句进行解析,分析器先会做“词法分析”,识别出里面的字符串分别代表什么,然后就要做“语法分析”,根据词法分析的结果,语法分析器会根据语法规则,判断你输入的这个SQL语句是否满足MySQL语法。

优化器

经过了分析器,MySQL就知道你要做什么了,在执行前还要经过优化器的处理。

优化器是在表里面有多个索引的时候,决定使用哪个索引,或者在一个多表关联的语句中,决定各个表的连接书序。

优化器执行完成后就生成一个执行方案,然后进入执行器阶段。

执行器

开始执行的时候,先要判断一下你对这个表有没有执行查询的权限,如果没有,则会返回没有权限的错误,如果有权限,就打开表根据上一步生成的执行计划继续执行,并将所有满足条件的行组成记录集作为结果集返回给客户端。

小结

对于一个SQL语句完整执行流程如下:连接,权限校验(如果命中缓存)---》查询缓存---》分析器---》优化器---》权限校验---》执行器---》引擎。

标签:语句,缓存,MySQL,查询,---,SQL,搞懂,执行
From: https://blog.51cto.com/u_15773567/5734232

相关文章

  • 一. mysql数据库优化总结
    四大优化方面:    减少数据访问减少磁盘访问1.建表、表字段2.索引 2.1为什么要用索引 2.2 索引分类 2.3 什么时候用索......
  • CentOS 7.9 安装 MySQL 5.7.35
    CentOS7.9安装MySQL5.7.351下载地址:https://downloads.mysql.com/archives/community/2mysql5.7.35安装包上传到linux服务器使用Xftp或者wget在服务器上下载......
  • Day15 SQL巩固学习
    SQL语法学习大二学习的数据库到现在已经快忘的差不多了,只会一些简单的增删改查,groupbyorderby等都忘记了,决定重新复习一些SQL语法ORDERBY该ORDERBY关键字用于按......
  • 结构化 SQL 生成器
    https://github.com/liyupi/sql-generator在线使用:http://sql.yupi.icu/项目介绍视频:https://www.bilibili.com/video/BV1qa411J7vh/......
  • MySQL项目2 - 淘宝用户分析
    来源:淘宝用户分析目的:通过实战案例,掌握电商数据分析逻辑和对应的SQL语句实例应用。从数据到信息的这个过程,就是数据分析,目的是解决我们现实中的某个问题或者满足现实中......
  • Mysql索引
    索引概念:索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可提高数据库中特定数据的查询速度。索引特点:索引的优点主要有以下几条:(1)通过创建唯一索引,可以保......
  • MySQL必知必会 pdf
    高清扫描版下载链接:https://pan.baidu.com/s/10kYeopkv82DvMRo5DfwYVg点击这里获取提取码 ......
  • 关于windows-server-下MySQL Community版本的的安装与配置
    在公司电脑或者服务器上安装软件,都是有要求的,要么购买license(这个需要申请,难度较大),要么安装免费开源的软件笔者最近想要安装mysql服务环境,用于数据存储及开发一些功能程序......
  • 06.if & if-else语句
    if语句if语句也称为条件判断语句。通过if语句可以为语句的执行设置一些条件,条件满足时语句执行,否则语句不执行。语法一if(条件表达式){语句}这是最简单的if语......
  • CentOS7安装MySQL8.0 -2022
    CentOS(CommunityEnterpriseOperatingSystem)是Linux发行版之一,它是来自于RedHatEnterpriseLinux(RHEL)依照开放源代码规定发布的源代码所编译而成。由于出自同样的源......