WordPress数据库的清理

TC16年前 (2010-09-01)网站与博客1115
WordPress逐渐在给新版本集成一些不实用的功能,比如修订、自动保存、回收站等等。
这是很奇怪的事情,因为那些不能算是核心功能,本可以交给插件去实现的,现在却因为集成在wp中,容易造成数据库垃圾。
清理插件生成的表格就不消说了,除了下面这几个,其他都不是wp的必需品,可删之。

但除了会生成表格外,很多垃圾其实是长在wp自带的表中的。
这次WordPress的数据库清理,主要是三个表:options、postmeta、posts。

options
options中会留下的垃圾主要是由于插件和模板造成的。
在我用过的插件中,唯一不会留下数据库垃圾的就是postviews。这个插件在卸载时也会自动卸掉自己在数据库中留下的所有印记(要用插件自己的卸载功能,不要直接在FTP中删除插件文件)。
但其他的插件就不是这样了,卸载后仍然会在数据库中留下已经无用的表和字段。
而且,autoload还是yes……
<—以前的插件留下的垃圾

模板也是如此,有些模板也会在options中留下记录,判断的标准并不是模板是否有后台选项。有些没有后台选项的模板也会留下垃圾,而有些带有后台选项的模板却是干干净净的。
这方面的判断要靠对wp的熟悉了,或者也有相应插件。
我没用过清理数据库的插件,无法做推荐。

postmeta
主要是附件、插件、帖子编辑产生的字段。而如果这样的字段并非必要,也就成了垃圾。
wp中每上传一个附件都会生成字段(达成附件和帖子的关联),这些可以不去动它。
但实际上,除了用到来显示帖子图片,或者必须和帖子关联才能生成缩略图的插件或模板外,这个关联也没有太大实际意义。

由于以前使用的comfy模板预装了ratings插件,数据库中留下了大量的ratings相关字段,用SQL命令删之。
例如:
DELETE FROM `库名`.`表前缀_postmeta` WHERE `表前缀_postmeta`.`meta_key` = ‘ratings_average’;

另外,postmeta中还可以看到这样的字段:_edit_lock 以及 _edit_last。
这些则是编辑帖子时产生的,目的是锁定正在编辑的帖子,防止不同的用户同时编辑同一个帖。
删掉这些字段的命令和上面的一样。
例如:DELETE FROM `库名`.`表前缀_postmeta`
WHERE `表前缀_postmeta`.`meta_key` = ‘_edit_lock’;

但之后编辑帖子时,又会在每编辑一帖的时候自动新增一批这样的字段。

posts
posts中的垃圾主要是wp的自动保存等功能造成的。
wp2.8中有修订功能,像wiki一样允许将帖子恢复为旧版。
但wp不是wiki,这功能实在没什么必要,反而会加大数据库的读取量。
自动保存也是鸡肋,我用的火狐浏览器,如果需要这样的功能,完全可以用火狐插件或油猴子脚本来实现,根本不需要wp自作主张给我保存。
通过修改wp的php代码可以禁用这些功能,但要删除以前产生的旧版,就需要进数据库。
这一步是几天前就做了的,我已经忘了当时的数据库状况和所用的SQL语句了。
不过,又一个无用字段inherit却是现成的。

很明显,post_status为inherit的内容(post_content)是空的,这又是没意义的垃圾。
删它没商量:
DELETE FROM `数据库名`.`表前缀_posts` WHERE `表前缀_posts`.`post_status` = ‘inherit’;

这一删就是近900行。

终于把posts的行数(550)和wp后台显示的文章数(549+1)统一起来了。

这三个表就清理出了三四兆、一两千行的垃圾数据。
真不愧是自从装了WP以后就没再管过数据库的……




陈年旧评分割线(评论顺序 ↑)




emize_info:马克 藏

TombCrow:wopus.org看到删除修订记录的语句,拷贝到这里汇总~DELETE FROM wp_postmeta WHERE post_id IN (SELECT id FROM wp_posts WHERE post_type = 'revision');DELETE FROM wp_term_relationships WHERE object_id IN (SELECT id FROM wp_posts
返回列表

上一篇:SMF的修改

下一篇:WordPress的修改

相关文章

不厚道地加了个防盗链……

不厚道地加了个防盗链……

最近在捣鼓图库……考虑到可能会增开图库,于是不得不开防盗链了。本来只想弄一个图库程序的防盗链插件的,找了一圈没有好使的,于是只能在 htaccess 里写命令了。一不做二不休,索性把整个站的图片都防了。留了几个常见的RSS阅读器,免得连阅读器里也只能看到“防盗”图。RewriteEngine onR...

WordPress文章内容的批量替换

WordPress文章内容的批量替换

其实这和当初smf的批量替换是一样的。但那个是聊天记录,废话多了点,有时候我自己看都觉得烦。现在给自己也给其他有此需要的wp用户整理一下。需求:主要是因为更换域名或某链接引起的,需要批量替换文章内容。比如,批量修改链接地址——需要把“gmly.cn”全部改成“gmly.info”。或者,批量替换关键...

又是s的草稿,留底用,dzlite2smf

又是s的草稿,留底用,dzlite2smf

先在关卡空间的数据库里建立几个smf的空表,用于完事后从关卡空间导出再导入gmly.info:(一定注意两个数据库的编码)smf_messages_dz (结构同 smf_messages,下同,略)smf_topics_dzsmf_members_dz转换顺序:1. 建立上述空表2. 转换帖子3....

s笔记:涩兔子

s笔记:涩兔子

1.解决导出的sql文件 mysqldump出来的sql文件,用vi打开,使用群替换 : %s/latin1/utf8/g 把所有latin1的相关信息都改成utf8 2.解决导入的问题 mysql -usirtoozee -p123456 linuxfans < linuxfans.sql ...

感谢希拉克!我复活了!

感谢希拉克!我复活了!

同学们老师们亲人们朋友们,我搬到新浪去了~为了希拉克,又写了一篇博客,看起来新浪那里有继续更新的可能……啊,对了,说明一下,消失的博客文章并不是我删的哦~~...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法和观点。