InnoDB | MyISAM |
⽀持事务处理 | 不⽀持事务,回滚将造成不完全回滚,不具有原⼦性 |
⽀持外键 | 不⽀持外键 |
⽀持⾏锁 | ⽀持全⽂搜索 |
不⽀持FULLTEXT类型的索引(在Mysql5.6已引⼊) | |
不保存表的具体⾏数,扫描表来计算有多少⾏ | 保存表的具体⾏数,不带where时,直接返回保存的⾏数 |
对于AUTO_INCREMENT类型的字段,必须包含只有该字段的索引 | |
DELETE 表时,是⼀⾏⼀⾏的删除 | DELETE 表时,先drop表,然后重建表 |
InnoDB 把数据和索引存放在表空间⾥⾯ | MyISAM 表被存放在三个⽂件 。frm ⽂件存放表格定义。 数据⽂件是MYD (MYData) 。 索引⽂件是MYI(MYIndex)引伸 。 |
跨平台可直接拷⻉使⽤ | 跨平台很难直接拷⻉ |
表格很难被压缩 | 表格可以被压缩 |
AUTO_INCREMENT类型字段可以和其他字段⼀起建⽴联合索引 |
如何选择:
- 因为MyISAM相对简单所以在效率上要优于InnoDB,如果系统读多,写少,对原⼦性要求低,那么MyISAM最好的选择,且MyISAM恢复速度快,可直接⽤备份覆盖恢复。
- 如果系统读少,写多的时候,尤其是并发写⼊⾼的时候,InnoDB就是⾸选了。
两种类型都有⾃⼰优缺点,选择那个完全要看⾃⼰的实际情况。