MySQL存储引擎是表级核心模块,负责数据存取、锁机制与安全,支持InnoDB(默认,事务/行锁)、MyISAM(表锁/全文索引)、MEMORY(内存/易失)、Archive(归档/压缩)等,需按业务需求选择。

数据库引擎,更准确地说是存储引擎,是 MySQL 中真正负责数据“怎么存、怎么取、怎么改、怎么锁、怎么保证安全”的底层模块。它不是数据库的外围工具,而是直接和磁盘文件(或内存)打交道的核心子系统。
存储引擎是表级的,不是库级的
MySQL 允许你为每一张表单独指定存储引擎。比如:一个库里的用户表用 InnoDB(要事务),日志表用 MyISAM(只读查询多),临时汇总表用 MEMORY(纯内存、快但重启丢数据)。这种灵活性是 MySQL 区别于 Oracle、SQL Server 等单引擎数据库的关键优势。
常见存储引擎的核心差异
不同引擎在关键能力上差别明显,选错会影响功能和性能:
- InnoDB:MySQL 5.5 之后默认引擎。支持事务(ACID)、行级锁、外键、崩溃恢复。适合高并发、读写混合、要求数据一致性的业务场景。
- MyISAM:不支持事务和行锁,只有表级锁;但对纯读操作(如报表、归档查询)有更高吞吐。自带全文索引(5.6+),物理上分 .frm(结构)、.MYD(数据)、.MYI(索引)三个文件。
- MEMORY:所有数据驻留内存,速度极快,但服务重启即清空,且不支持 BLOB/TEXT 类型。适合缓存表、中间计算结果等临时性需求。
- Archive:专为归档设计,只支持 INSERT 和 SELECT,自动压缩,节省空间。常用于历史日志、审计记录等冷数据存储。
怎么查看和切换存储引擎
你可以随时检查和调整,无需重建整个数据库:
- 查当前支持哪些引擎:
SHOW ENGINES;(Support 列为 DEFAULT 表示当前默认) - 查默认引擎:
SELECT @@default_storage_engine; - 建表时指定:
CREATE TABLE t1 (...) ENGINE = MyISAM; - 修改已有表:
ALTER TABLE t1 ENGINE = InnoDB; - 全局修改默认值:在 my.cnf 中配置
default-storage-engine=InnoDB,重启生效。
为什么引擎选择不能“一招鲜”
因为不同业务诉求冲突明显:










