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

MySqlsql语句执行过程详述

前言: 很多人都在使用mysql数据库,但是很少有人能够说出来整个sql语句执行过程是怎样,如果不了解执行过程的话,就很难进行sql语句优化处理,也很难设计出来优良数据库表结构。...这篇文章主要是讲解一下sql语句执行过程sql语句执行过程: 客户端、连接器、分析器、优化器、执行器、存储引擎几个阶段。 连接器作用:管理链接、权限验证处理。...当然了,不同存储引擎表数据存储方式也是不一样。 连接器: 执行sql语句时候,第一步需要进行数据库连接处理,连接器负责客户端建立连接、获取权限、维持和管理连接。...查询缓存: 连接建立完毕之后,进行查询缓存处理,执行sql语句会先到缓存中看看是不是刚刚执行了这条语句,之前执行语句及其结果就会以key-value对形式直接存储在内存中,key是查询语句,...然后进行语法分析处理,根据词法分析,根据词法分析结果,语句分析器就会根据语法规则判断输入这个sql语句是否满足mysql语法。

22940

MySQL执行SQL语句过程详解

开发人员基本都知道,我们数据存在数据库中(目前最多MySQL和Oracle,由于作者更擅长MySQL,所以这里默认数据库为MySQL),服务器通过sql语句将查询数据请求传入到MySQL数据库。...流程概述   MySQL得到sql语句后,大概流程如下:   1.sql解析器:负责解析和转发sql   2.预处理器:对解析后sql树进行验证   3.查询优化器:得到一个执行计划   4.查询执行引擎...sql解析器与预处理   sql解析器是在命令分发之后,将对应sql语句,解析为sql解析树。sql解析树是MySQL本身内部语法规则和解析查询。...成本指的是MySQL根据相关统计信息,算出来sql语句对应io,cpu等消耗一个估计值。计算过程涉及到索引、表、行等数据,过程比较复杂。   ...+返回数据给客户端   得到执行计划后,根据已有的执行计划,查询执行引擎,MySQLSQL Layer层,调用Storage Engine Layer层接口,从MySQL存储引擎中获取到相对应结果集

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

mysql存储过程执行_mysql存储过程执行

EVENT if not exists e_test on schedule every 30 second on completion preserve do call test(); 每隔30秒将执行存储过程...实战mysql存储程序与定时器 存储过程定时器eventprocedure实战 需求:一个庞大日志表,现每天做定时统计一天总数,放另一个表中,方便查看,运营。...旧方案:用脚本写好程序,用linuxcrontab定时执行。 本文重点,用mysql定时器定时执行存储程序。...执行这个语句之前要先 Sql代码 delimiter $$ 执行完成后再 Sql代码 delimiter ; 用show查看是否已经成功 Sql代码 show procedure status like...‘%%’; 第二步:开启mysql定时器 如果不是on,就执行 Sql代码 set global event_scheduler=1; 不需要重启mysql 会发现mysql多起了一个daemon进程

16.6K20

MySQL:一条SQL语句执行过程

大多数时候不建议使用缓存,因为只要一个表更新,这个表上所有缓存数据就会被清空了。对于那些经常更新表来说,缓存命中率很低。MYSQL8版本直接将查询缓存整块功能删掉了。...第三步:分析器 分析器首先会做“词法分析”,MYSQL会识别出SQL语句里面的字符串是什么以及代表什么。接下来就是“语法分析器”,分析SQL语法问题。...第四步:优化器 优化器会对SQL执行顺序,使用哪个索引进行优化。确定SQL执行方案。 第五步:执行执行执行SQL语句会对权限进行校验,如果有权限,就打开表继续执行。...打开表时候,执行器就会根据表引擎定义,去使用这个引擎提供接口。 图片 一条update语句执行流程 update语句除了会执行上面的五步,还会涉及两个重要日志模块。...更新语句内部流程 update t set n = n+2 where id =1 执行器先找引擎找到id=1那一行,如果这一行数据页已经在内存中则直接返回给执行器。

21120

MySQL探秘(二):SQL语句执行过程详解

昔日庖丁解牛,未见全牛,所赖者是其对牛内部骨架结构了解,对于MySQL亦是如此,只有更加全面地了解SQL语句执行每个过程,才能更好进行SQL设计和优化。  ...服务器端进行SQL解析、预处理,再由优化器生成对应执行计划。 MySQL根据优化器生成执行计划,再调用存储引擎API来执行查询。 将结果返回给客户端。...SQL语句执行过程 查询缓存  MySQL查询缓存保存查询返回完整结构。当查询命中该缓存时,MySQL会立刻返回结果,跳过了解析、优化和执行阶段。  ...如果在一条SQL语句执行过程中将该语句对应最终执行计划进行缓存,当相似的语句再次被输入服务器时,就可以直接使用已缓存执行计划,从而跳过SQL语句生成执行计划整个过程,进而可以提高语句执行速度。...参考 SQL优化器原理——查询优化器综述 https://zhuanlan.zhihu.com/p/40478975 《高性能MySQL》 《MySQL技术内幕-InnoDB存储引擎》

1.8K30

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

一、客户端MySQL驱动: 我们系统在和 MySQL 数据库进行通信前,需要先和数据库建立连接,而这个功能就是由MySQL驱动底层帮我们完成,建立完连接之后,我们只需要发送 SQL 语句就可以执行...二、MySql架构Server层: 在介绍MySQL数据库中SQL语句在Server执行步骤前,我们先了解下MySQL整体架构: 如果上图不清楚,可以再看看下面的图: 通过上面的架构图可以得知...在执行SQL语句前添加上 explain 关键字即可; 5、执行器: MySQL 通过分析器知道了你要做什么,通过优化器知道了该怎么做,于是就进入了执行器阶段,开始执行语句。...执行器最终就是根据一系列执行计划去调用存储引擎提供API接口去调用操作数据,完成SQL执行。...key是SQL语句,value是查询结果。我们将这个过程称为查询缓存! (2)Buffer Pool位于存储引擎层。

3.5K10

MySQL探秘(二):SQL语句执行过程详解

昔日庖丁解牛,未见全牛,所赖者是其对牛内部骨架结构了解,对于MySQL亦是如此,只有更加全面地了解SQL语句执行每个过程,才能更好进行SQL设计和优化。  ...服务器端进行SQL解析、预处理,再由优化器生成对应执行计划。 MySQL根据优化器生成执行计划,再调用存储引擎API来执行查询。 将结果返回给客户端。...SQL语句执行过程 查询缓存  MySQL查询缓存保存查询返回完整结构。当查询命中该缓存时,MySQL会立刻返回结果,跳过了解析、优化和执行阶段。  ...当判断缓存是否命中时,MySQL不会进行解析查询语句,而是直接使用SQL语句和客户端发送过来其他原始信息。所以,任何字符上不同,例如空格、注解等都会导致缓存不命中。  ...如果在一条SQL语句执行过程中将该语句对应最终执行计划进行缓存,当相似的语句再次被输入服务器时,就可以直接使用已缓存执行计划,从而跳过SQL语句生成执行计划整个过程,进而可以提高语句执行速度。

5.3K10

SQLMysql中一条sql语句执行过程

通过这张图,我们可以直观看到MySQL内部结构,包括连接器、缓存、解析器、优化器、存储引擎以及支持DDL、DML、存储过程、视图等功能SQL接口。...接下来,通过一条sql语句执行来深入了解MySQL各个组件功能以及其作用。...一、SQL语句执行流程 1、连接MySQL 通常我们会编写sql语句通过某个客户端来执行并且接受执行结果,比如命令行、JDBC、navicat。...SQL解析报错 而像 select id from table1 这条sql语句会被解析成下图: 解析树 如果想了解具体解析过程可以参考这篇博客 4、优化SQL语句 通过解析器生成sql语法树后就到了...5、执行SQL语句 经过「优化器」后最终生成一个最优执行计划交给「执行器」来执行执行器通过调用「存储引擎」接口来获取数据。 这里先不展开执行器与存储引擎交互,后面的文章会详细阐述一下。

29010

Mysql语句执行过程

《高性能MySQL》 衡量查询开销三个指标 响应时间扫描行数 服务时间(处理这条语句真正花时间) 排队时间(等待资源,例如IO,行锁等) 扫描行数 返回行数 当删除了搜索条件列索引时,语句进行全表扫描...图二 语句处理过程 1.连接数据库 客户端发起一条Query请求,监听客户端‘连接管理模块’接收请求。 将请求转发到‘连接进/线程模块’。 调用‘用户模块’来进行授权检查。...查询优化处理(解析SQL、预处理、优化SQL执行计划),将SQL转化成一个执行计划。 解析和预处理:生成一棵解析树(《编译原理》知识),MySQL按照其语法对解析树进行验证和解析查询。...优化过程书上介绍了很多情况,请参考书籍6.43章 执行计划 MySQL会生成一个指令树,然后通过存储引擎完成这棵树并返回结果 如图2 查询执行引擎  查询执行引擎则根据执行计划来完成整个查询。...在执行计划时,存储引擎通过调用实现接口来完成。 ?  图三 四个表表连接查询执行计划指令树 3.返回结果 如果查询可以被缓存,MySQL将结果存放到查询缓存里。

2.6K20

浅谈SQL语句执行过程

写在前面的话:有时不理解SQL语句各个部分执行顺序,导致理解上出现偏差,或者是书写SQL语句时随心所欲,所以有必要了解一下sql语句执行顺序。可以有时间自己写一个简单数据库,理解会更加深入。...没错,对于这样简单语句,一眼就能看出来,可是对于稍微复杂一些SQL语句或者更加复杂SQL语句,有时我们一眼就看不出来了,为了能够正确分析SQL语句以及写出正确SQL语句,有必要了解一下SQL语句各部分执行顺序...,为了讲解方便,我也没有弄一些跟实际相结合表,要不还要理解业务逻辑,干脆越简单越好,毕竟目的是为了说明SQL语句执行顺序,Table1和Table2如下: ?...(11)top:从游标VC9开始处选择指定行数,这里是1行,生成虚拟表VT10. 经过上面的过程,最终SQL语句将VT10返回给用户使用。...所以以后再写SQL语句时候,可以按照上面的顺序写SQL语句了,读SQL语句也可以按照上面的顺序去读,做到心里明白。

1.4K20

SQL语句执行过程详解

一、SQL语句执行原理: 第一步:客户端把语句发给服务器端执行 当我们在客户端执行 select 语句时,客户端会把这条 SQL 语句发送给服务器端,让服务器端 进程来处理这语句。...第三步:语句执行 语句解析只是对 SQL 语句语法进行解析,以确保服务器能够知道这条语句到底表达是什么意思。等到语句解析完成之后,数据库服务器进程才会真正执行这条 SQL 语句。...二是绝大部分 SQL 语句都是按照这个处理过程处理。我们 DBA 或者基于 Oracle 数据库开发人员了解这些语句处理过程,对于我们进行涉及到 SQL 语句开发与调试,是非常有帮助。...二、SQL语句执行完整过程: 1.用户进程提交一个 sql 语句: update temp set a=a*2,给服务器进程。...,并根据ORACLE 选用优化模式以及数据字典中是否存在相应对象统计数据和是否使用了存储大纲来生成一个执行计划或从存储大纲中选用一个执行计划,然后再用数据字典核对此用户对相应对象执行权限,最后生成一个编译代码

3.9K60

SQL语句执行过程详解

3、分析器 4、优化器 5、执行器 Server层 存储引擎(InnoDB)层 三个日志比较(undo、redo、bin) 执行过程 Where 条件提取 SQL执行顺序 写操作 读操作 文章正文:...写操作执行过程   如果这条sql是写操作(insert、update、delete),那么大致过程如下,其中引擎层是属于 InnoDB 存储引擎,因为InnoDB 是默认存储引擎,也是主流,...2、缓存(Cache)   也称为查询缓存,存储数据是以键值对形式进行存储,如果开启了缓存,那么在一条查询sql语句进来时会先判断缓存中是否包含当前sql语句键值对,如果存在直接将其对应结果返回...,mysql会计算各个执行方法最佳时间,最终确定一条执行sql交给最后执行器。...SQL执行顺序 最后需要注意SQL 语句关键词解析执行顺序:

2.3K30

MySQL 有效利用 profile 分析 SQL 语句执行过程

在日常工作中,我们通常要分析 SQL 语句性能,通过会使用到执行计划,利用执行计划来分析 SQL 语句性能,并进行相应优化;本文将利用 profile 分析 SQL 语句执行过程来辅助分析...SQL 语句,做好优化; 分析 SQL 执行带来开销是优化 SQL 重要手段。...该参数开启后,后续执行 SQL 语句都将记录其资源开销,诸如 IO,上下文切换,CPU,Memory 等等。根据这些开销进一步分析当前 SQL 瓶颈从而进行优化与调整。...本文描述了如何使用 MySQL profile 以及利用 Performance_Schema 来查询 profile SQL 执行过程样例; 一、有关 profile 描述 1、查看 profiling...query end:表示语句执行完毕了,但是还有一些后续工作没做完时状态。

4.3K31

使用SQL语句创建存储过程

一、存储过程创建 定义: 存储过程是为了完成特定功能SQL语句集合,存储在数据库中,用户通过指定存储过程名称并给出参数来执行。 优点: 1、方便修改。   ...因为存储过程存储在数据库中,如果需要涉及到修改SQL语句,那么数据库专业人员只需要去修改数据库中存储过程就可以,对程序毫无影响,如果用SQL语句的话,SQL语句是写在程序中,如果涉及到修改SQL...2、存储过程SQL语句执行更快速: 存储过程是为了完成特定功能SQL语句集合,如果为了完成某一功能,使用了大量SQL语句,那么执行存储过程执行一次就可以,而SQL语句呢,则是需要执行多个。...语句管理和维护存储过程 2.1 使用sp_helptext查看存储过程student_sc定义脚本 语句: sp_helptext student_sc 2.2 使用select语句查看student_sc...(3) 修改sQL语句,使之能查询051班所有女生资料存储过程 (3)删除存储过程stu_pr 选择存储过程stu _pr,右击,选择“删除”

27020

MySQL执行sql语句机制

目录 1 概念 2 执行过程 1 概念 连接器: 身份认证和权限相关(登录 MySQL 时候)。...分析器: 没有命中缓存的话,SQL 语句就会经过分析器,分析器说白了就是要先看你 SQL 语句要干嘛,再检查你 SQL 语句语法是否正确。...第二步,语法分析,主要就是判断你输入 sql 是否正确,是否符合 MySQL 语法。 优化器: 按照 MySQL 认为最优方案去执行执行器: 执行语句,然后从存储引擎返回数据。...2 执行过程 查询语句执行: 1、鉴权 2、查询缓存 3、分析sql,提取关键字select 、表名、列字段、查询条件,然后判断语法 4、优化执行方案,自己优化算法不一定是最优 5、再次权限校验...SQL执行过程分为两类, 一类对于查询等过程如下:权限校验—-》查询缓存—-》分析器—-》优化器—-》权限校验—-》执行器—-》引擎 对于更新等语句执行流程如下:分析器——》权限校验——》6267

3.8K30

SQL Server 存储过程_mysql存储过程教程

SQL SERVER 存储过程 **相对于视图优势(为什么使用存储过程):** Sql Server中视图通过简单Select查询来解决多次复杂查询,但是视图不能提供业务逻辑功能,而存储过程可以...**什么是存储过程:** 存储过程(Procedure)是一组为了完成特定功能Sql语句集合,相当于C#中方法,只编译一次,经编译后存储在数据库中,用户可以通过制定存储过程名称并给出所需参数来执行...正是由于存储过程只编译一次,所以它比单个Sql语句块要快速, 所以在一定程度上减少了网络流量,减轻网络负担。...存储过程优点: 模块化编程 写一次存储过程,可以多次从应用程序不同部分调用,重复使用 性能 存储过程提供更快代码执行,减少了网络流量负担。...安全 用户无需使用写任何Sql语句执行存储过程,防止了Sql注入攻击 可维护性 一组需求改变,修改存储过程即可再次重复调用 存储过程缺点: 不可移植性 每种数据库内部编程语法都不太相同,当你系统需要兼容多种数据库时最好不要用存储过程

5.5K30

MySQL十八:写语句执行过程

一、读语句执行过程 在之前《MySQL运行机制》文中,详细说明了一个查询语句执行过程,查询sql执行过程基本上分为六步: 「建立连接(Connectors&Connection Pool)」 「...还是通过这张图,按照【读语句执行过程六个步骤去执行,不同是: 「分析器」 通过【「词法分析」】和【「语法解析」】确定当前SQL语句是一条更新语句。...「优化器」 确定索引,执行计划 「执行器」 内存中修改数据,调用存储引擎修改接口,最终修改数据 「以上就是更新语句执行过程,看起来似乎跟查询语句没啥区别,只不过一个查询语句,一个是更新语句...2.5 写入语句执行过程 通过对以下几篇文章介绍,可以使我们对MySQL写入有了一个大概认识,内部执行原理也有了比较清晰认知,接下来看一下一条sql执行整个流程中,从它经历组件,各个组件做操作等角度来分析一下写操作执行过程...update user set name='星河之码' where id=1; 来看看执行上述这个修改语句整个过程,前面建立连接等几个步骤就省略了,直接看执行执行过程,如下图: 「执行器通过存储引擎查找

2.4K20
领券