經(jīng)常換WP主題刪WP主題,裝插件刪插件很正常,但是簡單的刪除并不徹底,數(shù)據(jù)庫會有殘留,多余的數(shù)據(jù)保留在post_meta表格里,久而久之就成了一堆可觀的垃圾。可使用下面的SQL語句來清除不需要的post
創(chuàng)新互聯(lián)是一家專注于網(wǎng)站設(shè)計、成都網(wǎng)站建設(shè)與策劃設(shè)計,井岡山網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十載,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:井岡山等地區(qū)。井岡山做網(wǎng)站價格咨詢:028-86922220
meta值。有益于加快數(shù)據(jù)庫運行速度,減小數(shù)據(jù)。
處理方法:清理wp_postmeta數(shù)據(jù)表,刪除文章Meta標(biāo)簽,執(zhí)行SQL語句,(建議先備份數(shù)據(jù)庫,以上商法,后進者網(wǎng)絡(luò)均已測試無誤)
DELETE
FROM
wp_postmeta
WHEREmeta_key
=
‘_edit_lock’;
DELETE
FROM
wp_postmeta
WHEREmeta_key
=
‘_edit_last’;
2、徹底刪除WP草稿修訂版本殘留數(shù)據(jù)
后臺編輯文章時,系統(tǒng)會自動保存多個修訂的副本。過多的修訂記錄會加重數(shù)據(jù)庫負擔(dān)造成資源浪費,數(shù)據(jù)庫越來越龐大,增加了數(shù)據(jù)檢索影響頁面的加載時間。
處理方法:清理wp_posts數(shù)據(jù)表,刪除草稿修訂版本,執(zhí)行SQL語句
可以進入phpmyadmin找到相應(yīng)的表手動刪除。
我用的是主機公園的主機,操作如下
一、數(shù)據(jù)庫表清理
1. wordpress數(shù)據(jù)庫表
wp_commentmeta: 用于保存評論的元信息,在將評論放入回收站等操作時會將數(shù)據(jù)放入此表,Akismet等插件也會生成此表的數(shù)據(jù)。此表不太重要
wp_comments: 用于保存評論信息的表
wp_links: 用于保存用戶輸入到Wordpress中的鏈接(通過Link Manager)的表
wp_options: 用于保存Wordpress相關(guān)設(shè)置、參數(shù)的表,里面包括了大量的重要信息
wp_postmeta: 用于保存文章的元信息(meta)的表
wp_posts: 用于保存你所有的文章相關(guān)信息的表,非常的重要。一般它存儲的數(shù)據(jù)是最多的
wp_terms: 文章和鏈接分類以及文章的tag分類可以在表里找到
wp_term_relationships: 日志與wp_terms中的類別與標(biāo)簽聯(lián)合起來共同存儲在wp_terms_relationships表中。類別相關(guān)鏈接也存儲在wp_terms_relationships中
wp_term_taxonomy: 該表格對wp_terms表中的條目分類(類別、鏈接以及標(biāo)簽)進行說明
wp_usermeta : 用于保存用戶元信息(meta)的表
wp_users:用于保存Wordpress使用者的相關(guān)信息的表
2. 清理涉及到的表
更換主題,刪除插件會在將數(shù)據(jù)留在數(shù)據(jù)庫中,在卸載后無法被清理。除此之外,在由于一些操作,會導(dǎo)致數(shù)據(jù)庫的冗余,比如已經(jīng)沒有的評論,不應(yīng)該在評論元數(shù)據(jù)表中有記錄,由于沒有外鍵的約束,這些記錄沒有被刪除,會造成數(shù)據(jù)的冗余。本文的宗旨是刪除掉不必要的數(shù)據(jù)庫內(nèi)容,提高wordpress的效率
在此,主要涉及到一下幾張表:wp_options,wp_posts,wp_postmeta,wp_commentmeta
注意清理之前進行備份
3. wp_options的清理
wp_options 這個數(shù)據(jù)表是wordpress設(shè)置的全局?jǐn)?shù)據(jù),這個表會經(jīng)常有數(shù)據(jù)膨脹。主要原因是:
(1)以前用過的一些插件、主題在刪除之后沒有進行設(shè)置的清理,造成殘留數(shù)據(jù)
(2)占用數(shù)據(jù)的大戶–RSS緩存,后臺的數(shù)據(jù)調(diào)用竟然會放到數(shù)據(jù)庫里面
處理方法:
①網(wǎng)上對RSS處理方法有兩種一個是修改后臺的文件直接不去調(diào)用,這個是我不喜歡的畢竟修改了程序,其實這個很容
易忘記WP升級是太頻繁的哪次更新覆蓋了新文件還是照樣緩存.另外一種就是在配置文件里面填寫define(‘MAGPIE_CACHE_ON’, ’0′); 這個是管用的,添加以后后臺首頁的調(diào)用明顯變慢
②使用插件clean options
③費力但是簡單的清除方法:刪除wp_options表,會刪除一些設(shè)置,需要重新設(shè)置wordpress,推薦新手使用
TRUNCATE TABLE wp_options;
4.wp_posts清理
wordpress的文章有好多:wp_posts表中包括
文章種類:文章、修訂版本、頁面、文章的附件、菜單
其中每種文章又會有很多狀態(tài):繼承、發(fā)布、私有、草稿、自動草稿、回收站中
冗余原因:
(1)在博主寫文章的時候,系統(tǒng)會保存很多的中間狀態(tài),在文章發(fā)布之后其很多的中間狀態(tài)沒有被刪除
解決辦法:
①使用插件:WP Cleaner,使用插件的好處就是有保護機制,無論怎么操作都無法影響已發(fā)布的貼子,請放心使用
②自己動手刪除,數(shù)據(jù)庫中的標(biāo)志刪除文章,注意備份
說明:wp_posts的重要字段含義:
post_type:文章類型,post表示為文章,revision表示為修訂版本,page為頁面,attachment是文章的附件信息,nav_menu_item是菜單。這里我們需要的是文章、頁面、和菜單
post_status:文章狀態(tài),inherit是繼承的附件和文章的附帶信息,publish是已經(jīng)發(fā)布、private是私有的,draft是草稿,auto-draft是自動草稿,trash是在回收站。這里我們需要的是publish的狀態(tài)的
這里我們主要是要 已經(jīng)發(fā)布的文章、頁面和菜單,除此之外的都可以刪除,當(dāng)然可以根據(jù)自己的需求選擇刪除哪些
DELETE FROM wp_posts
WHERE NOT(post_status = ‘publish’ AND post_type IN(‘post’,'nav_menu_item’,’ page’));
③去除WP保存修訂版本的功能
WordPress默認(rèn)的功能并不都是我們想要的,比如修訂版本歷史對于大多數(shù)人來說是無用的雞肋功能。所以我么需要禁止一些博客功能,來達到較為符合個
人要求的博客應(yīng)用。對于高手來說,可以直接修改程序的配置文件,來禁止相關(guān)功能。對于我等程序小白來說還是利用插件是最佳的選擇
推薦中文插件SuperSwitch來關(guān)閉一些我們不需要的博客功能。這個插件可以關(guān)閉自動保存和修訂歷史版本,還可以關(guān)閉博客程序、主題、插件的自動更新。功能非常強大,操作及其簡單。用SuperSwitch禁止了保存修訂版本之后,文章序號就不會斷得太厲害了
5.wp_postmeta清理
wp_postmeta是文章的元信息表,其數(shù)據(jù)是系統(tǒng)或者插件使用
冗余原因:
(1)文章被刪除之后,其在wp_postmeta中的數(shù)據(jù)理應(yīng)被刪除,在系統(tǒng)中多數(shù)情況是系統(tǒng)自動刪除,但是由于人為刪除文章,系統(tǒng)不知道被刪除,就不會刪除wp_postmeta表中的數(shù)據(jù),造成冗余
(2)很多主題、插件沒有做好及時清除的工作
解決辦法:
① 手動刪除
規(guī)矩刪除
刪除文章中不存在文章的元信息
DELETE FROM wp_postmeta WHERE post_id NOT IN (SELECT post_id FROM wp_posts);
安全刪除
刪除_edit_lock和_edit_last條目是安全的,所以這里給出SQL語句
DELETE FROM wp_postmeta WHERE meta_key = ‘_edit_lock’;
DELETE FROM wp_postmeta WHERE meta_key = ‘_edit_last’;
風(fēng)險刪除
除了這兩條還執(zhí)行了一些其他語句由于有些風(fēng)險:自己酌情考慮
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}}’;
特殊插件刪除
postnav插件會記錄每個文章的訪問數(shù),如果不需要,可以刪除
DELETE FROM wp_postmeta WHERE meta_key = ‘views’;
特殊操作刪除
在WordPress的后臺上傳圖片或者附件后會在wp_postmeta中生成_wp_attached_file和_wp_attachment_metadata兩個項,wp_posts也會記錄附件的信息。如果使用FTP工具上傳文件,表中就不會有這些信息
DELETE FROM wp_postmeta WHERE meta_key = ‘_wp_attached_file’;
DELETE FROM wp_postmeta WHERE meta_key = ‘_wp_attachment_metadata’;
潔癖刪除
這幾條條語句執(zhí)行完畢能夠刪除掉95%以上的數(shù)據(jù),算的上是極限優(yōu)化了,最后考慮到這個數(shù)據(jù)表并不是很重要,有潔
凈癖的人可以嘗試清空這個表,當(dāng)然我測試清空表會讓一些原本的數(shù)據(jù)丟失
TRUNCATE TABLE wp_postmeta;
6. wp_commentmeta清理
冗余原因:
(1)評論被刪除之后,其在wp_commentmeta中的數(shù)據(jù)理應(yīng)被刪除,在系統(tǒng)中多數(shù)情況是系統(tǒng)自動刪除,但是由于人為刪除文章,系統(tǒng)不知道被刪除,就不會刪除wp_commentmeta表中的數(shù)據(jù),造成冗余
(2)很多主題、插件沒有做好及時清除的工作
解決辦法:
一下語句去除沒有用的數(shù)據(jù),如果評論中沒有此條評論,那么在wp_commentmeta也沒有意義,好像wordpress在清空回收站的時候會刪除wp_commentmeta相應(yīng)的數(shù)據(jù)。如果不出意外,下面的操作我們應(yīng)該不需要做
DELETE FROM wp_comments WHERE comment_approved = ‘trash’;
DELETE FROM wp_commentmeta WHERE comment_id NOT IN (SELECT comment_id FROM wp_comments);
在wp_commentmeta里面會記錄評論被刪除的時間,這些信息用處不是很大,當(dāng)評論被從回收站刪除之后,這些刪除的時間意義就不是很大,就可以刪除了,所以用下面的語句一樣達到刪除的目的
DELETE FROM wp_commentmeta WHERE meta_key LIKE ‘%trash%’;
如果直接全部刪除wp_commentmeta,影響不會太大,這里面不會涉及重要的數(shù)據(jù)
TRUNCATE TABLE wp_commentmeta
7. 總結(jié)
其實大部分無用的數(shù)據(jù)均在這幾張表中,清理過后應(yīng)該不會又太多的冗余數(shù)據(jù)了。但這里沒有針對特殊插件或主題做數(shù)據(jù)庫清理,有時這些插件和主題會悄悄動了一些數(shù)據(jù)庫表,這樣給清理帶來很大難度,需要看代碼才知道哦
二、數(shù)據(jù)庫表優(yōu)化
原理:數(shù)據(jù)庫優(yōu)化不
涉及數(shù)據(jù)的刪除,是將數(shù)據(jù)庫的表的狀態(tài)調(diào)整好。在使用phpmyadmin時候,或許您會看到數(shù)據(jù)庫表后面有多余xxMB的字樣,這個指的是那些已經(jīng)分配
給當(dāng)前表但是卻沒有使用的空間。這個多余是沒有什么害處的,他不會占用你的空間。當(dāng)刪除一個表的一部分記錄時,這些記錄仍然保持在一個linked
list 中,當(dāng)插入新數(shù)據(jù)時會再次使用這些老紀(jì)錄的位置。所以刪除紀(jì)錄會閑置一些空間造成你說的“多余”
優(yōu)化:
(1)在phpmyadmin手動 優(yōu)化或者修復(fù)表即可
(2)運行SQL:
OPTIMIZE TABLE wp_commentmeta;
OPTIMIZE TABLE wp_comments;
OPTIMIZE TABLE wp_links;
OPTIMIZE TABLE wp_options;
OPTIMIZE TABLE wp_postmeta;
OPTIMIZE TABLE wp_posts;
OPTIMIZE TABLE wp_terms;
OPTIMIZE TABLE wp_term_relationships;
OPTIMIZE TABLE wp_term_taxonomy;
OPTIMIZE TABLE wp_usermeta;
OPTIMIZE TABLE wp_users;
(3)插件:Optimize DB
我是使用SQL語句進行清理與優(yōu)化的,附我的優(yōu)化SQL語句(我的表前綴是wp1):
DELETE FROM wp1_posts WHERE NOT(post_status = ‘publish’ AND post_type IN(‘post’,'nav_menu_item’,’ page’));
DELETE FROM wp1_postmeta WHERE meta_key in (‘_edit_lock’,
‘_edit_last’, ‘_wp_old_slug’, ‘_revision-control’, ‘{{unknown}}’,
‘_wp_attached_file’, ‘_wp_attachment_metadata’);
DELETE FROM wp1_postmeta WHERE post_id NOT IN (SELECT id FROM wp1_posts);
DELETE FROM wp1_comments WHERE comment_approved like ‘%trash%’;
DELETE FROM wp1_commentmeta WHERE comment_id NOT IN (SELECT comment_id FROM wp1_comments);
OPTIMIZE TABLE wp1_commentmeta;
OPTIMIZE TABLE wp1_comments;
OPTIMIZE TABLE wp1_links;
OPTIMIZE TABLE wp1_options;
OPTIMIZE TABLE wp1_postmeta;
OPTIMIZE TABLE wp1_posts;
OPTIMIZE TABLE wp1_terms;
OPTIMIZE TABLE wp1_term_relationships;
OPTIMIZE TABLE wp1_term_taxonomy;
OPTIMIZE TABLE wp1_usermeta;
OPTIMIZE TABLE wp1_users;