WordPress 教程:优化数据库 数据表清理全攻略

[ 文档 ]

WordPress 3.x+ 数据库表

(1)wp_commentmeta: 用于保存评论的元信息,在将评论放入回收站等操作时会将数据放入此表,Akismet等插件也会生成此表的数据。
(2)wp_comments: 用于保存评论信息的表。
(3)wp_links: 用于保存用户输入到Wordpress中的链接(通过Link Manager)的表。
(4)wp_options: 用于保存Wordpress相关设置、参数的表,里面包括了大量的重要信息。
(5)wp_postmeta: 用于保存文章的元信息(meta)的表。此表不太重要。
(6)wp_posts: 用于保存你所有的文章相关信息的表,非常的重要。
(7)wp_terms: 文章和链接分类以及文章的tag分类可以在表里找到。
(8)wp_term_relationships: 日志与wp_terms中的类别与标签联合起来共同存储在此表中。类别相关链接也存储在此表中。
(9)wp_term_taxonomy: 该表格对wp_terms表中的条目分类(类别、链接以及标签)进行说明。
(10)wp_usermeta: 用于保存用户元信息(meta)的表。
(11)wp_users:用于保存Wordpress使用者的相关信息的表。

清理数据表操作主要涉及到以下几张表:

一、wp_options表:

这个数据表是wordpress设置的全局数据,这个表会经常插件、主题的残留数据,一些数据缓存。
(1)使用插件 clean options
(2)清空wp_options表,会删除一些设置,需要重新设置wordpress

TRUNCATE TABLE wp_options;

(3)删除 feed 缓存

DELETE FROM `wp_options` WHERE `option_name` LIKE ('_transient%_feed_%')

二、wp_posts表:

(1)删除除已发布的内容以外的文章、修订版本、页面、文章的附件、菜单

DELETE FROM wp_posts WHERE NOT(post_status = 'publish' AND post_type IN('post','nav_menu_item','page'));

(2)删除未使用的短代码 (shortcodes),其中 [tweet] 请按实际修改

UPDATE wp_post SET post_content = replace(post_content, '[tweet]', '' ) ;

(3)优化 wp_posts 表

OPTIMIZE TABLE wp_posts;

三、wp_postmeta表:

(1)规矩删除,删除文章中不存在文章的元信息

DELETE FROM wp_postmeta WHERE post_id NOT IN (SELECT post_id FROM wp_posts);

(2)安全删除,删除_edit_lock和_edit_last条目是安全的

DELETE FROM wp_postmeta WHERE meta_key = '_edit_lock';
DELETE FROM wp_postmeta WHERE meta_key = '_edit_last';

(3)风险删除,目前没有发现问题,待进一步考证

DELETE FROM wp_postmeta WHERE meta_key = '_wp_old_slug';
DELETE FROM wp_postmeta WHERE meta_key = '_revision-control';
DELETE FROM wp_postmeta WHERE meta_value = '{{unknown}}';

(4)特殊操作删除,后台上传图片或者附件的信息,若不需要可以删除

DELETE FROM wp_postmeta WHERE meta_key = '_wp_attached_file';
DELETE FROM wp_postmeta WHERE meta_key = '_wp_attachment_metadata';

(5)特殊插件删除,postnav插件会记录每个文章的访问数,若不需要可以删除

DELETE FROM wp_postmeta WHERE meta_key = 'views';

(6)删除孤立的 Post Meta 数据,执行之前,要注意备份数据库

DELETE pm
FROM wp_postmeta pm
LEFT JOIN wp_posts wp ON wp.ID = pm.post_id
WHERE wp.ID IS NULL

四、wp_commentmeta表:

(1)删除没有用的数据,不出意外,下面的操作我们应该不需要做

DELETE FROM wp_comments WHERE comment_approved = 'trash';
DELETE FROM wp_commentmeta WHERE comment_id NOT IN (SELECT comment_id FROM wp_comments);

(2)在此表会记录评论被删除的时间,当评论被从回收站删除之后,这些记录就可以删除了

DELETE FROM wp_commentmeta WHERE meta_key LIKE '%trash%';

(3)如果直接全部删除wp_commentmeta,影响不会太大,这里面不会涉及重要的数据

TRUNCATE TABLE wp_commentmeta;

五、wp_terms表:

删除未使用的文章标签

DELETE FROM wp_terms WHERE term_id IN (SELECT term_id FROM wp_term_taxonomy WHERE count = 0 ); DELETE FROM wp_term_taxonomy WHERE term_id not IN (SELECT term_id FROM wp_terms); DELETE FROM wp_term_relationships WHERE term_taxonomy_id not IN (SELECT term_taxonomy_id FROM wp_term_taxonomy);

2 条评论

发表评论

您的个人信息将得到保护,邮箱不会被公开。