MySQL 执行流程是怎样的?

可以看到, MySQL 的架构共分为两层:Server 层和存储引擎层

  • Server 层负责建立连接、分析和执行 SQL。MySQL 大多数的核心功能模块都在这实现。
  • 存储引擎层负责数据的存储和读取。 InnoDB、MyISAM、Memory。不同的存储引擎共用一个 Server 层。

执行一条 SQL 查询语句,期间发生了什么?

  1. 连接器:客户端与mysql服务建立连接,获取用户权限,用于后续的权限校验;
  2. 查询缓存:连接成功之后,客户端可以发送sql语句,这个时候解析sql语句的第一个字段,如果是select 就会查询缓存。查询语句如果命中查询缓存则直接返回,否则继续往下执行。MySQL 8.0 已删除该模块;
  3. 解析 SQL:通过解析器对 SQL 查询语句进行词法分析、语法分析,然后构建语法树,方便后续模块读取表名、字段、语句类型;
  4. 执行 SQL:执行 SQL 共有三个阶段:
    • 预处理阶段:预处理器检查表或字段是否存在;将 select * 中的 * 符号扩展为表上的所有字段。
    • 优化阶段:选择成本最小的执行计划,就比如说表中有好几个索引,需要决定走哪条索引;
    • 执行阶段:执行器根据执行计划去执行 SQL 语句,与存储引擎进行交互,从存储引擎读取记录,返回给客户端;

更新语句执行流程如下:分析器---->权限校验---->执行器--->引擎---redo log(prepare 状态)--->binlog--->redo log(commit 状态)

相关推荐
秋难降1 天前
零基础学习SQL(十一):SQL 索引结构|从 B+Tree 到 Hash,面试常问的 “为啥选 B+Tree” 有答案了
数据库·后端·mysql
居7然1 天前
解锁AI智能体:上下文工程如何成为架构落地的“魔法钥匙”
人工智能·架构·大模型·智能体·上下文工程
ljh5746491191 天前
mysql 必须在逗号分隔字符串和JSON字段之间二选一,怎么选
数据库·mysql·json
gamers1 天前
rock linux 9 安装mysql 5.7.44
linux·mysql·adb
努力的小郑1 天前
MySQL索引(四):深入剖析索引失效的原因与优化方案
后端·mysql·性能优化
shinelord明1 天前
【数据行业发展】可信数据空间~数据价值的新型基础设施
大数据·架构·云计算·创业创新
江团1io01 天前
深入解析MVCC:多版本并发控制的原理与实现
java·经验分享·mysql
-Xie-1 天前
Mysql杂志(十四)——Mysql逻辑架构
数据库·mysql·架构
七夜zippoe1 天前
多级缓存架构实战手册:Caffeine+Redis 从设计到落地的全链路解决方案
redis·缓存·架构
emma羊羊2 天前
【SQL注入】延时盲注
数据库·sql·网络安全