MySQL 的存储引擎有哪些?它们之间有什么区别?
MySQL 的存储引擎有哪些?它们之间有什么区别?
回答重点
MySQL 的主要存储引擎包括:
1)InnoDB(重点):
- 支持事务、行级锁和外键。
- 提供高并发性能,适用于高负载的 OLTP 应用。
- 数据以聚集索引的方式存储,提高检索效率。
2)MyISAM(重点):
- 不支持事务和外键,使用表级锁。
- 适合读取多、更新少的场景,如数据仓库。
- 具有较高的读性能和较快的表级锁定。
3)MEMORY:
- 数据存储在内存中,速度快,但数据在服务器重启后丢失。
- 适用于临时数据存储或快速缓存。
4)NDB (NDBCluster):
- 支持高可用性和数据分布,适合大规模分布式应用
- 提供行级锁和自动分区。
5)ARCHIVE:
- 用于存储大量历史数据,支持高效的插入和压缩。
- 不支持索引,适合日志数据存储。
| 特性 | MyISAM | Memory | InnoDB | Archive | NDB |
|---|---|---|---|---|---|
| B+树索引 | Yes | Yes | Yes | No | No |
| 备份/按时间点恢复 | Yes | Yes | Yes | Yes | Yes |
| 集群数据库支持 | No | No | No | No | Yes |
| 聚簇索引 | No | No | Yes | No | No |
| 压缩数据 | Yes | No | Yes | Yes | No |
| 数据缓存 | No | N/A | Yes | No | Yes |
| 加密数据 | Yes | Yes | Yes | Yes | Yes |
| 外键支持 | No | No | Yes | No | Yes |
| 全文检索 | Yes | No | Yes | No | No |
| 地理空间数据类型支持 | Yes | No | Yes | Yes | Yes |
| 地理空间索引支持 | Yes | No | Yes | No | No |
| 哈希索引 | No | Yes | No | No | Yes |
| 索引缓存 | Yes | N/A | Yes | No | Yes |
| 锁的粒度 | Table | Table | Row | Row | Row |
| MVCC | No | No | Yes | No | No |
| 复制支持 | Yes | Limited | Yes | Yes | Yes |
| 存储限制 | 256TB | RAM | 64TB | None | 384EB |
| T-tree 索引 | No | No | No | No | Yes |
| 事务 | No | No | Yes | No | Yes |
实际上我们仅需重点了解 InnoDB 和 MyISAM 即可,其它仅需有点印象即可。
扩展知识
MySQL 8.4 版本一共提供了 10 个引擎
有兴趣的小伙伴可以点击这里 ,访问官网查看其他引擎详细介绍。
扩展 MySQL 的 InnoDB 存储引擎和 MyISAM 存储引擎有何不同?
Comments