WordPress网站提速优化之清理数据库冗余数据

投稿   小C博客  2016-06-27 07:28:25  952 人阅读  40 条评论

投放广告联系   诚邀合作伙伴   赞助我们   本站公告   轻松一刻

最近小C发现数据库中有很多冗余数据,就想清理优化下数据库加快网站的运行速度,下面小C就教大家如何清理数据库表。

PS:请注意看观看此文请认真,一定要先备份,备份,备份重要的事说三遍。备份后在执行SQL语句,否则后果自负!

WordPress网站提速优化之清理数据库冗余数据

一、数据库表清理

1.wordpress数据库表

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

2.清理涉及到的表

更换主题,删除插件会在将数据留在数据库中,在卸载后无法被清理。除此之外,在由于一些操作,会导致数据库的冗余,比如已经没有的评论,不应该在评论元数据表中有记录,由于没有外键的约束,这些记录没有被删除,会造成数据的冗余。本文的宗旨是删除掉不必要的数据库内容,提高wordpress的效率。

在此,主要涉及到一下几张表:wp_options,wp_posts,wp_postmeta,wp_commentmeta

注意:清理之前进行备份

3.wp_options的清理

wp_options 这个数据表是wordpress设置的全局数据,这个表会经常有数据膨胀。主要原因是:

(1)以前用过的一些插件、主题在删除之后没有进行设置的清理,造成残留数据

(2)占用数据的大户–RSS缓存,后台的数据调用竟然会放到数据库里面

处理方法:

①网上对RSS处理方法有两种一个是修改后台的文件直接不去调用,这个是我不喜欢的毕竟修改了程序,其实这个很容易忘记WP升级是太频繁的哪次更新覆盖了新文件还是照样缓存.另外一种就是在配置文件里面填写define('MAGPIE_CACHE_ON', '0');这个是管用的,添加以后后台首页的调用明显变慢

②使用插件clean options

③费力但是简单的清除方法:删除wp_options表,会删除一些设置,需要重新设置wordpress,推荐新手使用

  1. TRUNCATE TABLE wp_options;

4.wp_posts清理

wordpress的文章有好多:wp_posts表中包括文章种类:文章、修订版本、页面、文章的附件、菜单,其中每种文章又会有很多状态:继承、发布、私有、草稿、自动草稿、回收站中。

冗余原因:

(1)在小C写文章的时候,系统会保存很多的中间状态,在文章发布之后其很多的中间状态没有被删除

解决办法:

①使用插件:WP Cleaner,使用插件的好处就是有保护机制,无论怎么操作都无法影响已发布的贴子,请放心使用。

②自己动手删除,数据库中的标志删除文章,注意备份。

说明:wp_posts的重要字段含义:

  • post_type:文章类型,post表示为文章,revision表示为修订版本,page为页面,attachment是文章的附件信息,nav_menu_item是菜单。这里我们需要的是文章、页面、和菜单
  • post_status:文章状态,inherit是继承的附件和文章的附带信息,publish是已经发布、private是私有的,draft是草稿,auto-draft是自动草稿,trash是在回收站。这里我们需要的是publish的状态的
    这里我们主要是要 已经发布的文章、页面和菜单,除此之外的都可以删除,当然可以根据自己的需求选择删除哪些
  1. DELETE FROM wp_posts WHERE NOT(post_status = 'publish' AND post_type IN('post', 'nav_menu_item', 'page'));

③去除WP保存修订版本的功能

WordPress默认的功能并不都是我们想要的,比如修订版本历史对于大多数人来说是无用的鸡肋功能。所以我么需要禁止一些博客功能,来达到较为符合个人要求的博客应用。对于高手来说,可以直接修改程序的配置文件,来禁止相关功能。对于我等程序小白来说还是利用插件是最佳的选择
推荐中文插件SuperSwitch来关闭一些我们不需要的博客功能。这个插件可以关闭自动保存和修订历史版本,还可以关闭博客程序、主题、插件的自动更新。功能非常强大,操作及其简单。用SuperSwitch禁止了保存修订版本之后,文章序号就不会断得太厉害了。

也可以使用代码版关闭:新版可用WordPress禁用修订版本和自动保存

5.wp_postmeta清理

wp_postmeta是文章的元信息表,其数据是系统或者插件使用。

冗余原因:

(1)文章被删除之后,其在wp_postmeta中的数据理应被删除,在系统中多数情况是系统自动删除,但是由于人为删除文章,系统不知道被删除,就不会删除wp_postmeta表中的数据,造成冗余

(2)很多主题、插件没有做好及时清除的工作

解决办法:

① 手动删除

规矩删除

删除文章中不存在文章的元信息

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

安全删除

删除_edit_lock和_edit_last条目是安全的,所以这里给出SQL语句

  1. DELETE FROM wp_postmeta WHERE meta_key = '_edit_lock';
  2. DELETE FROM wp_postmeta WHERE meta_key = '_edit_last';

风险删除

除了这两条还执行了一些其他语句由于有些风险:自己酌情考虑

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

特殊插件删除

postnav插件会记录每个文章的访问数,如果不需要,可以删除

  1. DELETE FROM wp_postmeta WHERE meta_key = 'views';

特殊操作删除

在WordPress的后台上传图片或者附件后会在wp_postmeta中生成_wp_attached_file和_wp_attachment_metadata两个项,wp_posts也会记录附件的信息。如果使用FTP工具上传文件,表中就不会有这些信息

  1. DELETE FROM wp_postmeta WHERE meta_key = '_wp_attached_file';
  2. DELETE FROM wp_postmeta WHERE meta_key = '_wp_attachment_metadata';

洁癖删除

这几条条语句执行完毕能够删除掉95%以上的数据,算的上是极限优化了,最后考虑到这个数据表并不是很重要,有洁净癖的人可以尝试清空这个表,当然我测试清空表会让一些原本的数据丢失

  1. TRUNCATE TABLE wp_postmeta;

6. wp_commentmeta清理

冗余原因:

(1)评论被删除之后,其在wp_commentmeta中的数据理应被删除,在系统中多数情况是系统自动删除,但是由于人为删除文章,系统不知道被删除,就不会删除wp_commentmeta表中的数据,造成冗余。

(2)很多主题、插件没有做好及时清除的工作。

解决办法:

以下语句去除没有用的数据,如果评论中没有此条评论,那么在wp_commentmeta也没有意义,好像wordpress在清空回收站的时候会删除wp_commentmeta相应的数据。如果不出意外,下面的操作我们应该不需要做。

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

在wp_commentmeta里面会记录评论被删除的时间,这些信息用处不是很大,当评论被从回收站删除之后,这些删除的时间意义就不是很大,就可以删除了,所以用下面的语句一样达到删除的目的。

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

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

  1. TRUNCATE TABLE wp_commentmeta;

7.总结

其实大部分无用的数据均在这几张表中,清理过后应该不会又太多的冗余数据了。但这里没有针对特殊插件或主题做数据库清理,有时这些插件和主题会悄悄动了一些数据库表,这样给清理带来很大难度,需要看代码才知道哦。

二、数据库表优化

原理:数据库优化不涉及数据的删除,是将数据库的表的状态调整好。在使用phpmyadmin时候,或许您会看到数据库表后面有多余xxMB的字样,这个指的是那些已经分配给当前表但是却没有使用的空间。这个多余是没有什么害处的,他不会占用你的空间。当删除一个表的一部分记录时,这些记录仍然保持在一个linked list 中,当插入新数据时会再次使用这些老纪录的位置。所以删除纪录会闲置一些空间造成你说的“多余”。

(1)在phpmyadmin手动 优化或者修复表即可

(2)运行SQL:

  1. OPTIMIZE TABLE wp_commentmeta;
  2. OPTIMIZE TABLE wp_comments;
  3. OPTIMIZE TABLE wp_links;
  4. OPTIMIZE TABLE wp_options;
  5. OPTIMIZE TABLE wp_postmeta;
  6. OPTIMIZE TABLE wp_posts;
  7. OPTIMIZE TABLE wp_terms;
  8. OPTIMIZE TABLE wp_term_relationships;
  9. OPTIMIZE TABLE wp_term_taxonomy;
  10. OPTIMIZE TABLE wp_usermeta;
  11. OPTIMIZE TABLE wp_users;

(3)插件:Optimize DB

历史上的今天:

文章标签: ,   ,   ,  
原文地址:http://www.mxiaoc.com/1081.html
温馨提示:文章内容仅代表作者个人观点,不代表boke112导航赞同其观点和对其真实性负责!
版权声明:本文为投稿文章,感谢 小C博客 的投稿,版权归原作者所有,欢迎分享本文,转载请保留出处!
WordPress虚拟主机和VPS服务器推荐

 发表评论


  1. 路客
    路客 【小白】 @回复

    这个太有用了。

  2. 深圳SEO
    深圳SEO 【小白】 @回复

    博主,怎么降低数据库的并发数呢,经常出现数据库连接不上的问题

    • boke112导航
      boke112导航【村长】2016-07-23 12:09  回复

      @深圳SEO一般的并发数应该是够用的吧,实在不行建议安装数据库缓存插件

      • 深圳SEO
        深圳SEO 【小白】2016-07-23 12:12  回复

        @boke112导航万网的,数据库缓存插架能解决并发数这个问题吗

  3. 这个世界
    这个世界 【秀才】 @回复

    感觉jetpack真的很大,吃好多内存,狠狠关几个功能,一会儿速度嗖嗖地上去了。

  4. 我要网赚
    我要网赚 【状元】 @回复

    我的网站很慢,怎么办?

  5. 我爱动感单车网
    我爱动感单车网 【尚书】 @回复

    [微笑] 和这的很多朋友一样,我一直来使用的也是插件法,简单、便捷从来都是我的最爱!

  6. 龙笑天
    龙笑天 【状元】 @回复

    发现一个非常好的功能!此分页文章里的“阅读全文”按钮功能,是怎么实现的?期待分享啊!!! [可怜] [可怜] [可怜]

    • boke112导航
      boke112导航【村长】2016-06-29 08:59  回复

      @龙笑天[流汗] 本站早已分享有这个功能了,具体请看《如何在WordPress文章分页中添加【阅读全文】按钮》http://boke112.com/3177.html

      • 龙笑天
        龙笑天 【状元】2016-06-29 10:43  回复

        @boke112导航恩,评论以后才发现站内已经有了….收不到贵站的评论回复提醒邮件….

        • boke112导航
          boke112导航【村长】2016-06-29 16:02  回复

          @龙笑天[疑问] 我用QQ、新浪、126邮箱测试,都能正常收到回复邮件提醒

      • 龙笑天
        龙笑天 【状元】2016-06-29 16:03  回复

        @boke112导航终于收到了回复提醒~~

        • boke112导航
          boke112导航【村长】2016-06-29 16:18  回复

          @龙笑天[呲牙] 能收到就好,前阵子收不到应该是跟我用代理发邮件有关

  7. 热腾网
    热腾网 【状元】 @回复

    我的每个站都装着 WP Cleaner 这个插件。自己发布完信息,就清理下数据库。

    • boke112导航
      boke112导航【村长】2016-06-29 09:00  回复

      @热腾网[呲牙] 我也是安装这个插件,不过都是隔段时间才启用,然后清理一下,用完就停用

  8. 刘传鹏博客
    刘传鹏博客 【举人】 @回复

    还是直接用插件的好

  9. 夏天烤洋芋
    夏天烤洋芋 【进士】 @回复

    收藏了。我希望我有时间研究下吧!

  10. 橘子书
    橘子书 【丞相】 @回复

    刚刚从小c那边过来。正奇怪文章怎么那么眼熟。。。

  11. Koolight
    Koolight 【尚书】 @回复

    _encloseme 这个 meta_key 被牛C漏掉了,哈哈,不完美啊!

    • boke112导航
      boke112导航【村长】2016-06-28 10:02  回复

      @Koolight[强] 你们都是高手啊,对于这种数据库我很少涉及,感觉挺高深的

      • Koolight
        Koolight 【尚书】2016-06-28 10:16  回复

        @boke112导航每次写文章,修改文章,更新文章都会产生那种_xxxx的,完全没用的,可放心删除。

        • boke112导航
          boke112导航【村长】2016-06-28 11:14  回复

          @Koolight是的,这种修改文章产生的那种信息确实是垃圾信息,我是直接安装插件,隔段时间就清理一下

  12. 美女视频
    美女视频 【小白】 @回复

    试用看看先

  13. 电脑维修技术
    电脑维修技术 【状元】 @回复

    没有用过它, 不好评论

  14. 你懂的电影
    你懂的电影 【尚书】 @回复

    我基本就没管理过
    看了这篇文章 学习了很多

    • boke112导航
      boke112导航【村长】2016-06-28 10:03  回复

      @你懂的电影我也是,就是安装了一个插件,偶尔清理一下而已

  15. 雅兮网
    雅兮网 【尚书】 @回复

    被这些垃圾信息搞得苦不堪言,特别是博客前期更换主题和插件比较频繁,一大堆冗余信息

    • boke112导航
      boke112导航【村长】2016-06-28 10:05  回复

      @雅兮网有些插件确实会产生很多垃圾信息,所以站点稳定后还是不要乱折腾了

  16. 纯洁博客
    纯洁博客 【状元】 @回复

    我就是用着clean options

  17. 夏日博客
    夏日博客 【进士】 @回复

    wp 会生产许多这样的垃圾数据,不去清理真不行。

    • boke112导航
      boke112导航【村长】2016-06-27 15:49  回复

      @夏日博客我偶尔就用用WP Cleaner插件清理一下而已,其它的就没动

      • 夏日博客
        夏日博客 【进士】2016-06-27 19:57  回复

        @boke112导航有的数据库里面内容就没用,但我还不敢删除。

  18. 孟子非博客
    孟子非博客 【状元】 @回复

    看看,露个脸

  19. 阅读驿站
    阅读驿站 【状元】 @回复

    流量小、可惜

  20. 黑司机
    黑司机 【小白】 @回复

    那个wp clean插件,用过,好像很好

  21. 捌零男人
    捌零男人 【进士】 @回复

    用插件安全点

  22. 演绎法
    演绎法 【进士】 @回复

    应该影响的不是很大吧

  23. 真我风采
    真我风采 【进士】 @回复

    直接搞数据库,还真的不敢。