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

相关推荐
纸上的彩虹几秒前
半年一百个页面,重构系统也重构了我对前端工作的理解
前端·程序员·架构
FrameNotWork2 小时前
HarmonyOS 与 Android 架构对比:从“写页面”到“设计系统”的差异
android·架构·harmonyos
陈平安安2 小时前
设计一个秒杀功能
java·数据库·sql
Leo1873 小时前
MySQL 回表(Back to Table)详解
数据库·mysql
遇见火星3 小时前
MySQL 8.0复制架构主从自动切换脚本
mysql·adb·架构·mysql8.0·mysql主从
不知江月待何人..3 小时前
MySQL服务无法启动问题
数据库·mysql
廋到被风吹走3 小时前
【数据库】【Oracle】SQL基础
数据库·sql·oracle
李少兄3 小时前
一文搞懂什么是关系型数据库?什么是非关系型数据库?
数据库·redis·mysql·mongodb·nosql
会开花的二叉树3 小时前
即时通讯系统核心模块实现
数据库·mysql·elasticsearch
勇气要爆发5 小时前
Minio + CDN 架构实战:从入门到避坑
架构