| 特点 |
InnoDB |
MyISAM |
MEMORY |
MERGE |
NDB |
| 存储限制 |
64TB |
有 |
有 |
没有 |
有 |
| 事务安全 |
==支持== |
|
|
|
|
| 锁机制 |
==行锁(适合高并发)== |
==表锁== |
表锁 |
表锁 |
行锁 |
| B树索引 |
支持 |
支持 |
支持 |
支持 |
支持 |
| 哈希索引 |
|
|
支持 |
|
|
| 全文索引 |
支持(5.6版本之后) |
支持 |
|
|
|
| 集群索引 |
支持 |
|
|
|
|
| 数据索引 |
支持 |
|
支持 |
|
支持 |
| 索引缓存 |
支持 |
支持 |
支持 |
支持 |
支持 |
| 数据可压缩 |
|
支持 |
|
|
|
| 空间使用 |
高 |
低 |
N/A |
低 |
低 |
| 内存使用 |
高 |
低 |
中等 |
低 |
高 |
| 批量插入速度 |
低 |
高 |
高 |
高 |
高 |
| 支持外键 |
==支持== |
|
|
|
|
以下是几种常用的存储引擎的使用环境。
- InnoDB : 是Mysql的默认存储引擎,用于事务处理应用程序,支持外键。如果应用对事务的完整性有比较高的要求,在并发条件下要求数据的一致性,数据操作除了插入和查询以外,还包含更新、删除操作,那么InnoDB存储引擎是比较合适的选择。InnoDB存储引擎除了有效的降低由于删除和更新导致的锁定, 还可以确保事务的完整提交和回滚,对于类似于计费系统或者财务系统等对数据准确性要求比较高的系统,InnoDB是最合适的选择。
- MyISAM : 如果应用是以读操作和插入操作为主,只有很少的更新和删除操作,并且对事务的完整性、并发性要求不是很高,那么选择这个存储引擎是非常合适的。
- MEMORY:将所有数据保存在RAM中,在需要快速定位记录和其他类似数据环境下,可以提供极快的访问。MEMORY的缺陷就是对表的大小有限制,太大的表无法缓存在内存中,其次是要确保表的数据可以恢复,数据库异常终止后表中的数据是可以恢复的。MEMORY表通常用于更新不太频繁的小表,用以快速得到访问结果。