在我们使用WordPress的过程中,不论是文章数量还是评论数量都会逐渐增加,数据库体积的增大也是必然趋势。但是有的时候,我们更新文章后,旧的文章版本并没有被删除;垃圾评论虽然被删除了,但是相应空间并没有被回收或是留下一些历史记录。这些垃圾日积月累,很有可能占据比有效数据更多的空间,为我们备份、恢复数据带来不便,甚至影响数据库的读取效率。因此,我们有必要清理这些垃圾以优化WordPress数据库。

文章

WordPress 修订版本
当我们使用WordPress发布一篇文章后,难免会对它进行修改;而每次我们更新文章时,WordPress都会保留之前的修订版本(Post Revisions)作为备份(编辑文章页面底部)。修订版本作为备份有着重要的意义,可以避免劳动成果付之东流,但当一篇文章完成修订时(短期之内不会大篇幅修改),它们的用处便不大了。自动保存(Autosave)、草稿(Draft)功能也是如此。

推荐使用插件 WP Cleaner + WordPress Database Backup:WP Cleaner 允许我们在后台直接清除修订版本、自动保存及草稿,而不必通过执行SQL语句修改数据库,十分方便。同时,WP Cleaner具有保护机制,无论怎样操作都无法影响已发布的文章,可以放心使用。至于清理的时机,适合在完成文章修订时进行一次清除,既保证了文章的安全,又避免了冗余;WordPress Database Backup 可自动定时(一小时至一周)备份数据库文件至指定的邮箱,可以最大限度地保证数据安全。

phpMyAdmin 数据表优化

WordPress 数据表优化
如上图所示,最右栏“多余”既为MySQL数据库在使用过程中产生的冗余。清理方法很简单也很安全:点击下方的“全选”,之后选择右侧下拉菜单中的“优化表”就可以了。

以上两项优化可以认为基本上没有危险,但是下列几项涉及执行SQL语句,所以请务必做好备份。备份方法:点击页面上方的“导出”,进入后保留默认设置,在右下角点击“执行”,将文件下载到本地即可。

RSS Feed Cache

如果你在博客中使用了RSS小工具;如果你在后台开启了“链入链接”、“WordPress China 博客”、“其它WordPress 相关新闻”,当访问这些页面时wp_options表中便会生成以_transient、_site_transient开头的meta_key。transient(过往旅客、临时工)从字面意思便可以理解它具有缓存性质,事实上不多这些内容正是垃圾的主要来源。清理前1.2 MB、清理后178.5 KB,效果十分明显。

Akismet 历史记录清理

如果你启用了 Akismet 插件,虽然垃圾评论内容被删除了,但是因为它的自动学习功能,会在wp_commentmeta表里为所有垃圾评论留下历史记录。这个功能个人感觉用处不大,因为 Akismet 的远程数据库已经足够强大。

DELETE FROM `wp_options` WHERE `option_name` LIKE "_transient%";
DELETE FROM `wp_options` WHERE `option_name` LIKE "_site%";
 
DELETE FROM wp_commentmeta WHERE meta_key='akismet_history';

如果安装时自定义了数据库前缀,请在上面语句中作适当修改,例如:

DELETE FROM `buicaa_wp_options` WHERE `option_name` LIKE "_transient%";
DELETE FROM `buicaa_wp_options` WHERE `option_name` LIKE "_site%";
 
DELETE FROM buicaa_wp_commentmeta WHERE meta_key='akismet_history';

至此,WordPress 数据库优化、垃圾清理工作完成。如果执行了第三项优化,请务必进入你的网站仔细检查有没有出现bug。如果没有,那么恭喜你,你已经成功地进行了WordPress 数据库优化、垃圾清理。如果出现了问题,可以通过恢复数据库备份的方式修复。具体方法和备份数据库类似:首先进入数据库,在页面上方点击“导入”,上传本地磁盘里保存的数据库备份文件,最后点右下角的“执行”按钮就可以了。

本作品采用知识共享 署名-非商业性使用-相同方式共享 3.0 协议进行许可,欢迎转载。转载请保留署名(杯茶博客)及本文链接(http://www.buicaa.com/1472/),谢谢。

CC BY-NC-SA 3.0 Sitemap - Baidu-Sitemap