iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >MySQL执行SQL语句的流程详解
  • 237
分享到

MySQL执行SQL语句的流程详解

2024-04-02 19:04:59 237人浏览 八月长安
摘要

目录1、通常sql执行流程1.1 问题1:Mysql谁去处理网络请求?1.2 问题2:mysql如何执行sql语句?1.3 查询解析器1.4 查询优化器1.5 存储引擎1.6 执行器2、总结1、通常sql执行流程 用户

1、通常sql执行流程

MySQL执行SQL语句的流程详解

用户发起请求到业务服务器,执行sql语句时,先到连接池中获取连接,然后到mysql服务器执行查询。

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

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

其实大家都知道,网络连接必须得分配一个线程去处理,由一个线程来监听和读取请求数据,比如从网络连接中读取和解析出来一条发过去的sql语句,

如下图所示:

MySQL执行SQL语句的流程详解

1.2 问题2:MySQL如何执行sql语句?

  • 接着我们思考一下,当mysql内部的工作线程从一个网络连接中读取出来一个sql语句之后,此时会如何执行这个sql语句呢?
  • 如果要执行这个sql,去完成底层的数据增删改查,其实是一项极其复杂的任务了。Mysql内部首先提供一个组件,就是SQL接口(SQL Interface),他是一套执行sql语句的接口,专门用于执行我们发送给mysql的那些增删改查的sql语句。
  • 因此mysql工作线程接收到SQL语句后,就会转交给SQL接口去执行

如下图:

MySQL执行SQL语句的流程详解

1.3 查询解析器

MySQL怎么看懂和理解这些SQL?比如现在有个这样的SQL,我们人脑处理一下,只要懂SQL语法的人,立马就明白什么意思了。但是MySQL是一个数据库管理系统,他是没法直接理解这些SQL语句的!此时就有一个关键组件出场了:查询解析器。

查询解析器(Parser)是负责对SQL语句进行解析的比如上面那个sql语句进行一下拆解,可以拆解为以下几部分:

  • 要从『users』表里查询数据
  • 查询『id』字段等于1的那行数据
  • 对查询出来的那行数据要提取里面『id,name,age』三个字段

所谓的SQL解析,就是按照既定的sql语法,对我们按照sql语法规则编写的sql语句进行解析,然后理解这个sql语句要干什么事情,

如下图所示:

MySQL执行SQL语句的流程详解

1.4 查询优化器

当通过解析器理解了SQL要干什么之后,并不是马上去执行,而是要通过查询优化器(Optimizer)来选择一个最优的查询路径。就以上面那个sql查询为例,看下所谓最优查询路径是什么。

要完成这个事,我们有以下几个查询路径:

  • 查询路径1:直接定位到『users』表中的『ID』字段等于1的那一行数据,然后取那行数据的『id,name,age』三个字段值就行了;
  • 查询路径2:先把『users』表中每一行数据的『id,name,age』三个字段的值都查出来,然后从这批数据里过了出『id』字段等于1的那行数据。

上面就是一个最简单的SQL语句的两种实现路径,要完成这个sql语句的目标,两个路径都可以做到,但哪一种更好呢?显然感觉上第一种查询路径更好一些。

所以查询优化器就是针对你编写的几十行、几百行甚至上千行的复杂sql语句生成查询路径树,然后从里面选择一条最优的查询路径出来。相当于他告诉sql执行器,按照一个什么样的步骤和顺序,去执行哪些操作,然后一步一步把SQL语句就完成了。

MySQL执行SQL语句的流程详解

1.5 存储引擎

数据库就是一个编程语言写出来的系统而已,然后启动之后也是个进程,执行池里面的各种代码,也就是我们上面所说的那些东西。所以对数据库而言,我们的数据要不然是放在内存里,要不然是放在磁盘文件里,没什么特殊的地方!所以我们来思考一下,假设我们的数据有的存放在内存里,有的存放在磁盘文件里如下图所示。

MySQL执行SQL语句的流程详解

那么问题来了,我们执行的时候是先更新内存数据?还是磁盘数据?我们如果先更新磁盘数据,是先查询哪个磁盘文件,再更新哪个磁盘文件?

这个时候就需要存储引擎了。存储引擎其实就是执行sql语句的,它会按照一定的步骤去查询内存缓存数据,更新磁盘数据,查询磁盘数据等等,执行一系列数据的操作

如下图所示:

MySQL执行SQL语句的流程详解

MySQL的架构设计中,SQL接口、SQL解析器、查询优化器都是用的一套组件。但是存储引擎像插件一样,支持各种各样的存储引擎的,比如我们常见的InnoDB、MylSam、Momery等。我们可以自由选择哪种存储引擎来负责具体的SQL执行。不过现在大家一般都使用InnoDB作为MySQL的存储引擎。

1.6 执行器

那么看完存储引擎之后,我们知道存储引擎可以帮助我们去访问内存以及磁盘上的数据,那么是谁来调用存储引擎的接口呢?其实我们现在还漏了一个执行器的概念,这个执行器会根据优化器选择的执行方案,去调用存储引擎的接口按照一定的顺序和步骤,就把SQL语句的逻辑给执行了

举个例子,比如执行器可能会先调用存储引擎的一个接口,去获取“usrs”表中的第一行数据,然后判断一下这个数据的"id”字段的值是否等于我们期望的一个值,如果不是的话,那就继续调用存储引擎的接口,去获取“users”表的下一行数据。

就是基于上述的思路,执行器就会去根据我们的优化器生成的一套执行计划,然后不停的调用存储引擎的各种接口去完成SQL语句的执行计划,大致就是不停的更新或者提取一些数据出来。如下图所示:

MySQL执行SQL语句的流程详解

2、总结

我们再来总结下MySQL的执行流程:

  • 用户发起请求到Tomcat服务器,tomcat服务器中线程开始执行sql 语句
  • 首先线程从数据库的连接池中获取一个连接,建立与MySQL数据库服务器的连接
  • MySQL的工作线程接收到SQL语句后,转交给SQL接口去执行
  • 查询解析器对SQL进行语法拆解,理解这个SQL要干什么
  • 查询优化器选择最优的查询路径,生成SQL的执行顺序和步骤
  • 执行器将sql执行计划交给底层的存储引擎接口去执行,他按照一定的步骤去查询内存数据、更新磁盘数据等等

执行过程如下图所示:

MySQL执行SQL语句的流程详解

到此这篇关于MySQL执行SQL语句的流程详解的文章就介绍到这了,更多相关MySQL执行SQL内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

您可能感兴趣的文档:

--结束END--

本文标题: MySQL执行SQL语句的流程详解

本文链接: https://www.lsjlt.com/news/34196.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL执行SQL语句的流程详解
    目录1、通常sql执行流程1.1 问题1:mysql谁去处理网络请求?1.2 问题2:MySQL如何执行sql语句?1.3 查询解析器1.4 查询优化器1.5 存储引擎1.6 执行器2、总结1、通常sql执行流程 用户...
    99+
    2022-09-25
  • mysql的sql语句执行流程
    1、client和server建立连接,client发送sql至server(对应连接器这一过程) 2、server如果在查询缓存中发现了该sql,则直接使用查询缓存的结果返回给client,如果查询缓存中...
    99+
    2022-10-18
  • mysql中SQL语句的执行流程
    今天就跟大家聊聊有关mysql中SQL语句的执行流程,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。       &n...
    99+
    2022-10-18
  • MySql中sql语句执行过程详细讲解
    目录前言:sql语句的执行过程:查询缓存:分析器:优化器:执行器:总结前言: 很多人都在使用mysql数据库,但是很少有人能够说出来整个sql语句的执行过程是怎样的,如果不了解执行过程的话,就很难进行sql语句的优化处理...
    99+
    2023-02-21
    mysql的sql语句的执行流程 mysql的sql执行顺序 mysql如何执行语句
  • Mysql Join语句执行流程
    JOIN主要使用 Index Nested-Loop Join 和 Block Nested-Loop Join 算法实现 Index Nested-Loop Join 如果 join on 相关的字段存在索引就使用 Index Nes...
    99+
    2018-10-17
    Mysql Join语句执行流程
  • MySQL中SQL语句执行流程是怎么样的
    这篇文章主要介绍MySQL中SQL语句执行流程是怎么样的,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!总的来说,MySQL逻辑架构可以分为server层和存储引擎层这两个部分。这篇文...
    99+
    2022-10-18
  • sql语句执行步骤详解
    目录 一、准备工作 二、SQL逻辑查询语句执行顺序 三、SQL书写习惯 一、准备工作 先来一段伪代码,首先你能看懂么? SELEC&#...
    99+
    2015-02-22
    sql语句执行步骤详解
  • Mysql 更新语句执行流程
    与查询流程不一样的是,更新流程涉及两个重要的日志模块,redo log和 binlog redo log 如果每一次的更新操作都需要写进磁盘,然后磁盘也 要找到对应的那条记录, 然后再更新,整个过程 IO 成本、查找成本都很高 Mysql使...
    99+
    2014-08-15
    Mysql 更新语句执行流程
  • 深入理解:Mysql执行SQL语句过程
     开发人员基本都知道,我们的数据存在数据库中(目前最多的是mysql和oracle,由于作者更擅长mysql,所以这里默认数据库为mysql),服务器通过sql语句将查询数据的请求传入到mysql数据库。数据库拿到sql语句以后。...
    99+
    2023-06-02
  • 详解MySQL 查询语句的执行过程
    首先先简单的将一个查询语句背后MySQL做了什么捋一捋: 客户端发送一条查询给服务器。 服务器先检查查询缓存,如果命中了缓存,则立刻返回存储在缓存中的结果。否则进入下一个阶段。 服务器端进行SQL解析,...
    99+
    2022-05-19
    MySQL 查询语句 MySQL 查询语句执行过程
  • SQL语句执行深入讲解(MySQL架构总览->查询执行流程->SQL解析顺序)
    前言: 一直是想知道一条SQL语句是怎么被执行的,它执行的顺序是怎样的,然后查看总结各方资料,就有了下面这一篇博文了。 本文将从MySQL总体架构--->查询执行流程--->语句执行顺序来探...
    99+
    2022-10-18
  • SQL语句的执行过程
    1.语法校验      如果在SQL计划缓存中没有对应的执行计划,服务器首先会对用户请求的SQL语句进行语法效验,如果有语法错误,服务器会结束查询操作,并用返回相应的错误信息给...
    99+
    2022-10-18
  • MySql中sql语句执行过程是什么
    今天小编给大家分享一下MySql中sql语句执行过程是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。sql语句的执行过程...
    99+
    2023-07-05
  • mysql中执行查询语句的流程分析
    这篇文章给大家分享的是有关mysql中执行查询语句的流程分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。比如,在我们从student表中查询一个id=2的信息selec ...
    99+
    2022-10-18
  • MySQL查询语句执行流程是什么
    这篇“MySQL查询语句执行流程是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“MySQL查询语句执行流程是什么”文章吧...
    99+
    2023-07-05
  • MySQL之Join语句执行流程是什么
    本文小编为大家详细介绍“MySQL之Join语句执行流程是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“MySQL之Join语句执行流程是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。Join语句执行流...
    99+
    2023-07-05
  • 【MySQL】MySQL中SQL执行流程
    文章目录 一、MySQL语句执行流程1.1、主要的原因有以下几点1.2、具体执行流程图如下 二、存储引擎三、MySQL的架构与内部模块四、崩溃恢复时如何判断事务是否需要提交 一、MyS...
    99+
    2023-09-16
    mysql sql 数据库
  • MySQL实战教程之Join语句执行流程
    目录Join语句执行流程一、Index Nested-Loop Join二、Simple Nested-Loop Join三、block Nested-Loop Join四、总结Join语句执行流程 Hi,我是阿昌,今天...
    99+
    2023-03-06
    mysqlJoin语句 mysqlJoin
  • 怎么监控mysql执行的sql语句
    这篇文章主要讲解了“怎么监控mysql执行的sql语句”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么监控mysql执行的sql语句”吧!监控执行的sql...
    99+
    2022-10-18
  • 怎么解析Oracle SQL语句执行流程与顺序原理
    怎么解析Oracle SQL语句执行流程与顺序原理,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。 Oracle SQL语句执行流程与顺序原理...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作