从MyISAM切换到InnoDB会提高评论表的性能吗?

时间:2011-01-10 作者:anu

我建立的一个网站在短时间内获得了大量评论,因此可能在5到10分钟内留下100条评论。

这似乎会对数据库造成相当大的负载,尤其是与最近的评论小部件结合使用时——我看到服务器负载迅速上升到40多个,使用mtop我可以看到大量阻塞的查询。

因此,我使用MyISAM作为存储引擎,它锁定整个表以供写入。切换到(我相信)使用行锁定的InnoDB会改善情况吗?看看MySQL文档,似乎完全可以在同一个数据库中使用这两个引擎。

所以,问题是:

对于我所描述的,切换到InnoDB似乎是一个合理的解决方案吗?是否有任何WP特定的经验/基准?

1 个回复
最合适的回答,由SO网友:Denis de Bernardy 整理而成

MyISAM会锁定整个页面进行写入,并且不符合ACID,而InnoDB会像您指出的那样锁定行,并且符合ACID。

这样,当您有大量写操作时,它会更加坚固,例如更快,更不容易发生数据损坏。

根据我的经验,它的读取速度较慢,但它可以更好地处理并发连接。

它也会把目录弄得乱七八糟。(有一天我有一个很大的DB,我从MyISAM切换到InnoDB,目录膨胀了2GB,或者说我的DB的大小,原因我一直不明白,尽管我怀疑它与索引创建等临时数据有关,这些数据没有正确刷新。)

无论如何对于您当前的负载,InnoDB是一个选项,memcached和对象缓存也是一个选项。

结束

相关推荐

Get_Comments()中的评论链接?

我必须更新一些草率的代码,这些代码显示了整个博客中最近的5条评论。代码正在使用WordPress\'get_comments() 方法,它似乎不返回注释id或注释链接(通过哈希标记直接链接到帖子中的注释)。如何收集有关特定评论的更多信息,并使它们链接到父页面中的实际评论?<h3>Recent Comments</h3> <ul> <?php $comments = get_comments(array(\'status\'=>\'approv