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 状态)

相关推荐
实心儿儿8 小时前
MySQL — 库的操作
数据库·mysql·oracle
bksczm8 小时前
MySQL基础篇之索引
数据库·sql·mysql
乱码三千9 小时前
使用 Docker-compose 搭建SRS直播中转服务端
后端·架构·github
bksczm9 小时前
MySQL基础篇之事务
linux·数据库·sql·mysql
马立杰9 小时前
mysql中Illegal mix of collations for operation “UNION”错误的解决方法
数据库·sql·网络安全
萧瑟余晖9 小时前
MyBatis 核心原理详解
架构·mybatis
bksczm9 小时前
MySQL基础篇之视图与用户管理
linux·数据库·sql·mysql
香菜TTT9 小时前
怎么实现MySQL的主从同步机制
数据库·mysql
Shota Kishi17 小时前
Solana Shreds 的 UDP 直投架构:Shredstream UDP Forwarding 的设计与实现
网络协议·架构·udp·区块链·solana
mldong20 小时前
一份 JSON,一条能跑的审批流:把报销流程送上工作流引擎
后端·架构