【Mysql】 一条sql查询语句怎么执行

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/w372426096/article/details/87919935

客户端连接到服务端,获取到权限等信息, 然后在连接的有效时长内(interactive_timeout和wait_timeout参数控制, 5.7版本会断开可以自动重连)对sql进行处理。

首先会判断查询缓存是否开启,如果已经开启,会判断sql是select还是update/insert/delete,对于select,尝试去查询缓存,如果命中缓存直接返回数据给客户端, 如果缓存没有命中,或者没有开启缓存, 会进入到下一步分析器。

分析器进行语法分析、词法分析,检查sql的语法顺序等得到解析树, 然后预处理器对解析树进一步分析,验证数据表、字段是否存在,通关之后sql进入下一步优化器,所以课后问题一定是分析器阶段了。

优化器对sql执行计划分析, 得到最终执行计划,得到优化后的执行计划之后交给执行器。

执行器调用存储引擎api执行sql,得到响应结果, 将结果返回给客户端,如果缓存是开启状态, 会更新缓存。

猜你喜欢

转载自blog.csdn.net/w372426096/article/details/87919935