如何掌握WordPress数据库优化方法

如何掌握WordPress数据库优化方法

虽然 WordPress 网站的所有组件都很重要,但数据库可以说是关键所在。实际上,网站的所有信息都是在这里存储和访问的。因此,WordPress 数据库优化游戏必须完美。

一个存在臃肿和性能问题的数据库会降低网站的运行速度,影响搜索排名。此外,还可能影响整体用户体验(UX)。反过来,这会影响您的流量数据,并影响您在搜索结果中的排名(还有其他问题)。

在本教程中,我们将从多个角度对 WordPress 数据库进行优化。我们将讨论你会看到的一般结构,以及许多可以利用的优化技术。我们还会提到一些工具和服务,它们可以帮助你保持数据库正常运行。

如何了解 WordPress 数据库结构

简而言之,WordPress 数据库是网站的支柱。它几乎容纳了所有内容、用户数据、设置等。关于 WordPress,数据库 “表 “负责存储特定类型的信息。

该平台使用 MySQLMariaDB 数据库管理系统,您可以使用 phpmyAdminAdminer 等工具访问数据库:

使用 phpMyAdmin 访问 WordPress 数据库

使用 phpMyAdmin 访问 WordPress 数据库

例如, wp_posts 表包含帖子和页面,而 wp_users 则保存网站用户的数据。稍后我们将详细介绍其中的一些表。

安装时,WordPress 会创建一组默认表格,以涵盖所有典型的使用情况。不过,插件、主题和安装也可以创建表格来存储特定的相关数据。

这种模块化方法在很多方面都非常出色,因为它可以实现广泛的功能。但反过来说,过多的表格(以及管理不善)也会导致臃肿。

出于以下两个原因,了解 WordPress 的数据库结构至关重要:

  • 性能。良好的数据库组织可以让您更快地检索数据,这将直接影响加载时间和性能。
  • 维护。了解哪些表格与网站的不同部分相对应,有助于网站维护。例如,如果某个插件出现问题,您可以对其相关的表进行故障排除。

定期清理和优化数据库的表格可以防止它们变得过大和臃肿。正如我们所指出的,性能影响可能会对您产生负面影响。

WordPress 专用表

所有类型的网站都使用数据库,而不仅仅是 WordPress。该平台有自己的数据库表类型和角色,如果您想优化它们,就必须充分了解它们。

虽然我们不会在这里介绍所有这些表,但您会比其他表更多地接触到某些表:

  •  wp_options。该表存储全站设置,可以说是数据库中访问量最大的表之一。您需要通过良好的优化使这个表保持精简。
    wp_postmeta。您的帖子元数据就存放在这里。随着网站的发展,这将成为数据库中最大的表之一。
  • wp_userswp_usermeta。与网站用户及其元数据相关的所有信息都存放在这两个表中。在极少数情况下,如果您被锁定在 WordPress 之外,您可能需要在这里修改密码

请记住,您添加到网站上的每一个额外插件或主题都可能会修改这个结构。不过,主题或插件移除其中一个表格的情况很少见。

即便如此,您还是应该定期查看并了解这些潜在的变化。这是维护优化数据库的关键,它能支持而不是阻碍网站的性能。

为什么大多数网站都需要优化 WordPress 数据库?

优化 WordPress 数据库不仅是一种良好的做法,而且对于大多数希望提供无缝体验的网站来说也是必要的。您的数据库是网站所有重要数据的集中存储地。它的健康状况直接影响网站的性能、速度和可靠性

因此,定期对 WordPress 数据库进行优化应该成为工作流程的主要内容,这有两个一般原因:

  • 提高网站速度和性能。随着时间的推移,您的 WordPress 数据库会包含一些不必要或冗余的数据,例如瞬时选项、文章修订版本、垃圾评论或过时的草稿。这种臃肿会降低信息检索速度。
  • 改善用户体验。用户还希望获得流畅、快速的浏览体验。优化良好的数据库可加快页面加载速度,提高数据处理效率。简而言之,每一次网站交互都依赖于数据库查询。更高的效率带来更好的用户体验。

还有一些更高级的原因需要确保优化数据库。例如,未经优化的数据库会给服务器带来额外的压力,因为它需要更加努力地查找和提供数据。如果您使用的是资源有限的共享主机,这将产生严重影响。

此外,随着网站的增长,数据库也会随之增长。虽然一开始您可能运行一个小的、可管理的系统,但它的复杂性会迅速增加。通过定期优化,您可以确保数据库能够在不影响性能的情况下处理网站的扩展。

简而言之,WordPress 数据库优化将提高响应时间。即使是几秒钟的加载延迟也会导致跳出率增加和流量损失,这对您的搜索排名来说可不是什么好消息。

如何进行定期维护和清理

如果您定期清理和维护 WordPress 数据库,那么您就拥有了保持网站尽可能平稳运行的最佳方法之一。然而,随着时间的推移,数据库可能会被不必要的数据充斥,因此定期和一致的工作流程非常重要。

此外,您还应该以最佳方式使用您所掌握的所有工具和服务。好消息是,WordPress 提供了许多维护数据库的方法。

一个插件会有无数种优化数据库的方法。WP-Optimize 就是一个很受欢迎的解决方案。还有其他一些插件,但这个插件在 WordPress.org 上的评分和评论都很高,而且是免费的,还会定期更新。

WP-Optimize

WP-Optimize

我们将在整个文章中展示如何使用该插件优化 WordPress 数据库,但您也可以将这些说明移植到您选择的插件中。

接下来的几节将详细介绍这一点,我们将介绍手动方法和使用 WP-Optimize。不过,首先让我们来介绍一些优化前的工作。

优化前的准备工作

在进入数据库之前,有一些简单的任务需要完成。首先,你应该对网站和数据库进行完整备份。如果发生最坏的情况,你毁掉了你的网站,你可以在几分钟内将其恢复。

您还需要删除网站上不使用的任何插件或主题。这可以解决一些问题,不仅仅是数据库的问题。它还有助于加强网站的安全性。

WordPress 中的插件列表

WordPress 中的插件列表

不过要注意的是,根据插件或主题的不同,这可能会留下不需要的表格。当然,这也正是我们要优化数据库的原因,因此了解哪些插件和主题会留下瞬时数据将有助于后续工作。

最后一项任务是登录你所选择的数据库管理工具。数据库错误显然是性能问题的表现,因此在进行进一步优化之前,应先解决这些问题。

简而言之,这个过程就是选择所有表格,然后使用 “Check table” 按钮生成报告。

在 phpMyAdmin 中选择 "检查表" 选项

在 phpMyAdmin 中选择 “检查表” 选项

如果看到 “OK”(确定)或类似信息,这就是最佳状态。但是,在继续之前需要解决任何错误。这时,请求支持可能是个好主意。

1. 优化数据库表

第一步是优化数据库中的表。采用手动方法时,请访问管理工具中的 Databases 链接,然后选择数据库:

在 phpMyAdmin 中选择数据库

在 phpMyAdmin 中选择数据库

在很多情况下,你已经进入了 WordPress 网站的数据库。无论如何,您都会看到数据库中的表列表。只需批量选择所有表,然后从下拉菜单中选择 “Optimize table” 选项,再点击 “Go“:

选择使用 phpMyAdmin 优化所有数据库表

选择使用 phpMyAdmin 优化所有数据库表

一段时间后,你会看到一份报告,概述了数据库中每个表的状态:

phpMyAdmin 中的优化报告

phpMyAdmin 中的优化报告

使用 WP-Optimize,前往 WP-Optimize > Database > Optimizations。在这里,点击优化数据库表选项旁边的运行优化按钮:

WP-Optimize 面板中的运行优化按钮

WP-Optimize 面板中的运行优化按钮

插件会运行所有表,然后给你一条成功信息。此时,您就可以继续修改文章了。

2. 清理文章修订版本

WordPress 的文章修订版本系统意味着您所做的每一次保存都会随着时间的推移而增加。您可以使用 SQL 查询轻松地从数据库中删除这些内容。最简单的方法只有一行:

DELETE FROM wp_posts WHERE post_type = 'revision’;

这将删除表中所有类型的修改职位。不过,其他表中也有相关数据。要捕获并删除所有这些数据,可以使用以下代码段:

DELETE FROM wp_posts WHERE post_type = 'revision';
DELETE FROM wp_term_relationships WHERE object_id NOT IN (SELECT ID FROM wp_posts);
DELETE FROM wp_postmeta WHERE post_id NOT IN (SELECT ID FROM wp_posts);

当然,如果复制和粘贴,应为自己的数据库使用正确的表前缀。有了插件,这项工作只需几秒钟。与一般的 WordPress 数据库优化一样,WP-Optimize 可让您在 WordPress 中单击按钮:

在 WP-Optimize 中清除修订和自动草稿的选项

在 WP-Optimize 中清除修订和自动草稿的选项

今后,您可以通过访问 wp-config.php 文件来限制 WordPress 使用的修订次数。在此文件中添加以下一行并保存更改:

define( 'WP_POST_REVISIONS', X );

这里, X 是您希望保留的修订次数。您也可以在这里指定 “false“,但我们不建议您这样做。您总是希望在需要时至少有一个修订版本可以备用。

3. 删除垃圾评论和垃圾项目

我们还可以使用 SQL 查询来删除垃圾评论。请注意,在您对评论进行审核时,不需要的评论会在数据库中保留 30 天。这意味着在这段时间内被标记为垃圾邮件的评论将保留在数据库中。

您只需在数据库管理工具中输入几行 SQL 语句,就能彻底清除这些评论:

DELETE FROM wp_comments, wp_commentmeta
USING wp_comments
LEFT JOIN wp_commentmeta ON wp_comments.comment_ID = wp_commentmeta.comment_id
WHERE wp_comments.comment_approved = 'spam’;

在 WordPress 中发送到垃圾箱的项目也是类似的情况。可能会有很多内容 “悬而未决”,您可以使用另一个 SQL 查询将其删除:

DELETE p, pm, tr
FROM wp_posts p
LEFT JOIN wp_postmeta pm ON p.ID = pm.post_id
LEFT JOIN wp_term_relationships tr ON p.ID = tr.object_id
WHERE p.post_status = 'trash’;

与修改文章一样,你也可以在 wp-config.php 中设置删除垃圾项目所需的时间值:

define( 'EMPTY_TRASH_DAYS', X )

在 WP-Optimize 中,有三个选项可以帮助您删除垃圾评论和 WordPress 垃圾箱:

在 WP-Optimize 中删除垃圾评论、垃圾箱和未批准评论

在 WP-Optimize 中删除垃圾评论、垃圾箱和未批准评论的选项

还有删除未批准评论的选项。这在某些情况下可能有用,但我们不建议这样做。相反,您可以缓和这些评论,然后在必要时清除它们。

4. 删除未使用的标签

分类标准对 WordPress 非常重要,但随着时间的推移,它们可能会成为一个庞大的集合。这是优化数据库的绝佳用例,与其他技术一样,您可以使用 SQL 查询:

DELETE t, tt
FROM wp_terms AS t
INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id
LEFT JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id
WHERE tt.taxonomy = 'post_tag' AND tt.count = 0;

在 WP-Optimize 中移除未使用标记的最近选项是 Clean post meta data。该功能会评估是否有任何孤儿元数据,并将其删除:

WP-Optimize 中的选项可清除无主的文章元数据

WP-Optimize 中的选项可清除无主的文章元数据

虽然该选项也可能删除类别和其他数据,但这是一个安全的解决方案,尤其是在没有其他帖子或页面使用它们的情况下。

5. 删除 Pingback 和 Trackback

我们不清楚在当今时代有多少 WordPress 网站使用 pingbacktrackback,但如果你不关闭设置,它们仍然会扰乱你的数据库。首要任务是检查是否已禁用该选项。这在 WordPress 的 “Settings“>”Discussion” 屏幕中是一项简单的工作:

WordPress 中的 "讨论" 设置界面 的 pingback 和 trackback 选项

WordPress 中的 “讨论” 设置界面 的 pingback 和 trackback 选项

在 “默认文章设置” 部分,确保取消勾选 “尝试通知文章中链接的博客… “和 “允许其他博客发送链接通知(Pingback 和 Trackback)到新文章 ” 选项并保存更改。接下来,返回数据库管理工具并运行以下查询:

DELETE c, cm
FROM wp_comments c
LEFT JOIN wp_commentmeta cm ON c.comment_ID = cm.comment_id
WHERE c.comment_type IN ('trackback', 'pingback’);

虽然类型不同,查询的重点也不同,但两者都与评论位于同一位置。WP-Optimize 为这两种类型分别提供了两个选项:

WP-Optimize 删除 trackback 和 pingback 选项

WP-Optimize 删除 trackback 和 pingback 选项

完成这项工作后,您就不会再在数据库中看到 trackbacks 或 pingback 了!

使用 WPTurbo 的 WordPress 数据库自动优化功能

您还可以使用闪电博研发的 WordPress 优化插件 WPTurbo 来实现数据库优化。

WPTurbo 通过删除修订版本、自动草稿、回收站文章、瞬时数据、垃圾评论、瞬态等不必要的数据来清理您的数据库。因此,您无需输入即可确保数据库保持优化。

WPTurbo 插件

WPTurbo 插件

使用 WPTurbo 插件并不是本篇文章的重点,但我们的插件属于开箱即用的类型,站长安装插件后可以快速上手并执行相关优化。

再者,WPTurbo 并非单纯的数据库优化插件,除了数据库优化之外,还能够实现 WordPress 瘦身、速度优化和对象存储等功能,多策略组合的形式来实现 WordPress 性能优化

如何优化数据库查询以提高效率

优化您使用的数据库查询对于提高 WordPress 网站的性能和速度至关重要。高效的查询意味着更快地检索数据,进而改善加载时间和用户体验。

鉴于您可能会使用查询来进行 WordPress 数据库优化,以下是一些关于如何提高查询效率的提示:

  • 优化查询结构。您会注意到,我们在示例查询中没有使用通配符(或星号)。与其使用 SELECT * ,不如具体到你需要的确切列。此外,尽可能使用 JOIN 而不是子查询。子查询的效率可能较低,尤其是在没有良好结构或涉及大型数据集的情况下。
  • 使用查询缓存。Redis 等工具可以将查询结果存储在内存中。这意味着查询结果可以从缓存中提供,而无需下次再查询数据库。

这些都是模糊的提示,但你还可以做很多事情。接下来让我们快速了解一下。

高级 WordPress 数据库优化和故障排除技巧

索引可以帮助您为数据库添加快速参考指南。它可以帮助数据库服务器在不扫描表中每一行的情况下更快地找到数据。

为此,请确定查询中经常使用的列,并考虑为其添加索引。您可以在 phpMyAdmin(或类似软件)中进行操作。首先,单击要添加索引的表,然后转到 “Structure” 选项卡:

在 phpMyAdmin 中访问表的结构选项卡

在 phpMyAdmin 中访问表的结构选项卡

接下来,选择要建立索引的列,然后选择表底部的 Index 选项:

在 phpMyAdmin 中选择索引列

在 phpMyAdmin 中选择索引列

保存更改后,这将为这些列建立索引。

EXPLAIN 语句还可以帮助你了解 MySQL 是如何执行查询的。这可以帮助你发现效率低下的问题,并了解你的查询是如何与索引交互的。要运行该语句,请将其添加到现有查询的前面。运行时,SQL 将分解如何执行查询:

运行以 EXPLAIN 语句为前缀的查询的输出结果

运行以 EXPLAIN 语句为前缀的查询的输出结果

尽管 MySQL 文档几乎涵盖了关于 EXPLAIN 语句的所有知识,但我们无法在此一一介绍。

监控性能

监控 WordPress 数据库的性能是网站运行的重要组成部分。它有助于在潜在问题升级之前将其识别出来,并确保网站保持高效和响应性。

我们在这篇文章中介绍的许多技术都将用于性能监控,例如在缓慢查询中使用 EXPLAIN。然而,还有更多的方法可以使用。事实上,phpmyAdmin 在服务器的 Status 选项卡中包含了自己的性能指标:

phpmyAdmin 状态界面

phpmyAdmin 状态界面

这可以让你查看查询的执行时间和进程(在 Query statistics 选项卡上),有助于识别需要优化的查询。对于高级监控,MySQL Workbench 将是无价之宝:

MySQL Workbench 的主用户界面

MySQL Workbench 的主用户界面

它为你提供了数据库设计、开发和管理的高级功能。它还能提供性能报告和诊断,帮助您对数据库进行微调。

在 WordPress 中,常年使用的 Query Monitor 插件可让您监控数据库查询、钩子、条件、HTTP 请求等。

Query Monitor 插件

Query Monitor 插件

它对检测缓慢查询和识别导致缓慢查询的插件或主题特别有用。但在大多数情况下,这是一个开发插件,因此可能不适合生产网站。

如何在 WordPress 中处理大型数据库

随着 WordPress 网站内容、用户和流量的增长,其数据库自然也会随之扩大。在运行网站时,您会经常遇到(或担心)大型数据库。

我们在本文中给出的大多数建议都适用于大型数据库–以及减少大型数据库。不过,对于那些本身就比一般数据库大的数据库,我们还可以给出很多其他建议:

  • 归档旧数据。不要让所有数据都是实时的,可以考虑将不经常访问的旧文章或用户数据归档。
  • 使用内容交付网络(CDN)。从另一台服务器卸载和提供静态资源,如图片、视频和下载,可以减少网站的负载,帮助网站加速。此外,无论用户身在何处,网站的加载速度都会更快。
  • 自定义查询。如果您是 WordPress 开发人员,请为您的主题和插件编写高效的查询。这将帮助您只获取所需的内容,并保持较高的效率。

您甚至可以考虑使用表分区和 “数据库分片” 等高级技术。这就是将数据分割到多个数据库中。这通常比较复杂,通常需要专家进行管理。

说到这一点,要想让您的数据库和附属网站实现高性能,专家是必不可少的。

小结

您的 WordPress 数据库就像汽车的发动机:如果不进行调整,它就无法发挥您所需要的性能。事实上,如果缺乏对 WordPress 数据库的优化,您的搜索排名可能会从第一名掉到最后一名。您的用户也会发现您的网站变得乏善可陈,因此一个运行速度快的顶级数据库是成功的关键。

有很多方法可以做到这一点,但将人工技术、插件等优化工具结合起来,会给您带来最大的收益。在许多情况下,自动化可以帮助您完成许多此类任务,而无需登录或亲自运行任何特定工具。

我们很想知道我们的 WordPress 数据库优化技巧是否对您有用。请在下面的评论区告诉我们哪个最有效!

评论留言