MySQL主流存储引擎中,InnoDB为默认推荐,支持ACID事务、行级锁、外键及MVCC;MyISAM适用于只读场景,表级锁且无事务;MEMORY引擎数据驻内存,速度快但易失;Archive、Federated、NDB等则面向归档、分布式或高可用等专用场景。

MySQL 支持多种存储引擎,不同引擎在事务支持、锁机制、性能特征和适用场景上差异明显。选择合适的引擎直接影响数据一致性、并发能力与查询效率。
最常用:InnoDB(默认且推荐)
InnoDB 是 MySQL 5.5 起的默认存储引擎,也是目前生产环境的主流选择。
- 完全支持 ACID 事务,具备提交、回滚和崩溃自动恢复能力
- 使用行级锁,高并发写入时冲突更少,适合更新密集型业务(如订单、账户变动)
- 唯一支持外键约束的引擎,可强制维护表间引用完整性
- 数据与主键索引组织在一起(聚簇索引),主键查询极快;二级索引包含主键值,回表开销可控
- 支持 MVCC(多版本并发控制),实现非阻塞读
轻量读取型:MyISAM
MyISAM 曾是 MySQL 5.1 前的默认引擎,现已不推荐用于新业务,但在特定只读或日志类场景仍有价值。
- 不支持事务、外键和行锁,所有写操作会锁整张表
- 查询(尤其是全表扫描和范围扫描)通常比 InnoDB 快,因结构简单、索引直接指向数据偏移量
- 数据文件(.MYD)、索引文件(.MYI)和表定义(.frm)物理分离,跨平台迁移方便
- 适合日志归档、报表统计等以 SELECT/INSERT 为主、无强一致性要求的场景
内存高速缓存:MEMORY(原 Heap)
MEMORY 引擎将全部数据保存在内存中,适合临时计算或高频读写但可容忍丢失的场景。
- 所有数据常驻内存,读写速度极快,但服务重启后数据清空
- 仅支持哈希(HASH)或 B-Tree 索引,默认 HASH,等值查询快,范围查询不支持
- 不支持 TEXT/BLOB 类型,VARCHAR 会被转为固定长度 CHAR,可能浪费空间
- 常用于临时表、中间结果集、缓存维度表(需配合应用层持久化兜底)
其他实用引擎
除上述三者外,还有几类专用引擎值得关注:
- Archive:专为归档设计,仅支持 INSERT 和 SELECT,数据自动压缩,适合存储历史日志、审计记录等冷数据
- Federated:不存本地数据,通过网络代理访问远程 MySQL 表,适合分布式联合查询(注意网络延迟与权限配置)
- NDB(NDBCLUSTER):MySQL Cluster 的底层引擎,全内存+同步复制,适用于超高可用、低延迟要求的电信级系统
- Maria:作为 MyISAM 的继任者开发,目标是兼顾性能与事务能力,但截至 2025 年尚未成为主流,实际部署较少










