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

相关推荐
这是谁的博客?18 分钟前
Mamba 状态空间模型深度解析:挑战 Transformer 的新一代架构
深度学习·ai·架构·transformer·ssm·mamba·状态空间模型
苏渡苇34 分钟前
Spring Cloud Alibaba:将 Sentinel 熔断限流规则持久化到 Nacos 配置中心
数据库·spring boot·mysql·spring cloud·nacos·sentinel·持久化
杨云龙UP40 分钟前
Oracle Recycle Bin 回收站详解:DROP TABLE 后还能找回吗?
linux·运维·数据库·sql·mysql·oracle
上海云盾第一敬业销售1 小时前
高防CDN应对大规模流量攻击的架构解析
web安全·架构·ddos
还在忙碌的吴小二1 小时前
Spring Cloud Alibaba 微服务解决方案新手入门指南
微服务·云原生·架构
Doris_20232 小时前
代码格式化 使用oxfmt
设计模式·架构·前端框架
Fanta丶2 小时前
7.MySql函数使用 字符串、数值、日期、流程函数
mysql
Doris_20233 小时前
说一说ESLint+Prettier生效的原理
前端·设计模式·架构
ElevenS_it1883 小时前
连锁门店IT运维监控实战:200+门店网络设备+POS统一纳管+按区域分组告警路由完整配置(Zabbix Proxy架构)
运维·网络·架构·zabbix
ting94520004 小时前
深度解析 Google Stitch 3.0:文本驱动跨端 UI 生成技术原理、架构与工程实现
人工智能·ui·架构