一次SQL的完整处理流程

news/2024/10/30 3:04:43/

 

流程:

1. 客户端到连接器是通过TCP/IP SSL通信协议连接的,

2.连接器验证MySQL权限信息是否正常,连接量是否正常,长时间没有连接服务器会自动断开等等 ;

3. 然后到解析器,通过客户端发过来的sql进行语法解析,验证sql是否合法;

4.然后到优化器,生成执行计划选择索引;

5.再到执行器调用存储引擎提供的API接口 进行数据读写操作;

6.然后存储引擎花费磁盘IO进行数据读写,B+树索引构建、事务日志等 ;

7.磁盘上存着数据:表结构、表数据和表索引。

8.最后执行器,如果是查询操作,将结果在查询缓存中缓存一份返回给客户端。

连接器:管理连接,权限验证

解析器:词法分析 语法分析

优化器:生成执行计划 选择索引

执行器:调用存储引擎提供的API接口 进行数据读写操作, 执行SQL,返回结果

存储引擎:存储数据,提供读写接口  


http://www.ppmy.cn/news/62584.html

相关文章

PAT A1032 Sharing

1032 Sharing 分数 25 作者 CHEN, Yue 单位 浙江大学 To store English words, one method is to use linked lists and store a word letter by letter. To save some space, we may let the words share the same sublist if they share the same suffix. For example, l…

Alertmanager集群搭建【共享配置文件docker版】

# 当集群中的Alertmanager节点不在一台主机时,通常需要使用--cluster.advertise-address参数指定当前节点所在网络地址 #共享alertmanager.yml配置文件,可以挂载到同一个目录下 version: "3" services: alertmanager1: image: prom/alertmanager:latest …

【Redis】概述与安装

概述 Redis 是什么? Redis(Remote Dictionary Server ),即远程字典服务; 是一个开源的使用 ANSI C 语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API。 Redis 会周期性的把…

ADRV9002官方例程开发过程中遇到的问题

开发环境:Vivado2021.2 HDL版本:hdl_2021_r2 GitHub - analogdevicesinc/hdl at hdl_2021_r2 no-OS版本:no_OS-2021_R2 GitHub - analogdevicesinc/no-OS at 2021_R2 (PS:也可以用Vivado2019.1开发&#xff0c…

SpringBoot启动原理

背景 1> 大家都知道SpringBoot是通过main函数启动的,这里面跟踪代码到处都没有找到while(true),为什么启动后可以一直跑? 2> SpringBoot默认使用tomcat作为web容器。大家也可以通过在pom文件中exclusion掉tomcat,denpendenc…

公示!首批8款产品方案入围2023年度智驾竞争力评选

对于智能驾驶赛道来说,2023年将是至关重要的一年。芯片短缺影响正在逐步得到缓解,但车市不确定性正在加剧,同时,车企在智能化普及上的成本压力也在凸显。 高工智能汽车研究院监测显示,2023年1-2月中国市场&#xff08…

在全志V851S开发板上进行屏幕触摸适配

1.修改屏幕驱动 从ft6236 (删掉,不要保留),改为下面的 路径:/home/wells/tina-v853-open/tina-v853-open/device/config/chips/v851s/configs/lizard/board.dts(注意路径,要设置为自己的实际路…

TypeScript学习总结(二)

函数 TypeScript函数的定义和调用 TypeScript 函数的定义和调用与 JavaScript 函数的定义和调用基本相同。 函数的定义: 在 TypeScript 中,可以使用 function 关键字来定义函数。例如: function add(x: number, y: number): number {ret…