mysql 的存储引擎(storage engine)决定了数据如何存储、索引如何组织、事务是否支持、锁的粒度、崩溃恢复能力等,是数据库性能与可靠性的核心。
一、常见存储引擎对比(重点)
1. innodb(默认 / 首选)
特性
- 支持事务(acid)
- 行级锁(并发能力强)
- 支持外键
- 崩溃恢复(redo / undo log)
- 聚簇索引(数据即索引)
适用场景
- 业务系统(erp / 电商 / 金融)
- 高并发写入
- 对一致性、可靠性要求高
关键词(面试高频)
- mvcc
- redo log / undo log
- 行锁 vs 间隙锁
- buffer pool
2. myisam(已逐渐淘汰)
特性
- 不支持事务
- 表级锁
- 读性能好
- 表损坏风险高
- 数据与索引分离(myd / myi)
适用场景
- 只读或读多写少
- 历史系统、统计类查询
mysql 8.x 中已不推荐使用
3. memory(内存表)

特性
- 数据存放在内存
- 默认 hash 索引(也支持 b-tree)
- 重启即丢数据
- 表级锁
适用场景
- 临时表
- 高速缓存表
- 中间计算结果
4. archive(归档引擎)
特性
- 高压缩比
- 只支持 insert / select
- 不支持索引(除自增)
适用场景
- 日志归档
- 审计数据
- 历史冷数据
5. csv
特性
- 数据以 csv 文件形式存储
- 无索引、无事务
适用场景
- 与外部系统做数据交换
- etl 中转
二、核心差异对比表
| 特性 | innodb | myisam | memory | archive |
|---|---|---|---|---|
| 事务 | ✅ | ❌ | ❌ | ❌ |
| 锁粒度 | 行锁 | 表锁 | 表锁 | 行锁 |
| 崩溃恢复 | ✅ | ❌ | ❌ | ❌ |
| 外键 | ✅ | ❌ | ❌ | ❌ |
| 索引结构 | b+tree(聚簇) | b+tree | hash / b+tree | 无 |
| 默认引擎 | ✅ | ❌ | ❌ | ❌ |
三、如何查看和设置存储引擎
查看当前支持的引擎
show engines;
查看表的存储引擎
show table status where name = 'user';
建表时指定引擎
create table user ( id bigint primary key, name varchar(50) ) engine=innodb;
四、选型建议(实战经验)
- 99% 的业务表:innodb
- 缓存 / 临时数据:memory
- 日志 / 历史数据:archive
- 不要在新系统使用 myisam
五、面试一句话总结
innodb 是 mysql 的事实标准存储引擎,核心优势是事务、行锁、mvcc 和高可靠性;其他引擎只在特定场景使用。
到此这篇关于mysql 存储引擎概览的文章就介绍到这了,更多相关mysql存储引擎内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论