首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MySQL 8.0 SQL 执行流程

MySQL 8.0 SQL 执行流程首先我们先来看下 MySQL 经典架构图,8.0 没怎么翻到,先看看这个了。...Optimzer优化器,将 SQL 进行优化生成多个执行计划。执行器上面优化器生成了多份执行计划后,接下来就由执行器选择一份计划执行了。...执行器先会判断当前是否具有权限,然后才会去执行相应 SQL 语句。Caches缓存命中,8.0 中已经被干掉了。...比如他是将 SQL 语句作为 key 进行命中匹配,如果 SQL 中多加了一个空格也会被认为不是同一条 SQL 导致匹配不到。Pluggable storage Engines数据库执行引擎插件。...文件系统这个是存放 MySQL 文件系统。SQL 执行流程SQL 流程SQL --> 解析器 --> 优化器 --> 执行器 --> 返回结果。下面会将各个组件单独拉出来做分析。

17240

MySQL架构与SQL执行流程

MySQL架构设计 下面是一张MySQL架构图: ?...包括线程创建,线程 cache 等 SQL Interface:SQL接口 接受用户SQL命令,并且返回用户需要查询结果。...SQL语句执行流程 连接 客户端发来一条SQL语句,监听客户端‘连接管理模块’接收请求 将请求转发到‘连接进/线程模块’ 调用‘用户模块’来进行授权检查 通过检查后,‘连接进/线程模块’从‘线程连接池...‘命令解析器’,经过词法分析,语法分析后生成解析树 接下来是预处理阶段,处理解析器无法解决语义,检查权限等,生成新解析树 再转交给对应模块处理 如果是查询还会经由‘查询优化器’做大量优化,生成执行计划...meta数据,获取表存储引擎类型等信息,通过接口调用对应存储引擎处理 上述过程中产生数据变化时候,若打开日志功能,则会记录到相应二进制日志文件中 结果 SQL执行完成后,将结果集返回给‘连接进/

1.6K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Sql语句在Mysql执行流程

    分析器: 没有命中缓存的话,SQL 语句就会经过分析器,分析器说白了就是要先看你 SQL 语句要干嘛,再检查你 SQL 语句语法是否正确。   ...优化器: 按照 MySQL 认为最优方案去执行。   执行器: 执行语句,然后从存储引擎返回数据。   ...连接建立后,执行查询语句时候,会先查询缓存,MySQL 会先校验这个 sql 是否执行过,以 Key-Value 形式缓存在内存中,Key 是查询预计,Value 是结果集。...3) 分析器             MySQL 没有命中缓存,那么就会进入分析器,分析器主要是用来分析 SQL 语句是来干嘛,分析器也会分为几步:             第一步,词法分析,一条 SQL...第二步,语法分析,主要就是判断你输入 sql 是否正确,是否符合 MySQL 语法。

    4.7K10

    MySQL体系结构与SQL执行流程

    如果你只了解到sql是如何优化,那么你应该通过本文了解一下Mysql体系结构以及sql语句执行流程。...接下来,通过一条sql语句执行来深入了解MySQL各个组件功能以及其作用。...SQL语句执行流程 1、连接MySQL 通常我们会编写sql语句通过某个客户端来执行并且接受执行结果,比如命令行、JDBC、navicat。...总结 至此,一条查询语句执行流程已经非常清晰了,同时也认识了MySQL整个体系结构以及各组件作用。最后用一张图来收尾本文核心内容并做总结。...一条查询SQL语句执行流程: 客户端通过连接器连接MySQL服务。 连接成功后向SQL接口发送SQL语句请求。 SQL接口接收到SQL查询语句会先去缓存查询,如果命中返回给客户端,否则交给解析器。

    59684

    【黄啊码】MySQL入门—1、SQL 执行流程

    首先我们来看一张图:图片 我们所看到MySQL是由三个层组成,分别如下:连接层:负责客户端和服务器端建立连接,客户端发送 SQL 至服务器端,简单来说就是交互SQL 层:对 SQL 语句进行查询处理...我们再来看另外一张图,以下是SQL语句执行流程:图片简而言之就是一句话:SQL 语句→缓存查询→解析器→优化器→执行器。...解析器:相当于咱们英语中翻译,具体有:语法分析、语义分析,毕竟我们写东西机器是不懂,得它们自己翻译成自己懂东西。优化器:选择最优执行方案,从而提高执行效率,比如索引之类。...执行器:字面意思就是执行我们所写sql语句,当然前提是你当前用户具备了执行权限。...而在存储引擎方面,MySQL则有自己独到存储引擎,常见、常用有InnoDB和MyISAM,下面我具体列举一下:InnoDB 存储引擎:它是 MySQL 5.5 版本之后默认存储引擎,最大特点是支持事务

    51120

    图解MyBatisSQL执行流程

    这里异常其实就是StrickMapget方法抛出来sql执行流程分析 上面我们讲到了,获取到Mapper接口实际上被包装成为了代理对象,所以我们执行查询语句肯定是执行代理对象方法,接下来我们就以...整个sql执行流程可以分为两大步骤: 一、寻找sql 二、执行sql语句 寻找sql 首先还是来看一下寻找sql语句时序图: 1、了解代理模式应该都知道,调用被代理对象方法之后实际上执行就是代理对象...对象,然后后面就可以开始准备执行sql语句了 执行sql语句 还是先来看一下执行Sql语句时序图: 1、我们继续上面的流程进入execute方法: 2、这里面会根据语句类型以及返回值类型来决定如何执行...到这里,整个SQL语句执行流程分析就结束了,中途有一些参数存储以及转换并没有深入进去,因为参数转换并不是核心,只要清楚整个数据流转流程,我们自己也可以有自己实现方式,只要存起来最后我们能重新解析读出来就行...总结 本文主要分析了MyBatisSQL执行流程

    78242

    图解MyBatisSQL执行流程

    sql执行流程分析 上面我们讲到了,获取到Mapper接口实际上被包装成为了代理对象,所以我们执行查询语句肯定是执行代理对象方法,接下来我们就以Mapper接口代理对象MapperProxy来分析一下查询流程...整个sql执行流程可以分为两大步骤: 一、寻找sql 二、执行sql语句 寻找sql 首先还是来看一下寻找sql语句时序图: ?...这里面就会把要执行sql语句,请求参数,方法返回值全部解析封装成MapperMethod对象,然后后面就可以开始准备执行sql语句了 执行sql语句 还是先来看一下执行Sql语句时序图: ?...到这里,整个SQL语句执行流程分析就结束了,中途有一些参数存储以及转换并没有深入进去,因为参数转换并不是核心,只要清楚整个数据流转流程,我们自己也可以有自己实现方式,只要存起来最后我们能重新解析读出来就行...总结 本文主要分析了MyBatisSQL执行流程

    91251

    MySQLsql执行顺序

    SQL语句中每个关键字都会按照顺序往下执行,而每一步操作,会生成一个虚拟表,最后产生虚拟表会作为执行最终结果返回。下面的是常用关键字执行顺序: ?...)未匹配行作为外部行添加到虚拟表VT2中,从而产生虚拟表VT3; 4、WHERE:对虚拟表VT3进行WHERE条件过滤,只有符合记录才会被放入到虚拟表VT4; 5、...:对虚拟表VT6进行HAVING条件过滤,只有符合记录才会被插入到虚拟表VT7中; 8、SELECT:执行SELECT操作,选择指定列,插入到虚拟表VT8中; 9...、DISTINCT:对虚拟表VT8中记录进行去重,产生虚拟表VT9; 10、ORDER BY:将虚拟表VT9中记录按照进行排序操作,产生虚拟表VT10; 11、LIMIT...:取出指定行记录,产生虚拟表VT11,并将结果返回。

    2.2K20

    select语句执行流程MySql

    学习了极客时间MySql课程,做个总结 以一条select语句为例:select * from T where ID=4 ,梳理下执行流程 一条sql语句在执行过程中需要经过连接器、分析器、优化器、...查询缓存 在经过连接器之后,会执行第二步查询缓存,在MySql拿到查询后,会先到查询缓存查看是否执行过这条语句,之前执行结果会以key-value对形式存在,如果不在查询缓存中,会继续执行后面的极端...在MySql8.0之后去掉了查询缓存功能。...分析器 分析器会先做“词法分析”,识别出sql字符串分别是什么,读出“select”关键字对出这是一条查询语句,把字符串T识别成“表T” “语法分析”,根据词法分析结果,判断该条sql是否满足MySql...语法 优化器 优化器作用在于选择最优逻辑执行sql,例如在一个语句进行多表关联时候,决定各个表连接顺序 执行器 在开始执行前,先判断你对表T是否有执行查询权限,没有就返回没有权限错误,有权限则继续执行

    10010

    步步深入:MySQL 架构总览->查询执行流程->SQL 解析顺序

    一直是想知道一条 SQL 语句是怎么被执行,它执行顺序是怎样,然后查看总结各方资料,就有了下面这一篇博文了。...本文将从 MySQL 总体架构 -> 查询执行流程 -> 语句执行顺序来探讨一下其中知识。 MySQL 架构总览 架构最好看图,再配上必要说明文字。...查询执行流程 下面再向前走一些,容我根据自己认识说一下查询执行流程是怎样: 连接 客户端发起一条 Query 请求,监听客户端连接管理模块接收请求; 将请求转发到连接进/线程模块; 调用用户模块来进行授权检查...一图小总结 SQL解析顺序 接下来再走一步,让我们看看一条 SQL 语句前世今生。...解析之旅就结束了,上图总结一下: 「参考书籍」 《MySQL性能调优与架构实践》 《MySQL技术内幕:SQL编程》 「尾声」 嗯,到这里这一次深入了解之旅就差不多真的结束了,虽然也不是很深入

    1.2K30

    Spark Sql 源码剖析(一):sql 执行主要流程

    既然是第一篇,那么就来说说在 Spark Sql 中一条 sql 语句主要执行流程,来看看下面这个简单例子: val spark = SparkSession .builder() .appName...第3步是从 sql 语句转化为 DataFrame 过程,该过程尚未执行 action 操作,并没有执行计算任务;第4步是一个 action 操作,会触发计算任务调度、执行。...#sql 已经返回,并生成了 sqlDataFrame,但由于该 sqlDataFrame 并没有执行任何 action 操作,所以到这里为止,除了在 driver 端执行了上述分析操作外,其实并没有触发或执行其他计算任务...这篇文章是一片相对宏观整体流程分析,目的有二: 一是说清楚 Spark Sql 中一条 sql 语句执行会经过哪几个核心流程,各个核心流程大概做了什么 二是这里指出各个核心流程也是接下来进一步进行分析学习方向...更多关于各个流程进一步实现分析请见之后文章 ----

    2.1K10

    MySQL执行sql语句机制

    目录 1 概念 2 执行过程 1 概念 连接器: 身份认证和权限相关(登录 MySQL 时候)。...查询缓存: 执行查询语句时候,会先查询缓存(MySQL 8.0 版本后移除,因为这个功能不太实用)。...分析器: 没有命中缓存的话,SQL 语句就会经过分析器,分析器说白了就是要先看你 SQL 语句要干嘛,再检查你 SQL 语句语法是否正确。...第二步,语法分析,主要就是判断你输入 sql 是否正确,是否符合 MySQL 语法。 优化器: 按照 MySQL 认为最优方案去执行执行器: 执行语句,然后从存储引擎返回数据。...SQL执行过程分为两类, 一类对于查询等过程如下:权限校验—-》查询缓存—-》分析器—-》优化器—-》权限校验—-》执行器—-》引擎 对于更新等语句执行流程如下:分析器——》权限校验——》6267

    3.8K30

    MySQL SQL完整处理流程

    专栏持续更新中:MySQL详解 一、sql执行流程分析 一条sql从客户端发起,在mysql中经过了一系列流程,归结为如下图所示: 客户端提交一条sql语句,先在查询缓存中查询,如果缓存没有命中,将会进行查表操作...查表流程总结过为如下: (1)将sql交给解析器处理,生成一个解析树。 (2)预处理器会处理解析器,重新生成一个解析器,这个过程中将会改写sql。...1、查询优化器 查询优化器主要作用是用来生成sql执行计划,查询优化器是数据库核心大脑所在,从某种意义上来说,优化sql,本质是理解优化器执行行为。...在mysql中优化依据是sql执行成本,执行计划生成是基于成本,成本决定是依据sql执行行数。优化器工作前提是了解数据,工作目的是解析数据,生成执行计划。...通过Processlist,我们可以看到当前在MySQL执行所有SQL语句,有没有异常会话或比较特殊SQL状态。

    25540

    MySQL架构与执行流程

    MySQL语句执行流程   下图是一条查询sql语句执行流程: ? 1.1 通信协议   我们程序或者工具要操作数据库,第一步要做什么事情?当然是跟数据库建立连接。...在执行查询时候可能用到哪些索引,实际上用到了什么索引? MySQL 提供了一个执行计划工具。我们在 SQL 语句前面加上 EXPLAIN,就可以看到执行计划信息。...MySQL体系结构总结:   基于上面分析流程,我们一起来梳理一下 MySQL 内部模块。 2.1 模块详解 ?...然后就是优化器,MySQL 底层会根据一定规则对我们 SQL 语句进行优化,最后再交给执行器去执行。...更新语句执行流程:   讲完了查询流程,我们是不是再讲讲更新流程、插入流程和删除流程?更新流程和查询流程有什么不同呢?基本流程也是一致,也就是说,它也要经过解析器、优化器处理,最后交给执行器。

    79220

    Mysql查询语句执行流程

    官方图 ---- ? 自行画图 ---- ? 第一步:   连接器 首先我们要连接上这个数据库,连接器负责建立连接,判断认证是否通过等。...第二部:   查询缓存 mysql拿到请求后首先判断请求查询语句是否有缓存,是否命中缓存,但是不推荐使用mysql缓存,官方也不推荐,因为只要有一条数据更新表缓存就会被删除,降低效率 第三步:   ...分析器 没有命中缓存的话就要开始执行语句了,首先对sql语句进行解析, 首先做 “词法解析”,分析出sql语句关键词等字符串代表什么含义,然后通过”语法分析“判断这个sql是否满足语法标准。...第四步:   优化器 优化sql执行速度,比如执行索引、表连接(join)执行顺序,然后决定出最快执行方案 第五步:   执行器 判断用户对这个表是否有权限,有的话就会根据这个表引擎执行通过优化器给出最优执行方案去执行

    4.3K10

    谈谈执行一条SQL流程

    一、前言 大家好,我是小诚,《从0到1-全面深刻理解MySQL系列》已经来到第四章,这一章节主要从一条SQL执行开始,由浅入深解析SQL语句由客户端到服务器完整执行流程,最终达到 "知其然、知其所以然...SQL从客户端到服务端执行流程,这让我十分尴尬,因为平时只顾应用层面的东西,没有真正去理解到更深层次东西,所以遇到非常规问题,很容易蒙圈,希望大家以我为鉴,学习一个知识要尽量达到"知其然、知其所以然...那实际上服务端是对客户端进行了哪些解析步骤操作才最终返回执行结果呢?这里我们首先通过一张图片形象展示解析流程,然后再对逐个流程进行具体解析。...三、MySQL流程常见面试题 3.1、数据库语句执行顺序 (一): 执行顺序   from -> on -> join -> where -> group by -> count(聚合函数...四、系列文章 1、《从0到1-全面深刻理解MySQL系列》- 最详细MySQL安装流程(Window版) 2、《从0到1-全面深刻理解MySQL系列》- 最详细MySQL安装流程(Linux

    62020

    步步深入MySQL:架构->查询执行流程->SQL解析顺序!

    作者 :AnnsShadoW 来源:www.cnblogs.com/annsshadow 一、前言 一直是想知道一条SQL语句是怎么被执行,它执行顺序是怎样,然后查看总结各方资料,就有了下面这一篇博文了...本文将从MySQL总体架构--->查询执行流程--->语句执行顺序来探讨一下其中知识。 二、MySQL架构总览 架构最好看图,再配上必要说明文字。...三、查询执行流程 下面再向前走一些,容我根据自己认识说一下查询执行流程是怎样: 1、连接 1.1、客户端发起一条Query请求,监听客户端‘连接管理模块’接收请求; 1.2、将请求转发到‘连接进...四、SQL解析顺序 接下来再走一步,让我们看看一条SQL语句前世今生。 首先看一下示例语句: ? 然而它执行顺序是这样: ?...至此SQL解析之旅就结束了,上图总结一下: ? END

    1.7K20

    MySQL Update执行流程解读

    一、update跟踪执行配置 使用内部程序堆栈跟踪工具path_viewer,跟踪mysql update 一行数据执行过程,配置执行脚本:call_update.sh DROP DATABASE...执行函数调用过程362717_5.txt > my_net_set_read_timeout(NET*, unsigned int) > vio_timeout(Vio*, unsigned...PT_update::make_cmd(THD*) --更新树节点翻译成AST语法树 mysql_execute_command --命令执行 Sql_cmd_dml::execute...Sql_cmd_dml::prepare(THD*) --引用消解 Sql_cmd_update::precheck(THD*) --更新语句实际执行引用消解 Sql_cmd_update...三、执行总结 update执行流程 1.执行语句连接数据库 2.分析器通过词法、语法分析知道这是一条更新语句 3.优化器确定执行路径 4.执行器具体执行,找到这一行,更新数据,然后通过Inodb存储具体更新操作

    2.1K20

    Mysql系列】(一)MySQL语句执行流程

    连接器还提供了执行 SQL 语句、获取查询结果、处理事务等功能,可以方便地进行数据库操作。...连接器连接流程 mysql -hip -Pport -uuser -p 是一个连接到 MySQL 服务器命令,其中 ip 是要连接 MySQL 服务器主机名或 IP 地址,port 是 MySQL...此时,我们可以在命令行中输入 SQL 语句,并将其发送给 MySQL 服务器进行执行MySQL 服务器接收到 SQL 语句后,会执行相应操作,比如查询、插入、更新等。...然后使用以下命令查看连接信息: SHOW PROCESSLIST; 这个命令将显示当前所有活动 MySQL 连接和会话详细信息,包括连接 ID、主机名、用户、执行 SQL 语句等。...,包括连接 ID、主机名、用户、执行 SQL 语句等。

    38930
    领券