MySQL 执行过程

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

内容简介: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了. 在前面连接器处已经读取到当前用户的权限了, 连接器中只是获取到权限,并没有对权限进行判断和效验.

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


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

查看所有标签

猜你喜欢:

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

程序员的英语

程序员的英语

[韩]朴栽浒、[韩]李海永 / 颜廷连 / 人民邮电出版社 / 2018-2 / 49.00元

高考以后就把英语都还给老师了? 写代码特顺溜,一到英语就卡壳? 常见的语法书太枯燥,单词书又太宽泛? 不用急,快来加入针对开发人员的英语读解能力训练项目! - 安全与黑客攻击、无人机与机器人、大数据、物联网、云计算,顺应新技术潮流! - 语法、单词、完形填空、阅读理解、翻译,多角度提升读解能力! - 英语母语技术人员审校,提供“语言和技术”双保险!一起来看看 《程序员的英语》 这本书的介绍吧!

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

html转js在线工具
html转js在线工具

html转js在线工具