前言
最近再准备面试的东西,再看面试题的时候看到一个题目一条SQL的执行流程和解析顺序,当时并没有理解这个执行流程和解析顺序,所以这几天就再网站看了看资料,总结了一下,由于本人才疏学浅,如果有错误的地方劳烦告知修改一下,感谢。
MYSQL图解架构
连接层
第一步就是要先接连上数据库,这个时候连接器就负责跟客户端建立链接,获取登陆者权限等等,一般语句就是
mysql -h[ip] -p[端口号] -r[用户名] -p[密码(可以不写)]
回车之后就可以直接登录,如果-p后面你没有写密码,那么你需要再交互对话里面输入密码再登录。
查询缓存
建立了连接后,选择好库之后就可以执行sql的查询语句了,当mysql收到你的select的语句的时候,会先查询一下缓存,看下以前是不是执行过这个语句,如果执行过就会直接返回值,没有的话就会执行后面的操作。
分析器
如果没有查询到缓存,语句就会走到这步,这个时候mysql就会做语法分析,分析我们编写的sql是否正确。
优化器
上面都成功的话,接下来就是优化sql语句。优化器会选择使用的索引或者决定各个表之间连接的顺序。
执行器
这步就是开始执行优化后的sql语句,开始执行sql之前会检查当前用户对这个表是否有查询权限,如果有权限就继续执行,执行器会根据表定义的引擎,去调用引擎接口。
这大概就是一条sql执行的顺序。
0条评论