当前位置:网站首页>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天学习挑战赛
边栏推荐
猜你喜欢
「微服务架构」编曲与编舞——让系统协同工作的不同模式
[System Design] S3 Object Storage
【STL】位图的介绍使用以及代码的模拟实现
关于编程本质那些事
「业务架构」TOGAF建模:业务功能分解图
09 【Attributes继承 provide与inject】
[Metaverse Omi Says] Listen to how Rabbit Fan Rabbit creates a new era of trendy play from virtual to reality
「数据战略」结果驱动的企业数据策略:组织和治理
UE4 Sequence添加基础动画效果 (05-蓝图触发Sequence)
PostgreSQL 2022 发展现状:13 个非 psql 工具
随机推荐
OLTP and OLAP database architecture 】 【 : actual comparison
Basic concepts, structures, and classes of thread pools
UE4 粒子特效基础学习 (01-将粒子效果挂载到角色身上)
ELK框架搭建[通俗易懂]
VBA: Inputbox Function and Inputbox Method
C语言题解:倒置字符串
Lasso回归(Stata)
哈希表,哈希桶的实现
ESP8266-Arduino编程实例-MQ-7一氧化碳传感器驱动
2022年固定资产管理系统的概况
「技术选型」工作流引擎哪家强?首席架构帮你挑
keepalived:常见问题
VBA: 采用Combox控件实现二级下拉菜单功能
Optimistic and pessimistic locking
「第二部:容器和微服务架构」(1) 基于容器应用架构设计原则
「业务架构」TAGAF建模:业务服务/信息图
ELK入门
「敏捷建模」纪律:敏捷设计理念
LiveGBS操作日志页面快速的筛选上级平台的调用记录直播观看录像回看等操作
序列化技术ProtoBuf