跳至正文
来两杯美式
返回

MySQL 知识系列(一):整体架构与存储引擎

By 来两杯美式
发布于

整体架构

MySQL 整体分为四层:客户端、MySQL Server、存储引擎层、文件系统。

MySQL 整体架构(客户端→Server→存储引擎→文件系统)

各层职责:

SQL 语句执行过程

从客户端发送 SQL 到拿到结果,中间经历了哪些阶段?

MySQL 服务层内部组件(连接管理器/查询缓存/查询解析/查询优化器)

一条 SQL 走完 MySQL Server 内部组件的过程:

  1. 连接器:监听客户端请求,认证身份,维持连接
  2. 查询缓存:以 K-V 缓存 SELECT 结果。MySQL 8.0 已移除此模块——因为表数据每次更新都需要清空相关缓存,命中率极低,得不偿失
  3. 分析器:词法分析(识别关键字)+ 语法分析(检查 SQL 语法是否符合规则),最终产出解析树
  4. 优化器:决定是否使用索引、多表 join 的顺序等,生成最优执行计划
  5. 执行器:校验用户对表/数据是否有权限,以为单位调用存储引擎执行 SQL
  6. 存储引擎:将执行器指令落实为磁盘 I/O,返回结果

⚠️ 常见误区:很多人以为执行器直接读盘数据,其实执行器只负责”调度”——真正的数据读写都在存储引擎层。

存储引擎总览

MySQL 是”可插拔式存储引擎”架构,核心 Server 层存储引擎层解耦。下面是几个关键引擎的对比:

引擎锁粒度事务索引适用场景
MyISAM表级全文索引5.5 之前默认引擎,只读/空间类应用(GPS 数据)
InnoDB行级(+ 表级)聚簇 + 二级OLTP 通用场景,5.5+ 默认引擎
CSV数据交换中间表,可直接编辑文本
Archive仅自增 ID日志、数据采集,只支持 INSERT/SELECT
Memory表级HASH + BTree临时表、缓存,size 受 max_heap_table_size 限制(默认 16M)
Federated访问远程 MySQL 表,本地只保存表结构

MyISAM 关键特点

InnoDB 关键特点

InnoDB 如何实现事务 ACID

行级锁与隔离性的关系:事务 A 改了某行但未提交,事务 B 读取该行时不会阻塞——它通过 undo log 读到旧版本(MVCC 快照读)。这是 InnoDB 默认 RR 隔离级别下”读不阻塞写”的根本原因。


下一篇会深入到 InnoDB 最核心的部分:索引结构(B+ 树、聚簇/非聚簇)与查询原理


分享这篇文章:
通过邮件分享这篇文章✓ 链接已复制
所属专题
MySQL
第 1 / 9 篇
查看系列全部文章
  1. 01.MySQL 知识系列(一):整体架构与存储引擎
  2. 02.MySQL 知识系列(二):索引结构与查询原理
  3. 03.MySQL 知识系列(三):锁机制与并发控制
  4. 04.MySQL 知识系列(四):日志系统:redo log、undo log、binlog
  5. 05.MySQL 知识系列(五):隔离级别、Spring 事务与查询流程
  6. 06.MySQL 知识系列(六):SQL 注入、版本特性与容量评估
  7. 07.MySQL 知识系列(七):SQL 调优(一)—— EXPLAIN 执行计划
  8. 08.MySQL 知识系列(八):SQL 调优(二)—— 索引设计与调优工具
  9. 09.MySQL 知识系列(九):CASE 语句、乐观锁与悲观锁实战

上一篇
MySQL 知识系列(二):索引结构与查询原理
下一篇
Filter、Interceptor 与 Aspect:三个请求拦截层次详解