MySQL语句执行过程
以前对于mysql只是停留在会写sql语句阶段,最近工作需要,开始深入学习,记录一下,加深记忆。
先来一张图:

1. 连接器
连接器主要负责验证权限,若密码未验证成功,返回“Access denied for user”。 若验证通过,则到权限表查询权限,后面的操作都是依赖查询出来的权限,故连接成功以后,改变权限,需重新连接才会生效。
连接完成后,若没有后续操作,连接处于空闲状态(sleep),如果超过设置时间还未操作,连接器自动断开(默认8小时,通过设置wait_timeout),如断开后,客户端在请求,则会报出Lost connection to MySQL server during query
ps:mysql建立连接是一个耗时的过程,所以建议用长连接,但是要注意 定时要清理一次,使用mysql_reset_connection初始化连接资源,释放内存(因为临时内存是在连接对象上)
2. 分析器
词法分析:分析关键词
语法分析:看是否有sql语法错误
3. 优化器
mysql会判断走什么索引,如何选择表的先后
4.执行器
这里会再次判断操作权限,因为在连接器的时候,有些权限是判断不了
先这样,不会排版。

浙公网安备 33010602011771号