Answers:
答案是您应该始终进行测量,最好尽可能使用自己的数据和工作量。
由于不同应用程序之间的数据访问模式差异很大,因此很难说,而且不可能为所有工作负载确定“最佳”存储引擎。
但是,上周参加MySQLConf / Percona Performance Conf的MySQL领域取得了令人鼓舞的发展。
一些替代存储引擎:
此外,Percona,Google等提供了有助于大大提高InnoDB性能的补丁程序。就个人而言,我运行OurDelta构建。它对我来说效果很好,我鼓励您查看OurDelta和Percona版本。
对于不同的MySQL数据库引擎,有很多基准测试。在Percona MySQL Performance Blog上有一个不错的比较MyISAM,InnoDB和Falcon的工具,请参见此处。
在上述两个引擎(MyISAM和InnoDB)之间要考虑的另一件事是它们的锁定方法。MyISAM执行表锁定,而InnoDB执行行锁定。不仅要考虑性能指标,还要考虑很多因素。
出于操作原因,即使您的应用程序并非绝对需要这些功能,您也会发现它们非常有用:
因此,尽管有外键约束,您仍然可能仍要使用InnoDB。
当然,这是ServerFault,而不是Stack Overflow,因此正确的答案是:
我的托管服务提供商建议我们完全摆脱MyISAM,并改用InnoDB,除非不可能。
在我们的案例中,我们的数据严重损坏,每天从几次显示到几次显示,总是需要REPAIR TABLE和相关命令,这在大型表上花费了很长时间。
一旦我们将(或:)转换为InnoDB,问题就立即消失了。我们的缺点/缺点:
但请注意:这都是特定于我们的环境等,因此通常可能不适用。