Wordpress一直在执行这个SQL查询?

时间:2015-01-04 05:53:53

标签: mysql sql wordpress

我的Wordpress网站没有很多流量,但我通过“SHOW PROCESS;”继续看到这个SQL查询在MySQL:

SELECT SQL_CALC_FOUND_ROWS  wp_posts.ID
FROM wp_posts
WHERE 1=1 AND wp_posts.post_type = 'post' AND (wp_posts.post_status = 'publish')
ORDER BY wp_posts.post_date DESC LIMIT 0, 10

我已关闭所有插件并更新到最新的Wordpress版本(4.1)。我还使用WordPress(2014)内置的默认主题。

每当我运行“SHOW PROCESS;”时,我可以看到至少有3-8个此查询在运行,有时甚至更多,比如此查询的10+,而流量非常轻(甚至空闲)。

我在问,因为MySQL正在使用大量的CPU资源,我想知道为什么这个查询每秒都会多次显示我运行“SHOW PROCESS”。

1 个答案:

答案 0 :(得分:3)

您所看到的是正常的和预期的,您无能为力。在页面加载上最多有30个SQL查询是正常的。应该检查更多。

那么这些查询是什么?它们来自哪里?

  • 每个页面加载时,即使在404页面上或当一堆垃圾进入URL字段/地址栏时,也会执行主查询。 URL在查询参数中被解析和转换,WP_Query使用查询参数根据来自URL的参数从db中检索帖子。 WP_Query将所有参数和请求转换为单个SQL查询,它用于与数据库通信以检索所询问的内容。这是一个db命中,你无法做任何事情,大多数可能这是你问题的SQL查询。

  • 任何自定义查询(new WP_Queryget_postsget_pages)都会转换为SQL查询,以便从数据库中查询和检索帖子

  • 您的导航菜单使用转换为SQL查询的功能来构建主导航菜单

  • 用于显示帖子附加标签,术语和类别的函数使用SQL查询从数据库中检索标签/术语/类别

  • 大多数默认widgtes使用自定义查询和/或使用SQL查询从db获取信息的函数

  • 某些条件标记使用SQL查询来检查数据库中条目的条件

  • 在页面上,主查询进行额外的SQL查询以检索用于特定页面的页面模板

  • Wordpress运行一些在后台使用SQL查询的进程

  • 相关或热门的帖子部分也使用自定义查询,这些查询在SQL查询中进行转换以检索相关帖子

这些只是在每个页面加载时自动命中数据库的一些东西,有些可以被控制,有些则无法控制,但在一天结束时,如果没有这些查询,您将无法获得视觉体验或功能。你的网页

我建议您在测试安装中下载并安装Query Monitor。不要在生产站点上运行此工具,因为信息会直接打印到屏幕上。此工具打印出每个页面加载的所有查询/ db命中以及执行这些查询所需的时间。有了这个,你就可以很好地了解发生了什么以及哪些功能击中了数据库。

正如我已经说过的,在单个页面加载上最多有30个SQL查询(db命中)是正常的。更多应该检查这一点,通常可以通过优化代码来纠正这个问题

要记住和考虑的最重要因素是查询量与实际执行时间。这应该是决定走哪条路线的最重要因素。我过去曾多次表明,四个构造良好的查询有时比一次查询所需要的一个查询快10倍。

此外,在无法简化的大型操作上正确使用缓存和瞬态。在某些阶段,无论您尝试什么,您都会遇到70分贝命中的查询。

编辑

只是要添加,流量不会增加或减少默认情况下在给定页面上运行的SQL查询量。 SQL查询的数量完全取决于为完全加载页面而运行的进程