Wp_Term_Relationship查询速度慢

时间:2014-01-10 作者:rinogo

我正在运行一个大的WP实例(目前有28000多个自定义类型的帖子),并且一直在经历一些奇怪的减速。在分析MySQL慢速查询日志时,问题之一是:

SELECT COUNT(*) FROM wp_term_relationships, wp_posts 
WHERE 
    wp_posts.ID = wp_term_relationships.object_id 
    AND post_status = \'publish\' 
    AND post_type IN (\'s5_video\', \'s5_post\', \'s5_one_liner\', \'s5_image\') 
    AND term_taxonomy_id = 1498
(s5\\u视频、s5\\u post、s5\\u one\\u liner和s5\\u image是我们的自定义类型)

对查询进行解释会产生以下结果:

enter image description here

现在,分析的23000行数量很多,但并不可怕,尤其是对于运行频率不太高的查询。事实上,在我的手动测试中,大多数情况下,查询只需要50ms左右的时间即可执行(可能是因为它仍在MySQL的查询缓存中)。然而,有时,查询需要12-16秒才能执行。

我想我有两个问题:

我们的中端VPS有足够的能力来处理这种类型的查询(8个CPU,4GB RAM)。SQL解释结果表明,MySQL实际上是在使用键生成结果。考虑到服务器的容量以及密钥的使用,12-16秒来分析24k行不是有点极端吗?(这大约是每秒1500行。。恶心!)为什么会这样?其他任何大型WP实例上是否发生过这种情况?

有什么建议吗?通常,在这种情况下,我会添加索引以加快速度,但MySQL已经使用了正确的键。据我所知,这个查询内置于Wordpress核心(不是我们自定义代码的一部分),而且非常简单,我想不出如何进一步优化它?

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

准备好接受一个不满意的答案。。。

After several days of testing, the conclusion that I\'ve come to is that, put simply, this isn\'t Wordpress\' "fault". 我认为服务器上的另一个相关问题是给系统带来了过度的压力。这只是一个较慢的查询,由于服务器处于紧张状态,它很快上升到我们的较慢查询日志的顶部,时间在12-16秒之间。

这并不意味着我对23,608 (VERY BAD, VERY SLOW). 然而,这确实意味着for others visiting this question, the resolution to your specific problem may be to examine your system as a whole to determine why this (or another) query is performing so poorly.

快乐的编码!

结束

相关推荐

/var/run/mysqld/mysqld.sock

我正在使用Wordpress v.3.4.2,今天我尝试使用所有可能的方法更新到v.3.7.1,但在所有这些方法中,我都遇到了以下错误“无法建立数据库连接”,因为我在wp配置中使用了下面的配置。当前版本(3.4.2)的php为什么不能在新版本(3.7.1)中工作?谁能帮帮我吗?请参阅wp配置。php数据库信息:define(\'DB_NAME\', \'wp_blog\'); define(\'DB_USER\', \'user\'); define(\'DB_PASSWORD\', \'