加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_梅州站长网 (https://www.0753zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

大白话MySQL执行SQL的流程

发布时间:2022-09-26 12:53:01 所属栏目:大数据 来源:
导读:  1、通常sql执行流程

  在这里插入图片描述

  1.1 问题1:MySQL谁去处理网络请求?

  msyql服务器谁负责从这个连接中去监听这个网络请求?谁负责从网络连接里把数据读出来?

  在这里插入
  1、通常sql执行流程
 
  在这里插入图片描述
 
  1.1 问题1:MySQL谁去处理网络请求?
 
  msyql服务器谁负责从这个连接中去监听这个网络请求?谁负责从网络连接里把数据读出来?
 
  在这里插入图片描述
 
  1.2 问题2:MySQL如何执行sql语句? 1.3 查询解析器
 
  MySQL怎么看懂和理解这些SQL?比如现在有个这样的SQL,我们人脑处理一下,只要懂SQL语法的人,立马就明白什么意思了。但是MySQL是一个数据库管理系统,他是没法直接理解这些SQL语句的!此时就有一个关键组件出场了:查询解析器。
 
  查询解析器(Parser)是负责对SQL语句进行解析的,比如上面那个sql语句进行一下拆解,可以拆解为以下几部分:
 
  要从『users』表里查询数据查询『id』字段等于1的那行数据对查询出来的那行数据要提取里面『id,name,age』三个字段
 
  所谓的SQL解析,就是按照既定的sql语法,对我们按照sql语法规则编写的sql语句进行解析,然后理解这个sql语句要干什么事情,如下图所示:
 
  在这里插入图片描述
 
  1.4 查询优化器
 
  当通过解析器理解了SQL要干什么之后,并不是马上去执行,而是要通过查询优化器(Optimizer)来选择一个最优的查询路径。就以上面那个sql查询为例,看下所谓最优查询路径是什么。
 
  要完成这个事,我们有以下几个查询路径:
 
  所以查询优化器就是针对你编写的几十行、几百行甚至上千行的复杂sql语句生成查询路径树,然后从里面选择一条最优的查询路径出来。相当于他告诉sql执行器,按照一个什么样的步骤和顺序,去执行哪些操作,然后一步一步把SQL语句就完成了。
 
  在这里插入图片描述
 
  1.5 存储引擎
 
  数据库就是一个编程语言写出来的系统而已,然后启动之后也是个进程,执行池里面的各种代码,也就是我们上面所说的那些东西。所以对数据库而言,我们的数据要不然是放在内存里,要不然是放在磁盘文件里,没什么特殊的地方!所以我们来思考一下,假设我们的数据有的存放在内存里,有的存放在磁盘文件里如下图所示。
 
  在这里插入图片描述
 
  那么问题来了,我们执行的时候是先更新内存数据?还是磁盘数据?我们如果先更新磁盘数据,是先查询哪个磁盘文件,再更新哪个磁盘文件?
 
  这个时候就需要存储引擎了。存储引擎其实就是执行sql语句的,它会按照一定的步骤去查询内存缓存数据,更新磁盘数据,查询磁盘数据等等,执行一系列数据的操作,如下图所示:
 
  在这里插入图片描述
 
  MySQL的架构设计中,SQL接口、SQL解析器、查询优化器都是用的一套组件。但是存储引擎像插件一样,支持各种各样的存储引擎的,比如我们常见的InnoDB、MylSam、Momery等。我们可以自由选择哪种存储引擎来负责具体的SQL执行。不过现在大家一般都使用InnoDB作为MySQL的存储引擎。
 
  1.6 执行器
 
  那么看完存储引擎之后,我们知道存储引擎可以帮助我们去访问内存以及磁盘上的数据,那么是谁来调用存储引擎的接口呢?其实我们现在还漏了一个执行器的概念,这个执行器会根据优化器选择的执行方案,去调用存储引擎的接口按照一定的顺序和步骤,就把SQL语句的逻辑给执行了。
 
  举个例子,比如执行器可能会先调用存储引擎的一个接口,去获取“usrs”表中的第一行数据,然后判断一下这个数据的"id”字段的值是否等于我们期望的一个值,如果不是的话,那就继续调用存储引擎的接口,去获取“users”表的下一行数据。
 
  就是基于上述的思路,执行器就会去根据我们的优化器生成的一套执行计划,然后不停的调用存储引擎的各种接口去完成SQL语句的执行计划大数据查询,大致就是不停的更新或者提取一些数据出来。如下图所示:
 
  在这里插入图片描述
 
  1.7 总结
 
  我们再来总结下MySQL的执行流程:
 
  用户发起请求到tomcat服务器,tomcat服务器中线程开始执行sql 语句首先线程从数据库的连接池中获取一个连接,建立与MySQL数据库服务器的连接MySQL的工作线程接收到SQL语句后,转交给SQL接口去执行查询解析器对SQL进行语法拆解,理解这个SQL要干什么查询优化器选择最优的查询路径,生成SQL的执行顺序和步骤交给底层的存储引擎接口去执行,他按照一定的步骤去查询内存数据、更新磁盘数据等等
 

(编辑:云计算网_梅州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!