文章目录
- 1. InnoDB(默认引擎)
- 2. MyISAM
- 3. Memory
- 4. 其他引擎
- 核心对比总结
MySQL 存储引擎是数据库底层软件组织,不同的存储引擎提供不同的存储机制、索引技巧、锁级别和事务功能。以下是主要存储引擎的区别:
1. InnoDB(默认引擎)
- 事务支持:完整支持 ACID 事务(原子性、一致性、隔离性、持久性)
- 锁机制:行级锁,支持 MVCC(多版本并发控制),适合高并发场景
- 索引结构:聚簇索引(主键索引与数据存储在一起)
- 其他特性:支持外键约束、崩溃恢复(通过 redo log 实现)
- 适用场景:需要事务的金融/电商系统、频繁读写操作
2. MyISAM
- 事务支持:不支持事务和外键
- 锁机制:表级锁,读写操作会相互阻塞
- 索引结构:非聚簇索引(数据与索引分开存储),查询性能较高
- 其他特性:支持全文索引,表结构分为静态型、动态型和压缩型
- 适用场景:读多写少的日志系统、数据仓库
3. Memory
- 数据存储:数据仅保存在内存中,重启后丢失
- 锁机制:表级锁,默认使用哈希索引
- 适用场景:临时数据缓存或需要极高速读写的场景
4. 其他引擎
- Archive:高压缩比,仅支持 INSERT/SELECT,适合历史归档
- CSV:以 CSV 文件存储数据,不支持索引,用于数据导入导出
- NDB:分布式集群引擎,支持高可用性
核心对比总结
特性 | InnoDB | MyISAM | Memory |
---|---|---|---|
事务 | 支持 | 不支持 | 不支持 |
锁粒度 | 行级锁 | 表级锁 | 表级锁 |
外键 | 支持 | 不支持 | 不支持 |
崩溃恢复 | 支持(redo log) | 不支持 | 数据丢失 |
适用场景 | 高并发事务 | 读密集型 | 临时缓存 |
注:从 MySQL 5.5 开始,InnoDB 成为默认引擎,推荐大多数业务场景使用。