但是,在什么情况下MyISAM确实比InnoDB更好呢?
当您不需要那些高级特性,且存储速度比其他问题更重要时,MyISAM优于InnoDB。
使用MyISAM还允许在数据库引擎内部执行全文搜索,而无需在应用程序中将结果查询并搜索它们作为数组或其他形式。
如果您需要存储具有复杂交互和关系的数据,则InnoDB是一个合理的选择。如果您需要在短时间内保存或加载大量记录,则MyISAM是一个合理的选择。
我不建议使用MyISAM处理重要数据。它非常适合日志记录、评论字段或任何您不介意记录消失的情况。InnoDB适用于您关心数据,不需要快速搜索并且必须使用MySQL的情况。
值得一提的是,InnoDB支持行级锁定,而MyISAM仅支持表级锁定 - 这意味着对于许多常见情况,由于更多查询并行执行,InnoDB可能会显著加快速度。
最重要的是:除非您确实必须使用MyISAM,否则请使用InnoDB。或者,开发针对PostgreSQL,并获得两者的最佳效果。
MyISAM不支持事务(和其他提到的功能),因此它可以更快地工作。 MyISAM是在您不需要这些功能的情况下实现更高性能的一种方式。
MyISAM支持全文搜索,同时也支持MERGE表类型。当您拥有一个大表并且希望定期“交换”/归档其中的部分时,这将非常方便。想象一下您想要保留最近的季度和/或年度的日志或报告数据。当您主要进行插入操作且很少更新或删除时,MyISAM可以更好地处理这样的大量数据。
InnoDB性能会在无法将索引放入内存时迅速而明显地下降。如果您的主键不是数字(即自动增量),则可能需要重新考虑使用InnoDB。在InnoDB表上,主键会为每个索引复制。因此,如果您有一个大的主键和几个其他索引,那么您的InnoDB表将非常快速地变得非常大。
MySQL只为MyISAM实现了一些功能(例如本机全文索引),但是通常情况下,InnoDB对于大多数生产应用程序来说仍然更好。
此外:mySQL 中的全文搜索仅支持 myISAM 表。