MyISAM:
选择密集型的表。MyISAM存储引擎在筛选大量数据时非常迅速,这是它最突出的优点。
插入密集型的表。MyISAM的并发插入特性允许同时选择和插入数据。例如:MyISAM存储引擎很适合管理邮件或Web服务器日志数据。
MyISAM 这种存储引擎不支持事务,不支持行级锁,只支持并发插入的表锁,主要用于高负载的select。
MyISAM也是使用B+tree索引但是和Innodb的在具体实现上有些不同。
InnoDB:
更新密集的表。InnoDB存储引擎特别适合处理多重并发的更新请求。如果执行大量的增删改操作,推荐使用InnoDB存储引擎,它在删除操作时是对行删除,不会重建表。
事务。InnoDB存储引擎是支持事务的标准MySQL存储引擎。
自动灾难恢复。与其它存储引擎不同,InnoDB表能够自动从灾难中恢复。InnoDB有支持事务及安全的日志文件,这个文件非常重要,InnoDB可以通过日志文件将数据库崩溃时已经完成但还没来得及将内存中已经修改但未完全写入磁盘的数据写入磁盘,也可以把已部分完成并写入磁盘的未完成事务回滚,保证数据一致性。如果错误删除日志文件会导致数据库崩溃且无法启动。
外键约束。MySQL支持外键的存储引擎只有InnoDB。
支持自动增加列AUTO_INCREMENT属性。
innodb存储引擎支持mvcc的行级锁。锁机制的改进——实现了行级锁,为承受高并发增加了竞争力
innodb存储引擎索引使用的是B+Tree与上面那个实现不同
COUNT(*)问题——InnoDB存储引擎会遍历表以计算数量,效率较低。