一条查询SQL查询语句的执行原理

先熟悉一下浅而易懂SQL执行的流程图SQL查询过程七步曲
java



1.查询SQL发送请求
mysql


客户端将查询sql按照mysql通讯协议传输到服务端。服务端接受到请求后,服务端单起一个线程执行sql


2.判断是否为select查询语句
执行前mysql会经过命令分发器判断其是不是一条select语句(判断sql语句前6个字符是否为select);


3.查询缓存先行
MySQL在开启查询缓存的状况下,首先会先在查询缓存中查找该SQL是否彻底匹配,若是彻底匹配,验证当前用户是否具有查询权限,若是权限验证经过,直接返回结果集给客户端,该查询也就完成了。若是不匹配继续向下执行。


4.语法分析之分析器
若是在查询缓存中未匹配成功,则将语句交给分析器做语法分析。MySQL经过分析语法知道要查的内容。这步会对语法进行检验,若是语法不对就会返回语法错误中断查询。若是语法不正确
You have an error in your SQL syntax


5.查询之预处理器

(1)分析器的工做完成后,将语句传递给预处理器,检查数据表和数据列是否存在,解析别名看是否存在歧义若是错误返回
 Unknown column xxx inwhere clause’


(2)sql是否有该表的的操做权限;若是错误
nginx

ERROR 1142 (42000): SELECT command denied to user 'root'@'localhost' for table 'xxx'


6.查询之优化器
语句解析完成后,MySQL就知道要查的内容了,以后会将语句传递给优化器进行优化(经过索引选择最快的查找方式),并生成执行计划。


7.查询之执行器
最后,交给执行器去具体执行该查询语句。执行器开始执行后,会逐渐将数据保存到结果集中,同时会逐步将数据缓存到查询缓存中,最终将结果集返回给客户端。

web


一、Spring Boot 中 Tomcat 是如何启动的?sql


二、最详细的 IDEA 中使用 Debug 教程编程


三、最详细的maven教程,能够收藏!后端


四、精选 10 个Java后台开源项目!缓存



本文分享自微信公众号 - Java后端编程(java_hdbc)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。bash

相关文章
相关标签/搜索