MySQL 执行过程

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

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

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


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

查看所有标签

猜你喜欢:

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

Hadoop: The Definitive Guide

Hadoop: The Definitive Guide

Tom White / O'Reilly Media, Inc. / 2009 / 44.99

Apache Hadoop is ideal for organizations with a growing need to store and process massive application datasets. Hadoop: The Definitive Guide is a comprehensive resource for using Hadoop to build relia......一起来看看 《Hadoop: The Definitive Guide》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

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

HTML 编码/解码

URL 编码/解码
URL 编码/解码

URL 编码/解码