前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一条查询SQL执行原理

一条查询SQL执行原理

作者头像
测试小兵
发布2019-10-12 16:29:15
6320
发布2019-10-12 16:29:15
举报
文章被收录于专栏:猪圈子

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

1.查询SQL发送请求

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

2.判断是否为select查询语句

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

3.查询缓存先行

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

4.语法分析之分析器

如果在查询缓存中未匹配成功,则将语句交给分析器作语法分析。MySQL通过分析语法知道要查的内容。这步会对语法进行检验,如果语法不对就会返回语法错误中断查询。如果语法不正确

代码语言:javascript
复制
You have an error in your SQL syntax

5.查询之预处理器

(1)分析器的工作完成后,将语句传递给预处理器,检查数据表和数据列是否存在,解析别名看是否存在歧义如果错误返回

代码语言:javascript
复制
 Unknown column xxx in ‘where clause’

(2)sql是否有该表的的操作权限;如果错误

代码语言:javascript
复制
ERROR 1142 (42000): SELECT command denied to user 'root'@'localhost' for table 'xxx'

6.查询之优化器

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

7.查询之执行器

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

插话 :)

文末这句话本不想补充,但是还是叨一下,公号玩了一年多,今天晚间打开留言板还是第一次看到有位网友谩骂的口舌,说我 ***** 引文卖字!起因应该在于1010号的推文,在这里这个自媒体的平台,文章言论是自由,小编发文并不是能够满足所有人的需求,

聪明的人喜欢在文章里得到他想要的那百分之十。就满足,满心欢喜,今天又学到了一点知识,而总有那么部分的喷子,总是发现那百分之一的缺陷,还咄咄逼人的留言谩骂,请问你跟前者比起来,你的高度以及你的智慧在哪里?

文章你们可选择性观看,不要作为一名网络键盘侠看到不爽之处就破口大骂,谩骂他人,很有损你的身份,保持尊重,谢谢

脚本:猪圈子

图片:猪圈子

来源:咯咯

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-10-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python测试社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档