MySQL 执行过程

栏目: 数据库 · 发布时间: 6年前

内容简介:mysql 主要由, server层和存储层两部分构成.server 层主要包括连接器, 查询缓存, 分析器, 优化器, 执行器连接器主要负责将mysql 客户端和服务端建立连接,会获取当前用户的权限. 这里获取到的权限对整个连接都有效,一旦连接成功后,如果使用管理员账号对用户更改查询,在当前连接中拥有的权限保持不变,值有等到下次重新连接才会更新权限
select 
	student.id as studentId,  
	student.name as studentName,
	student.age as studentAge,
	student.sex as studentSex,
	dept.name as deptName
from student
left join dept on student.deptId = dept.id
where student.id = '1'
order by student.age desc
复制代码

sql **执行过程

mysql 主要由, server层和存储层两部分构成.

MySQL 执行过程

server 层主要包括连接器, 查询缓存, 分析器, 优化器, 执行器

MySQL 执行过程

连接器

MySQL 执行过程

连接器主要负责将 mysql 客户端和服务端建立连接,会获取当前用户的权限. 这里获取到的权限对整个连接都有效,一旦连接成功后,如果使用管理员账号对用户更改查询,在当前连接中拥有的权限保持不变,值有等到下次重新连接才会更新权限

查询缓存

MySQL 执行过程

连接成功之后,即开始要正式执行 select 语句了, 但是在执行查询之前, mysql 会去看下有没有该条语句的查询缓存内容,如果有缓存 直接从缓存中读取并返回结果, 不需要在执行后面的步骤, 结束查询操作. 如果没有缓存则接着往后执行,并将执行语句和结果保存到缓存中

注意: mysql8 之后已经没有这个功能了, 因为这个缓存区太容易刷新,效果并不是太大

解析器

MySQL 执行过程

当没有查询到缓存, 就需要开始执行 sql 语句了, 在执行之前肯定需要对 sql 语句进行解析.

分析器主要对 sql 语句进行语法和语义分析, 检查单词拼写是否错误, 还有检查要查询的表或字段是否存在,如果分析器检测出有错误就会返回类似 "you have an error in you sql " 这样的错误信息,并结束查询操作.

优化器

当通过分析器之后, mysql 算是理解了你要执行的操作,但是通常对于一个 sql , mysql 内部可能存在多种执行方案,比如存在多个索引,该选择哪个索引,多个表关联查询,怎么确认各个表的连接顺序.

多个方案的执行结果都一样,但是执行效率不一样,所以mysql在执行之前需要尝试找出最优方案来,这就是优化器主要工作

执行器

当经过优化器后,就到了执行器执行sql了. 在前面连接器处已经读取到当前用户的权限了, 连接器中只是获取到权限,并没有对权限进行判断和效验.

所以在执行器中, 在执行语句之前会判断权限, 如果没有对应的权限则会直接返回并提示没有相关权限.


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Learn Python the Hard Way

Learn Python the Hard Way

Zed Shaw / Example Product Manufacturer / 2011

This is a very beginner book for people who want to learn to code. If you can already code then the book will probably drive you insane. It's intended for people who have no coding chops to build up t......一起来看看 《Learn Python the Hard Way》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具