当前位置:网站首页>MySQL 执行查询流程
MySQL 执行查询流程
2022-08-10 09:59:00 【掉了颗兔牙lx】
1. 客户端通过 TCP 连接发送连接请求到 MySQL 连接器,连接器会对该请求进行权限验证及连接资源分配。
连接器的作用:
- 负责与客户端通信,但是它是半双工模式,所以只能由客户端向服务器发送请求或者服务器响应客户端,两者不能同时进行。
- 验证请求用户的账号和密码是否有误,如果验证通过,会在 MySQL 自带的权限中查询当前用户的权限。
2. 查询缓存。
当判断缓存是否命中时,MySQL 不会进行解析查询语句,而是直接使用 SQL 语句和客户端发送过来的其他原始信息。所以,任何字符上的不同,例如空格、注解等都会导致缓存的不命中。如果无法命中缓存,就继续走到分析器的这一步,如果命中缓存就直接返回给客户端。
3. 通过分析器进行语法分析。
通过分析器将客户端发送的 SQL 语句进行分析,这一过程包括预处理和解析过程。 解析 SQL 语句的语义,进行关键字(select/update/delete/whiere 等)和非关键词的提取、解析,组成一个解析树。如果语法错误,客户端出现异常“ERROR:You have an error in your SQL syntax.”除了校验语法,还会检查数据表和数据库是否存在,别名是否存在歧义等校验。
4. 优化器进行优化。
此阶段主要是进行SQL语句的优化,会根据具体情况进行最优的选择,判断是否使用索引,以及选择合适的索引,生成执行计划。
5. 交给执行器,调用存储引擎的 API 将数据保存到结果集中,同时会逐步将数据缓存到查询缓存中,最终将结果集返回给客户端。

SQL 的执行顺序:
SQL 是按照固定的顺序解析的,而不是按照书写顺序从前往后执行的。主要的作用就是从上一个阶段的执行返回结果来提供给下一阶段使用,SQL在执行的过程中会有不同的临时中间表,一般是按照如下顺序:from -> on -> join -> where -> goup by -> having + 聚合函数 -> select -> order by -> limit
活动地址:CSDN21天学习挑战赛
边栏推荐
猜你喜欢

「业务架构」TOGAF建模:组织分解图(组织映射)

【Enterprise Architecture】Agile and Enterprise Architecture: Strategic Alliance

【数据架构】概念数据模型和逻辑数据模型有什么区别

【物联网架构】什么是物联网平台?

web项目访问引用jar内部的静态资源

Excel draws statistical graphs

2022 首期线下 Workshop!面向应用开发者们的数据应用体验日来了 | TiDB Workshop Day

线程池的基本概念、结构、类

解决ASP.NET Core在Task中使用IServiceProvider的问题

【元宇宙欧米说】听兔迷兔如何从虚拟到现实创造潮玩新时代
随机推荐
【API Management】What is API Management and why is it important?
【Redis】Redis入门教程(介绍 下载安装 Jedis 图形化界面)
07 【动态组件 组件注册】
Defending risks with technology and escorting cloud native | Tongchuang Yongyi X Boyun held a joint product launch conference
Shell脚本数组
JS高级 之 Promise 详解
lua初学
web项目访问引用jar内部的静态资源
Numpy学习
Relearn bubble sort
「数据架构」数据模型,数据字典,数据库模式 和ERD的比较
消息队列概述
CAD to WPF: Tips on converting CAD drawing files to WPF vector code files (xaml files)
【软考 系统架构设计师】系统可靠性分析与设计① 系统可靠性分析
腾讯发布四足机器人 Max 二代版本,梅花桩上完成跳跃、空翻
「微服务架构」编曲与编舞——让系统协同工作的不同模式
中国驻越南使馆提醒在越北部、中部地区中国公民做好台风“木兰”安全防范
「应用架构」TOGAF建模:应用程序迁移图
裸辞→自我放松→闭关→复习→斩获Offer
UE4 Sequence添加基础动画效果 (05-蓝图触发Sequence)