MySQL 默认存储引擎为 InnoDB,支持 ACID 事务、行级锁、外键及 MVCC;MyISAM 适用于读多写少场景,仅支持表锁和全文索引;MEMORY 引擎纯内存存储,重启丢失;ARCHIVE、CSV、FEDERATED、BLACKHOLE 用于归档、交换、远程访问或日志中继等特定用途。

MySQL 支持多种存储引擎,每种针对不同使用场景设计。当前主流版本(MySQL 5.5 及以后)默认使用 InnoDB,但你仍可按需为单个表指定其他引擎。
InnoDB:事务型应用的默认选择
它是 MySQL 的默认引擎,适用于绝大多数业务场景,尤其强调数据一致性与高并发写入。
- 支持完整的 ACID 事务、崩溃自动恢复(通过 redo log)、行级锁和外键约束
- 使用聚簇索引组织数据,主键即物理存储顺序;二级索引中包含主键值,因此主键不宜过大
- 支持 MVCC(多版本并发控制),在 REPEATABLE-READ 隔离级别下可避免幻读
- 适合电商订单、用户账户、金融 类等强一致性要求的系统
MyISAM:读多写少的轻量场景
虽已非默认,但在某些只读或低并发分析类场景仍有价值。
- 不支持事务、外键和行锁,仅支持表级锁,高并发写入时易阻塞
- 支持全文索引(FULLTEXT),适合简单 搜索引擎 或日志归档查询
- 数据文件(.MYD)与索引文件(.MYI)分离,可单独优化存放路径
- 适合报表缓存表、历史统计快照、静态配置表等读远大于写的场景
MEMORY(Heap):纯内存临时数据
所有数据驻留在内存中,速度极快,但服务重启即丢失。
- 不支持事务,仅支持哈希索引(默认)或 B-Tree 索引(需显式声明)
- 适合中间计算结果、会话缓存、临时 JOIN 表或快速去重临时表
- 注意内存限制:表大小受 max_heap_table_size 参数控制,超限会报错
ARCHIVE 和其他辅助引擎
这些引擎面向特定目的,不用于主业务表。
- ARCHIVE:高压缩比、仅支持 INSERT/SELECT,无索引,适合长期归档日志、审计记录
- CSV:以文本 CSV 格式存数据,便于外部程序直接读取,但无事务、无索引、性能差
- FEDERATED:不存数据,只代理访问远程 MySQL 表,依赖网络,不支持事务
- BLACKHOLE:写入即丢弃,常用于复制拓扑中的“日志中继”或压力测试
查看当前支持的引擎可用 SHOW ENGINES;,查默认引擎用 SELECT @@default_storage_engine;。建表时加 ENGINE=InnoDB 显式指定,已有表可通过 ALTER TABLE t ENGINE=MyISAM; 修改。






























