【问题标题】:Wordpress is executing this SQL query all the time?Wordpress 一直在执行这个 SQL 查询?
【发布时间】:2015-01-04 05:53:52
【问题描述】:

我的 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”时,这个查询每秒钟都会出现多次。

【问题讨论】:

  • 你为什么不直接问谷歌?搜索“SELECT SQL_CALC_FOUND_ROWS wp_posts.ID”(查询就够了),你会发现很多链接,例如wordpress.org/support/topic/…
  • 我用谷歌搜索,尽管查询的第一部分是相同的,但它们都有不同的案例(查询)。而当他们遇到这样的问题时,大多是因为主题或定制的WP_QUERY。就我而言,我已经关闭了所有插件,并且在看到问题时使用默认主题而不进行修改,所以我无法找出原因并寻求帮助。

标签: mysql sql wordpress


【解决方案1】:

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

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

  • 每个页面加载时,都会执行主查询,即使是在 404 页面上或在 URL 字段/地址栏中输入一堆垃圾时也是如此。 URL 被解析并转换为查询参数,WP_Query 使用该参数根据来自 URL 的参数从数据库中检索帖子。 WP_Query 将所有参数和请求转换为单个 SQL 查询,用于与数据库通信以检索所要求的内容。这是一个您无能为力的数据库命中,很可能这是您问题中的 SQL 查询。

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

  • 您的导航菜单利用转换为 SQL 查询的函数来构建主导航菜单

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

  • 大多数默认小部件使用自定义查询和/或使用 SQL 查询从数据库获取信息的函数

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

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

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

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

这些只是在每次页面加载时自动命中数据库的一些内容,有些可以控制,有些则不能,但归根结底,如果没有这些查询,您将无法获得视觉体验或功能你的页面

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

正如我已经说过的,在单个页面加载时最多有 30 个 SQL 查询(数据库命中)是正常的。更多这应该被检查,这通常可以通过优化你的代码来纠正

要记住和考虑的最重要因素是查询数量与执行它们所花费的实际时间。这应该是您决定走哪条路线的最重要因素。过去我已经多次证明,四个结构良好的查询有时比一个你想一次完成所有事情的查询快 10 倍。

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

编辑

补充一点,流量不会增加或减少给定页面上默认运行的 SQL 查询的数量。 SQL 查询的数量完全取决于正在运行以完全加载页面的进程

【讨论】:

    猜你喜欢
    • 2017-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多