MySQL体系结构框架
·
一、MySQL整体框架
MySQL 整体架构:三层 + 一层存储,清晰明了 MySQL 最精髓的设计就是:分层架构 + 插件式存储引擎
MySQL 的核心设计是 分层、插件式 的,这意味着各组件之间解耦良好,尤其是存储引擎层,可以像更换汽车发动机一样被替换。
整体分为4大部分:
- 连接层
- 服务层(Server 层)
- 存储引擎层
- 物理存储层(文件系统)

第一层:连接层
负责接收客户端请求、身份认证、安全控制。
- 默认端口:3306
- 模型:单进程多线程(mysqld)
- 每一个连接,对应一个线程(或线程池)
- 认证:用户名、密码、host权限校验
- 安全:支持 SSL/TLS 加密
💡提示这一层只管 “谁能连、怎么连”,不处理 SQL。
第二层:服务层(MySQL 的大脑)
所有存储引擎共用这一层,也是 SQL 真正执行的地方。
① SQL Interface(SQL 接口)
- 接收 SQL:SELECT/INSERT/UPDATE/DELETE/CALL返回结果给客户端。
② Parser(解析器)
- 词法分析:拆关键词、表名、字段、条件
- 语法分析:检查 SQL 语法是否合法
- 生成:解析树
③ Optimizer(查询优化器)
MySQL 最复杂组件之一,基于 CBO 成本模型。 决定:
- 用不用索引、用哪个索引
- 多表 JOIN 顺序
- 子查询如何优化
- 选择成本最低的执行计划
④ Caches & Buffers(缓存)
- 查询缓存:MySQL 5.7 弃用,8.0 直接删除
- 原因:表一更新,缓存全失效,高并发下反而拖慢性能
- 保留:表缓存、权限缓存等
第三层:存储引擎层
MySQL 最灵活的一层:引擎可插拔替换。
① InnoDB(默认,生产必选)
- 支持事务 ACID
- 行级锁 + MVCC
- 外键、崩溃恢复
- 聚簇索引(主键查询极快)
- WAL + Redo Log 保证数据安全
② MyISAM(老引擎,逐步淘汰) - 不支持事务
- 表级锁,并发差
- 崩溃恢复弱
- 适合:读多写少、非核心业务
③ Memory(内存引擎) - 数据全放内存,速度极快
- 重启丢失
- 适合:临时表、缓存
④ Archive / CSV / Blackhole - 用于归档、数据交换、主从中转等特殊场景。
- 服务层 ↔ 存储引擎:通过 Handler API
交互。
第四层:物理存储层(磁盘文件)
所有数据最终落在文件系统里。
重要日志
- binlog:Server 层日志,用于主从、恢复
- redo log:InnoDB 崩溃恢复
- undo log:回滚 +
MVCC
重要数据文件 - InnoDB:ibdata1、.ibd
- MyISAM:.frm、.MYD、.MYI
二、InnoDB 物理存储结构

1、InnoDB 表空间
① 系统表空间ibdata1
- 数据字典
- 双写缓冲区
- 变更缓冲区
- undo 等系统数据
② 独立表空间 .ibd(默认开启)
- 一张表一个 .ibd
- 存数据 + 索引
- 方便备份、迁移、空间回收
③ 通用表空间
- 多表共用,可自定义路径。
④ 临时表空间
- ibtmp1临时表使用,重启重建。
2、InnoDB 核心日志
① Redo Log(崩溃恢复)
- ib_logfile0 / ib_logfile1
- 循环写、顺序 I/O 极快
- WAL 机制:先写日志,再刷数据页
- 数据库崩溃,重启自动恢复
② Undo Log(回滚 + MVCC)
- 记录数据旧版本
- 事务回滚
- 实现无锁读
3、InnoDB 内部组织结构
.ibd文件内部是四级结构:
== 段 → 区 → 页 → 行 ==
- 段:索引叶子节点、非叶子节点
- 区:1MB,连续 64 个页
- 页:默认 16KB,InnoDB 最小 I/O 单元
- 行:真实记录,支持多种行格式
行格式(MySQL 5.7+ 默认 DYNAMIC):
- COMPACT
- DYNAMIC
- COMPRESSED
- REDUNDANT
三、MySQL存储引擎详细对比表
存储引擎对比表
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)