WordPress的数据库慢-我应该切换到InnoDB吗?


12

我有一个WordPress网站,帖子数量超过1万,每当我添加和编辑帖子时,事情开始变得非常缓慢。页面对用户以及帖子的管理列表的加载速度都非常快,但是这是在发生写入或更新时,服务器将使用100%CPU并花费很长时间(有时比PHP的60秒超时时间长)。

我认为这很可能与MyISAM的表级锁定有关,并且正在考虑将其切换到InnoDB。这样做的含义是什么?

一些统计:

select  - per hour ~22k
update  - per hour ~7.6k
set option  - per hour ~7k

我知道我可以进行很多其他优化,但是我觉得这可能会产生最大的影响。

谢谢

编辑:我发现导致速度缓慢的主要问题之一是每次都重新生成“关联性”的是YARPP(还有另一个相关文章插件),这似乎是由于我们拥有2k +标签。我关闭了“考虑标签”选项,它的速度大大加快了。

此外,其他可重新生成内容的插件也可能导致此类问题,例如某些XML网站地图插件。

因此,尽管我仍然很想听到InnoDB与MyISAM for Wordpress的良好回答,但我的当务之急得到了解决!

Answers:


11

我确实会切换到InnoDB。表锁定/行锁定早已被许多人讨论。我总是会选择InnoDB。但是,选择InnoDB ... CACHING还有另一个深刻的原因

虽然大多数人吹嘘MyISAM的读取速度更快,但大多数人却忘记了MyISAM的许多缓存(称为密钥缓存(由key_buffer_size设置))仅缓存.MYI文件中的索引页。它从不缓存数据页。在32位系统中,它的官方最大容量为4GB。对于64位,最大最大为8GB。

InnoDB缓冲池缓存数据和索引页。根据您拥有的服务器,您可以在RAM中最多缓存整个数据集。您可以为InnoDB调整最多80%的RAM,为DB Conenctions调整10%的空间,为OS保留10%的空间。即使对于不同的操作系统也是如此

我已经为Drupal客户推荐了这些东西,并取得了巨大的成功。它也适用于Wordpress。我已经为使用WordPress的客户端提供了数据库支持。同样的改进。

您始终可以更有效地为InnoDB配置内存,从而可以配置更多MyISAM。总有一种方法可以满足您的性能需求。随着数据的增长,最终将成为一种需求


6

InnoDB可能对您没有帮助-页面/行级别锁定有助于减轻争用,但是这并不是您的问题。

在一般博客场景中,有很多东西表明MyISAM比InnoDB慢(读多于写)。

进行切换之前,至少应执行以下操作

  • 运行mysqltuner,它将为您提供一些配置建议(虽然它不是万无一失的,但并非所有人都知道)
  • 打开缓慢的查询日志记录,将其放置一天左右,然后开始在日志中进行筛选,并解释查询以查看发生的情况

从个人经验来看,我发现在wp_comments的未索引字段中添加索引在我的特定情况下有很大帮助(突发性评论期间,可能有10个左右的人试图同时发表评论),并且有可能发现哪些查询运行缓慢,为什么会导致您对问题有更好的了解以及真正的解决方案!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.