作者ChinaLeng 发布于 3年前
前言

最近再准备面试的东西,再看面试题的时候看到一个题目一条SQL的执行流程和解析顺序,当时并没有理解这个执行流程和解析顺序,所以这几天就再网站看了看资料,总结了一下,由于本人才疏学浅,如果有错误的地方劳烦告知修改一下,感谢。


MYSQL图解架构

连接层

第一步就是要先接连上数据库,这个时候连接器就负责跟客户端建立链接,获取登陆者权限等等,一般语句就是

mysql -h[ip] -p[端口号] -r[用户名] -p[密码(可以不写)] 

回车之后就可以直接登录,如果-p后面你没有写密码,那么你需要再交互对话里面输入密码再登录。

查询缓存

建立了连接后,选择好库之后就可以执行sql的查询语句了,当mysql收到你的select的语句的时候,会先查询一下缓存,看下以前是不是执行过这个语句,如果执行过就会直接返回值,没有的话就会执行后面的操作。

分析器

如果没有查询到缓存,语句就会走到这步,这个时候mysql就会做语法分析,分析我们编写的sql是否正确。

优化器

上面都成功的话,接下来就是优化sql语句。优化器会选择使用的索引或者决定各个表之间连接的顺序。

执行器

这步就是开始执行优化后的sql语句,开始执行sql之前会检查当前用户对这个表是否有查询权限,如果有权限就继续执行,执行器会根据表定义的引擎,去调用引擎接口。

这大概就是一条sql执行的顺序。

标签:

0条评论