01 - 架构与存储引擎
定位:理解 MySQL 的 architecture —— 从客户端到存储的全链路分层,以及 InnoDB 为什么是默认存储引擎 面试高频度:⭐⭐⭐⭐⭐
一、板块在体系中的位置
┌────────────────────────────────────────────┐
│ 上层:SQL + 业务逻辑 │
└──────────────────┬─────────────────────────┘
↓
┌────────────────────────────────────────────┐
│ 01-架构与存储引擎 (本板块) │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ 架构总览 │ │ InnoDB │ │ 引擎对比 │ │
│ │ (分层) │ │ (核心) │ │ (抉择) │ │
│ └──────────┘ └──────────┘ └──────────┘ │
└──────────────────┬─────────────────────────┘
↓
┌────────────────────────────────────────────┐
│ 下层:索引 → 事务 → 锁 → 日志 │
│ 02 ──── 03 ──── 04 ──── 05 │
└────────────────────────────────────────────┘二、知识全景图
┌─────────────────────────────────────────────────────────┐
│ MySQL 架构全景 │
│ │
│ ┌──────┐ │
│ │客户端 │ Connectors: JDBC, ODBC, C 驱动... │
│ └──┬───┘ │
│ ↓ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ MySQL Server 层 │ │
│ │ ┌──────────────────────────────────────────────┐ │ │
│ │ │ 连接/线程管理 (Connection Pool) │ │ │
│ │ │ 认证、SSL、连接池 │ │ │
│ │ └──────────────────────────────────────────────┘ │ │
│ │ ┌──────────────────────────────────────────────┐ │ │
│ │ │ 查询缓存 (Query Cache) —— 8.0 已移除 │ │ │
│ │ └──────────────────────────────────────────────┘ │ │
│ │ ┌──────────────────────────────────────────────┐ │ │
│ │ │ SQL 接口 (Parser) → 词法/语法分析 │ │ │
│ │ │ 优化器 (Optimizer) → 选择执行计划 │ │ │
│ │ │ 执行器 (Executor) → 调用存储引擎 API │ │ │
│ │ └──────────────────────────────────────────────┘ │ │
│ └─────────────────────────────────────────────────────┘ │
│ ↓ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ 存储引擎层 (Pluggable) │ │
│ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌───────┐ │ │
│ │ │ InnoDB │ │ MyISAM │ │ Memory │ │ 其他 │ │ │
│ │ │ (默认) │ │ (已弃用) │ │ (临时) │ │ 扩展 │ │ │
│ │ └────┬────┘ └─────────┘ └─────────┘ └───────┘ │ │
│ └───────┼─────────────────────────────────────────────┘ │
│ ↓ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ 文件系统/磁盘 (数据文件 + 日志文件) │ │
│ │ /var/lib/mysql/: .ibd, .frm, .ibdata1, binlog* │ │
│ └─────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────┘三、子专题导航
| # | 主题 | 面试频率 | 核心内容 |
|---|---|---|---|
| **MySQL架构总览** | MySQL 架构总览 | ⭐⭐⭐⭐⭐ | 分层架构、各组件职责、SQL 执行全流程 |
| **InnoDB架构** | InnoDB 架构详解 | ⭐⭐⭐⭐⭐ | 内存/磁盘架构、缓冲池、后台线程 |
| **存储引擎对比** | 存储引擎对比 | ⭐⭐⭐⭐ | InnoDB vs MyISAM 设计取舍、选型决策 |
四、核心考点速记
考点1:一条 SQL 在 MySQL 中的执行过程
SQL 语句
→ 连接器 (认证 + 连接管理)
→ 查询缓存 (8.0 前,命中则直接返回)
→ 分析器 (词法/语法分析,生成语法树)
→ 优化器 (选择索引、决定 join 顺序)
→ 执行器 (调用存储引擎 API,返回结果)
→ 存储引擎 (从磁盘/内存读取数据)考点2:InnoDB 为什么是默认引擎?
| 特性 | InnoDB | MyISAM |
|---|---|---|
| 事务(ACID) | ✅ | ❌ |
| 行级锁 | ✅ | ❌(表级锁) |
| 外键 | ✅ | ❌ |
| 崩溃恢复 | ✅(Redo Log) | ❌ |
| MVCC | ✅ | ❌ |
| 全文索引 | ✅(5.6+) | ✅ |
核心答案:InnoDB 支持 事务 + 行级锁 + 崩溃恢复,满足了现代 OLTP 系统的核心需求。
考点3:MySQL 8.0 重要变化
- 取消 Query Cache(多核下成为瓶颈)
- 支持原子 DDL(不需要再手动回滚)
- 新增
EXPLAIN FORMAT=TREE、EXPLAIN ANALYZE - 默认字符集变为
utf8mb4
📚 相关文件
- 下游板块:**索引与查询优化**
- 下游板块:**SQL与事务**
- ← 返回 **设计文档**