当前位置:网站首页>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天学习挑战赛
边栏推荐
- JWT: To own me is to have power
- 【元宇宙欧米说】看UCOUCO如何将行为艺术融入元宇宙
- 裸辞→自我放松→闭关→复习→斩获Offer
- 【元宇宙欧米说】听兔迷兔如何从虚拟到现实创造潮玩新时代
- "Data Architecture": How can master data management (MDM) help my industry?
- ELK框架搭建[通俗易懂]
- 并发的基本概念,操作,容器
- 【Enterprise Architecture】Agile and Enterprise Architecture: Strategic Alliance
- Excel draws statistical graphs
- LCD模块如何建立联系分析
猜你喜欢
随机推荐
mysql千万级别数据库优化
武功修炼:内功
数据库中的schema
裸辞→自我放松→闭关→复习→斩获Offer
13 【script setup 总结】
单例模式基类
多元线性回归分析(Stata)
【物联网架构】最适合物联网的开源数据库
keepalived:常见问题
细说Redis监控和告警
在“企业通讯录”的盲区,融云的边界与分寸
Development environment variable record under win
【数据仓库】什么是 Azure Synapse,它与 Azure Data Bricks 有何不同?
VBA: 采用Combox控件实现二级下拉菜单功能
【Redis】Redis入门教程(介绍 下载安装 Jedis 图形化界面)
【分布式】资源与事务:可观测性的基本二重性
并发的基本概念,操作,容器
Payment x Aggregation x Ledger Separation - The Way to Avoid Risk of "Erqing" on the Return Platform
杭电多校七 1008-Triangle Game(博弈)
C语言题解:倒置字符串









