wordpress网站优化及无用数据的清理
在 WordPress 中,数据库会随着时间的推移积累大量的无用数据,清理这些数据可以有效减小数据库的体积,提高网站性能。以下是一些常见的 WordPress 数据库表以及可以清理的无用数据:
1. wp_posts
-
修订版本 (Revisions):WordPress 会为每个文章或页面创建多个修订版本,长期积累下来会占用大量空间。如果不需要保存所有修订记录,可以删除不需要的修订版本。
清理修订版本的 SQL 命令:
DELETE FROM wp_posts WHERE post_type = 'revision'
- 垃圾箱 (Trashed):WordPress 会将删除的文章放入垃圾箱中。如果垃圾箱中的内容不再需要,可以清理。
删除垃圾箱数据的 SQL 命令:
DELETE FROM wp_posts WHERE post_status = 'trash'
2. wp_postmeta
-
过期的元数据 (Post Meta):在文章、页面或自定义文章类型中,WordPress 会存储大量的元数据。这些元数据可能会有冗余或者过时的内容,尤其是在删除文章或修改文章时。
删除过期的元数据:
DELETE FROM wp_postmeta WHERE post_id NOT IN (SELECT ID FROM wp_posts);
注:这将删除那些已删除文章所对应的元数据。
3. wp_comments
-
垃圾评论 (Spam Comments):WordPress 允许用户标记评论为垃圾评论(spam),这些评论通常没有任何价值。如果你的站点有很多垃圾评论,可以定期清理。
删除垃圾评论的 SQL 命令:
DELETE FROM wp_comments WHERE comment_approved = 'spam'
-
待审核评论 (Pending Comments):如果站点有很多等待审核的评论,且这些评论已经不再需要,可以删除。
删除待审核评论的 SQL 命令:
DELETE FROM wp_comments WHERE comment_approved = '0'
- 删除已经标记为垃圾的评论元数据 (Comment Meta):清理掉与垃圾评论相关的评论元数据。
删除垃圾评论元数据的 SQL 命令:
DELETE FROM wp_commentmeta WHERE comment_id NOT IN (SELECT comment_id FROM wp_comments);
4. wp_options
-
过期的选项 (Expired Options):WordPress 存储了大量的选项数据,其中一些可能会过期或不再需要,像是一些插件的数据、缓存或者临时数据。比如过时的插件缓存数据、后台配置等。
清理过期或临时缓存的选项:
DELETE FROM wp_options WHERE option_name LIKE '_transient_%'
注:这将删除所有缓存的临时数据(transients)。
5. wp_users
和 wp_usermeta
-
未激活的用户 (Unactivated Users):如果你允许用户注册,可以清理那些从未激活的用户账户。
删除未激活用户的 SQL 命令(假设
wp_users
中有user_status
字段来标识激活状态):
DELETE FROM wp_users WHERE user_status = 0;
-
用户元数据 (User Meta):如果某些插件存储了用户的临时数据或过时的数据,清理这些冗余数据有助于减小数据库体积。
删除不再使用的用户元数据:
DELETE FROM wp_usermeta WHERE user_id NOT IN (SELECT ID FROM wp_users);
6. wp_term_taxonomy
和 wp_term_relationships
-
无用的分类和标签 (Unused Taxonomies):删除那些没有任何文章、页面或自定义内容关联的分类、标签或者自定义分类。
删除无用分类的 SQL 命令:
DELETE FROM wp_terms WHERE term_id NOT IN (SELECT term_id FROM wp_term_taxonomy WHERE count > 0);
7. wp_redirection_items
和 wp_redirection_logs
(如果使用了重定向插件)
-
重定向日志:如果你使用了重定向插件,可能会有大量的重定向日志。清理这些日志可以减少数据库负担。
清理重定向日志的 SQL 命令:
DELETE FROM wp_redirection_logs WHERE date < NOW() - INTERVAL 1 MONTH;
8. 插件表
-
某些插件会创建专用的数据库表,这些表可能包含无用的数据。定期检查并清理不再使用的插件的表可以帮助减少数据库体积。
你可以通过插件的设置界面或直接查看插件表中的数据来确定是否可以删除。
错误分析:
-
wp_options 表损坏:
- 错误信息显示:
Table '.\wpress\wp_options' is marked as crashed and should be repaired
。 - 这表示
wp_options
表发生了损坏,导致数据库无法正常访问或查询。
- 错误信息显示:
-
InnoDB 存储引擎错误:
InnoDB: MySQL is trying to perform a consistent read but the read view is not assigned!
- 该错误通常与 InnoDB 存储引擎的崩溃或事务处理不一致有关。特别是表在崩溃恢复时,可能发生了数据损坏。
-
断言失败:
- 日志中有
InnoDB: Assertion failure: row0sel.cc:4630
错误,这是 InnoDB 内部的严重错误,通常是由于数据表空间损坏或者数据库崩溃导致的。
- 日志中有
-
数据库恢复失败:
- 虽然 MySQL 尝试进行崩溃恢复 (
Starting crash recovery...
),但持续多次重启后依然出现崩溃。可能存在更严重的数据损坏。
- 虽然 MySQL 尝试进行崩溃恢复 (
解决方案:
修复损坏的 wp_options
表:
首先尝试修复损坏的表,可以通过以下 bash 命令:
myisamchk -r /path/to/mysql/data/wpress/wp_options.MYI
根据上面的修复代码与自己服务器相结合改成自己的路径如下图所示: