Skip to content

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 为什么是默认引擎?

特性InnoDBMyISAM
事务(ACID)
行级锁❌(表级锁)
外键
崩溃恢复✅(Redo Log)
MVCC
全文索引✅(5.6+)

核心答案:InnoDB 支持 事务 + 行级锁 + 崩溃恢复,满足了现代 OLTP 系统的核心需求。

考点3:MySQL 8.0 重要变化

  • 取消 Query Cache(多核下成为瓶颈)
  • 支持原子 DDL(不需要再手动回滚)
  • 新增 EXPLAIN FORMAT=TREEEXPLAIN ANALYZE
  • 默认字符集变为 utf8mb4

📚 相关文件

  • 下游板块:**索引与查询优化**
  • 下游板块:**SQL与事务**
  • ← 返回 **设计文档**

Knowledge4J — Java 知识库