Mysql——一条SQL语句的执行流程

一、Mysql的体系结构

架构图:

Mysql的体系结构主要分为以下几层:

1. Connectors 连接层:负责处理客户端的请求连接。

  • 系统在访问Mysql的服务器之前会先与服务器建立TCP连接,连接成功后Mysql会对TCP传输过来的用户信息做权限验证。

2. MySQL Server服务层

  • Connection Pool 链接池:负责处理和存储客户端与mysql服务器之间的链接。其中一个线程处理一个链接。
  • SQL Interface(SQL 接口):接受客户端的SQL,如DML、DDL、存储过程、视图、触发器等。
  • Parser(解析器):SQL传到解析器后会被解析、验证、优化。将SQL语句分解为数据结构并创建语法树,根据数据字典查询语法树,验证客户端的操作权限,创建好语法树后还会对语法进行优化。
  • Optimizer (查询优化器):在SQL语法解析后确定SQL的执行路径,生成执行计划(是否使用索引以及使用哪些索引,表之间的连接顺序)
  • Service & utilities (服务治理&工具集):包括Backup & Restore(数据备份和还原)、Security(安全)、Replication(复制)、Cluster(聚簇)、Partitioning(分区)、Workbench(工作台)等等集群管理服务和工具。
  • Caches 缓存等模块:用来缓存一条SELECT语句的执行结果,如果能够在其中找到对应的查询结果,那么就不必再进行查询解析、优化和执行的整个过程了,直接将结果反馈给客户端。(Mysql8.0后已删除)

3. 引擎层:Mysql支持插件式存储引擎

几种常见的存储引擎:

  • InnoDB: Mysql默认的存储引擎,支持事务、支持行锁、支持外键
  • MyISAM: 不支持事务、不支持外键,支持表锁
  • Memery: 支持哈希索引,数据存储在内存中

4. 存储层

文件的物理存储层,包括日志文件、数据等。

二、sql语句的执行流程

1、第一步:建立连接,在执行sql语句前,客户端首先需要mysql服务端建立连接,mysql是基于TCP协议进行传输的,所以需要先经历TCP的三次握手来建立连接。连接建立成功后,连接器会对用户名、密码进行校验。校验通过获取到用户权限后保存权限信息便于后续操作的权限判断。
2、第二步:查询缓存(mysql8.0之后已废弃),mysql服务端接收到sql后会先对SQL语句的第一个字段进行解析,如果是select会先进入到缓存模块查找缓存数据,缓存中数据是以key-value形式存储的,其中key就是sql语句,value就是返回值,如果缓存命中就直接返回缓存值。否则执行操作后把结果再写入缓存中。
3、第三步:解析sql,mysql中的解析器会对sql进行解析,包括词法解析,解析出语句中的关键字,语法解析,根据语句规则判断是否符合语法然后构建一个语法树。
4、第四步:执行sql,首先进入预处理阶段对表和字段进行判断,预处理后查询优化器会对sql语句制定一个执行计划,比如确定索引。优化器处理后就是执行器,根据索引选择执行方式,如(主键索引查询、全表查询、索引下推等)到存储引擎中获取到数据后返回给客户端。

相关推荐
wuyikeer4 分钟前
Java进阶——IO 流
java·开发语言·python
fengxin_rou12 分钟前
JVM 内存结构与内存溢出 / 泄漏问题全解析
java·开发语言·jvm·分布式·rabbitmq
城俊BLOG13 分钟前
C++的注册机制和插件系统
java·服务器·c++
Try,多训练27 分钟前
软件设计师备考第一性原理分析
java·经验分享·学习方法
Seven9738 分钟前
Tomcat Container容器之Engine:StandardEngine
java
jinanwuhuaguo41 分钟前
(第三十六篇)OpenClaw 去中心化的秩序——从“中心调度”到“网格自治”的治理革命
java·大数据·开发语言·网络·docker·去中心化·github
重生之小比特1 小时前
【MySQL 数据库】表的操作
数据库·mysql
AI进化营-智能译站6 小时前
ROS2 C++开发系列17-多线程驱动多传感器|chrono高精度计时实现机器人同步控制
java·c++·ai·机器人
qq_589568109 小时前
springbootweb案例,出现访问 http://localhost:8080/list 一直处于浏览器运转阶段
java·网络协议·http·list·springboot
JAVA面经实录91710 小时前
计算机基础(完整版·超详细可背诵)
java·linux·数据结构·算法