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

MySQL数据库SQL语句的执行过程

一、客户端的MySQL驱动: 我们的系统在和 MySQL 数据库进行通信前,需要先和数据库建立连接,而这个功能就是由MySQL驱动底层帮我们完成的,建立完连接之后,我们只需要发送 SQL 语句就可以执行...二、MySql架构的Server层: 在介绍MySQL数据库SQL语句在Server的执行步骤前,我们先了解下MySQL的整体架构: 如果上图不清楚,可以再看看下面的图: 通过上面的架构图可以得知...,大多数是经常变化的,而当数据库中的数据变化了,那么相应的与此表相关的缓存数据就需要移除掉; 3、分析/解析器: 分析器的工作主要是对要执行SQL语句进行解析,最终得到抽象语法树,然后使用预处理器判断抽象语法树中的表是否存在...在执行SQL语句前添加上 explain 关键字即可; 5、执行器: MySQL 通过分析器知道了你要做什么,通过优化器知道了该怎么做,于是就进入了执行器阶段,开始执行语句。...bin log文件是如何刷入磁盘的?

3.5K10
您找到你想要的搜索结果了吗?
是的
没有找到

数据库如何解析执行SQL

0x01:数据库客户端发送查询SQL 客户端将查询的select sql,按照mysql通信协议传输到数据库服务。...数据库服务接受查询sql执行sql前判断要执行sql是否是查询语句。...0x02:查询缓存先行 MySQL在开启查询缓存的情况下,首先会先在查询缓存中查找该SQL是否完全匹配,如果完全匹配,验证当前用户是否具备查询权限,如果权限验证通过,直接返回结果集给客户端...MySQL通过关键字将SQL语句进行解析,并生成一棵对应的“解析树”。MySQL解析器将使用MySQL语法规则验证和解析查询,通过分析语法知道要查的内容。...这里执行计划是一个数据结构,而不是和很多其他的关系型数据库那样会生成对应的字节码。 相对于查询优化阶段,查询执行阶段不是那么复杂:MySQL只是简单的根据执行计划给出的指令逐步执行

1.4K20

SQL如何数据库执行

数据库的服务端,可分为执行器(Execution Engine) 和 存储引擎(Storage Engine) 两部分: 执行器负责解析SQL执行查询 存储引擎负责保存数据 1 SQL如何执行器中执行...上面这SQL的AST: 执行器解析AST后,生成一个逻辑执行计划,即如何一步步执行查询和计算,最终得到执行结果的一个分步骤的计划。...到这,执行器只在逻辑层分析SQL,优化查询执行逻辑,执行计划中操作的数据,仍是表、行和列。在数据库中,表、行、列都是逻辑概念,所以,这个执行计划叫“逻辑执行计划”。...执行查询接下来的部分,涉及数据库的物理存储结构。 2 SQL如何在存储引擎中执行 数据真正存储时,无论在磁盘or内存中,都没法直接存储这种带行列的二维表。...并不是说第一个SQL写不好,而是数据库不智能。能做的就是了解数据库脾气,按它能力,尽量写出它能优化的SQL

3.1K60

MySQL使用技巧: 如何查看mysql正在执行SQL语句

MySQL使用技巧: 如何查看mysql正在执行SQL语句 背景: 最近项目开发用到MySQL,想要查看后台执行sql语句,立马google得知、可以使用 show processlist; 命令来解决...,通过里面输出结果的字段解释中可以分析执行了的sql语句类型,但发现不太适合一般的初级使用者,而通过日志文件查看sql语句是最直接的方法。.../log.txt1    log=d:/mysql/data/log.txt 3:如此就可以记录所有的mysql执行sql语句!  ...db列,显示这个进     程目前连接的是哪个数据库。   command列,显示当前连接的执行的命令,一般就是休眠(sleep),查询(query),连接(connect)。...state列,显示使用当前连接的sql语句的状态,很重要的列,后续会有所有的状态的描述,请注意,state只是语句执行中的某一个状态,  一个sql语句,已查询为例,可能需要经过copying to tmp

5.8K20

一条更新SQLMySQL数据库中是如何执行

点击关注"故里学Java" 右上角"设为星标"好文章不错过 前边的在《一条SQL查询在MySQL中是怎么执行的》中我们已经介绍了执行过程中涉及的处理模块,包括连接器、分析器、优化器、执行器、存储引擎等。...首先,在执行语句前要先连接数据库,这是第一步中连接器的工作,前面我们也说过,当一个表有更新的时候,跟这个表有关的查询缓存都会失效,所以我们一般不建议使用查询缓存。...我们先创建一张表,这个表有主键ID和一个整型字段c: mysql> create table demo T (ID int primarty ,c int); 然后将ID=2的这一行的值加1 mysql...假设redolog写完,binlog还没写完,MySQL进程异常重启了。我们知道,redolog写完以后,系统即使崩溃了,也可以将数据恢复,所以在MySQL重启后,这一行会被恢复成1。...我们可以看到如果不使用“两阶段提交",那么数据库的状态就会和用日志恢复出来的库不一致。

3.8K30

SQL语句在MySQL中是如何执行

mysql> select * from T where ID=10; 开门见山,当我们输入一条 SQL 语句的时候,MySQL 内部究竟执行了什么?...接下来我们来说明上文的 SQL 语句到底在内部经历了什么。 连接器 第一步,客户端会先连接到数据库,这个时候就是连接器来接待。它负责跟客户端建立连接、获取权限、维持和管理连接。...第二步:语法分析,主要就是判断你输入的 SQL 是否正确,是否符合 MySQL 的语法。,主要就是判断你输入的 SQL 是否正确,是否符合 MySQL 的语法。...优化器的作用就是它认为的最优的执行方案去执行(虽然有时候也不是最优),比如多个索引的时候该如何选择索引,多表查询的时候如何选择关联顺序等。...也可以先从表 t2 里面取出 d=20 的记录的 ID 值,根据 ID 值关联到 t1,判断 t1 里面 c 的值是否等于 10。

4.3K20

Mysql-SQL执行顺序

SQL执行顺序事实上,sql并不是按照我们的书写顺序来从前往后、左往右依次执行的,它是按照固定的顺序解析的,主要的作用就是从上一个阶段的执行返回结果来提供给下一阶段使用,sql执行的过程中会有不同的临时中间表...执行的第一步:表示要从数据库执行哪张表。...实例说明:在这个例子中就是首先从数据库中找到表T2、join on join是表示要关联的表,on是连接的条件。...通过from 和 join on 选择出需要执行数据库表T和S,产生笛卡尔积,生成T和S合并的临时中间表Temp1。...实例说明:在temp7中排好序的数据,然后取前五条插入到Temp9这个临时表中,最终返回给客户端ps:实际上这个过程也并不是绝对这样的,中间mysql会有部分的优化以达到最佳的优化效果,比如在select

18310

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 --> 解析器 --> 优化器 --> 执行器 --> 返回结果。下面会将各个组件单独拉出来做分析。

12940

MySQL中一条更新的SQL如何执行

MySQL 之 -- 一条更新的 SQL 如何执行,一条更新的 SQL 语句如何执行执行流程一条 SQL执行流程如图所示:(图片来源于网络) 如图所示:MySQL 数据库主要分为两个层级:服务层和存储引擎层服务层...执行流程 一条 SQL执行流程如图所示:(图片来源于网络) 如图所示: MySQL 数据库主要分为两个层级:服务层和存储引擎层 服务层:server 层包括连接器、查询缓存、分析器、优化器、执行器...存储引擎也可以在创建表的时候手动指定,比如: SQL 语句的执行过程 连接器:需要 MySQL 客户端登录,需要一个 连接器 来连接用户和 MySQL 数据库,“mysql -u 用户名 -p 密码”...执行器先找引擎取 ID=2 这一行。ID 是主键,引擎直接用树搜索找到这一行。如果 ID=2 这一行所在的数据页本来就在内存中,就直接返回给执行器;否则,需要先从磁盘读入内存,然后返回。...执行器拿到引擎给的行数据,把这个值加上 1,比如原来是 N,现在就是 N+1,得到新的一行数据,调用引擎接口写入这行新数据。

1.2K10

MySQL中一条更新的SQL如何执行

MySQL 之 -- 一条更新的 SQL 如何执行,一条更新的 SQL 语句如何执行执行流程一条 SQL执行流程如图所示:(图片来源于网络) 如图所示:MySQL 数据库主要分为两个层级:服务层和存储引擎层服务层...执行流程 一条 SQL执行流程如图所示:(图片来源于网络) 如图所示: MySQL 数据库主要分为两个层级:服务层和存储引擎层 服务层:server 层包括连接器、查询缓存、分析器、优化器、执行器...存储引擎也可以在创建表的时候手动指定,比如: SQL 语句的执行过程 连接器:需要 MySQL 客户端登录,需要一个 连接器 来连接用户和 MySQL 数据库,“mysql -u 用户名 -p 密码”...执行器先找引擎取 ID=2 这一行。ID 是主键,引擎直接用树搜索找到这一行。如果 ID=2 这一行所在的数据页本来就在内存中,就直接返回给执行器;否则,需要先从磁盘读入内存,然后返回。...执行器拿到引擎给的行数据,把这个值加上 1,比如原来是 N,现在就是 N+1,得到新的一行数据,调用引擎接口写入这行新数据。

90810

MySQL如何通过EXPLAIN分析SQL执行计划

MySQL中,我们可以通过EXPLAIN命令获取MySQL如何执行SELECT语句的信息,包括在SELECT语句执行过程中表如何连接和连接的顺序。...表关联查询时必定会有一张表进行全表扫描,此表一定是几张表中记录行数最少的表,然后通过非唯一索引寻找其他关联表中的匹配行,以此达到表关联时扫描行数最少。...rows: 扫描行的数量 filtered: 存储引擎返回的数据在server层过滤后,剩下多少满足查询的记录数量的比例(百分比) Extra: 执行情况的说明和描述,包含不适合在其他列中显示但是对执行计划非常重要的额外信息...MySQL5.6引入了Index Condition Pushdown(ICP)的特性,进一步优化了查询。Pushdown表示操作下放,某些情况下的条件过滤操作下放到存储引擎。...参考 《深入浅出MySQL》  《深入浅出MySQL》PDF文字版(全)PDF 下载  http://www.linuxidc.com/Linux/2016-05/130922.htm

52910

MySQL架构(一)SQL 查询语句是如何执行的?

在了解 MySQL 架构之前,我们先看几个 SQL 语句,当我们知道了 SQL 语句的执行流程,再学习 MySQL 架构简直手到擒来。...但这整个过程我们并不知道,你可以先想一下,如何去拿到 id=1 的数据。 我们往下看,SQL 查询过程的具体流程如下图。...客户端可以是数据库可视化软件(Navacat、DBeaver 等)包括 JDBC 连接工具,主要发送 SQL 语句的执行请求。...先从表 t2 里面取出 b=2 的记录的 id ,根据 id 关联到表 t1,判断表 t1 中 a 的值是否等于 1。...当 MySQL 将结果集返回给客户端,查询语句就已经执行完了。 补充 权限检查:分析器的语法分析过程会做权限预检查(precheck),包括检查用户对数据库、表的权限。

9610

MySQL 整体架构与 SQL 执行原理,数据库事务原理

一个 SQL执行过程为: 1.连接 2.查询缓存 3.词法分析 4.语法分析 5.语义分析 6.构造执行树 7.生成执行计划 8.执行执行计划 9.返回执行结果 一个更新语句的例子 更新语句: mysql...如果 ID=2 这一行所在的数据页本来就在内存中,就直接返回给执行器;否则,需要先从磁盘读入内存,然后返回。...如果能在头脑中构建一幅MySQL各组件之间如何协同工作的架构图,有助于深入理解MySQL服务器。下图展示了MySQL的逻辑架构图。 ?...MySQL查询过程 我们总是希望MySQL能够获得更高的查询性能,最好的办法是弄清楚MySQL如何优化和执行查询的。...预处理则会根据MySQL规则进一步检查解析树是否合法。比如检查要查询的数据表和数据列是否存在等。 SQL总体执行流程图 ? 查询优化 ?

2.5K40
领券