1、下面的图表列举了几种常用存储引擎之间的特征和区别。
特点 | Myisam(5.5.5之前默认) | BDB | Memory | InnoDB(5.5.5之后默认) | Archive |
---|---|---|---|---|---|
存储限制 | 没有 | 没有 | 有 | 64TB | 没有 |
事务安全 | 支持 | 支持 | |||
锁机制 | 表锁 | 页锁 | 表锁 | 行锁 | 行锁 |
B树索引 | 支持 | 支持 | 支持 | 支持 | |
哈希索引 | 支持 | 支持 | |||
全文索引 | 支持 | ||||
集群索引 | 支持 | ||||
数据缓存 | 支持 | 支持 | |||
索引缓存 | 支持 | 支持 | 支持 | ||
数据可压缩 | 支持 | 支持 | |||
空间使用 | 低 | 低 | N/A | 高 | 非常低 |
内存使用 | 低 | 低 | 中等 | 高 | 低 |
批量插入的速度 | 高 | 高 | 高 | 低 | 非常高 |
支持外键 | 支持 |
2、最重要也最常用的两种存储引擎:
Myisam:Myisam在5.5.5之前版本中是mysql默认的存储引擎,当创建一个表的时候,如果未指定存储引擎的话,默认是使用Myisam引擎。Myisam在磁盘中会存储为三个文件(假设表名是xxx):
①xxx.frm(表定义) ②xxx.MYD(数据) ③xxx.MYI(索引)
表数据文件和表索引文件可以分别放置在不同的目录中,这样可以平均分布IO,所以它的查询速度更快。
InnoDB:InnoDB在5.5.5之后的版本中是mysql默认的存储引擎,InnoDB支持事务安全,有提交、回滚等相关事务功能。InnoDB相比于Myisam读写效率会差一些,会占用更多的磁盘空间用于保存数据和索引。
可以根据具体的使用场景来选择使用哪种数据引擎,可以组合使用。