如何分析WordPress安装的慢查询日志?

时间:2012-04-10 00:33:43

标签: mysql performance wordpress wordpress-plugin

我在WordPress安装时遇到了一些性能问题。我已经运行了多个慢速查询测试,虽然我确实看到它们之间有一些一致性,但我仍然无法查明问题。以下是我多次看到的一些查询:

SET timestamp=1333980631;
SELECT SQL_CALC_FOUND_ROWS wp_posts.* FROM wp_posts INNER JOIN wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id) WHERE 1=1 AND ( wp_term_relationships.term_taxonomy_id IN (1442,4054) ) AND wp_posts.post_type = 'post' AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'private') GROUP BY wp_posts.ID ORDER BY wp_posts.post_date DESC LIMIT 0, 2;

### 1 Query 
### Total time: 3.015405, Average time: 3.015405
### Taking 3.015405 seconds to complete
### Rows analyzed 60
SET timestamp=XXX;
SELECT SQL_CALC_FOUND_ROWS wp_posts.* FROM wp_posts INNER JOIN wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id) WHERE XXX=XXX AND ( wp_term_relationships.term_taxonomy_id IN (XXX) ) AND wp_posts.post_type = 'XXX' AND (wp_posts.post_status = 'XXX') GROUP BY wp_posts.ID ORDER BY wp_posts.post_date DESC LIMIT XXX, XXX;

SET timestamp=1334004964;
SELECT SQL_CALC_FOUND_ROWS wp_posts.* FROM wp_posts INNER JOIN wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id) WHERE 1=1 AND ( wp_term_relationships.term_taxonomy_id IN (125) ) AND wp_posts.post_type = 'post' AND (wp_posts.post_status = 'publish') GROUP BY wp_posts.ID ORDER BY wp_posts.post_date DESC LIMIT 0, 8;

### 1 Query 
### Total time: 1.593301, Average time: 1.593301
### Taking 1.593301 seconds to complete
### Rows analyzed 19755
SET timestamp=XXX;
SELECT /*!XXX SQL_NO_CACHE */ * FROM `wp_posts`;

SET timestamp=1333978522;
SELECT /*!40001 SQL_NO_CACHE */ * FROM `wp_posts`;

我注意到wp_term_taxonomy似乎与wp_posts以及其他一些人一起出现。我的问题是,我如何缩小这些结果并找到问题?

1 个答案:

答案 0 :(得分:3)

你可以:

  1. 使用plugin performance profiler对问题插件进行基准测试和精确定位
  2. 使用new relic查找问题
  3. 使用Debug Objects转储查询等数据。
  4. 您展示的查询看起来像通常的wp-admin查询,或者用于定义要在列表中显示的页数的寻呼机查询。

    你也可以尝试最简单的方法 - 逐个禁用插件,以确定哪一个正在生成有问题的查询。