WordPress 資料庫瘦身,超高效優化!

當一個WordPress網站用久了,想必資料庫內也記錄了不少的東西,但並不是所有資料都一定需要存在的,再加上WordPress多版本功能的出現,造成資料庫內的無用資料又更多,我們是不是該來對網站資料庫優化一下了呢?基本上,這樣優化的動作可以不用常常處理,大概一年一次應該就很夠了,除非網站大到很誇張、資料庫大到很誇張,才需要立刻清理,否則備份下來的資料庫容量可是很可怕的。

想要優化資料庫,進入phpMyAdmin作業是最快最有效的方式,如果怕說弄錯的話,可以先將資料庫做好備份,在進行SQL的語法,就可以輕鬆搞定。那優化到底是要優化些什麼呢?其實WordPress資料庫會肥主要就是文章內容了,但這是有意義的東西,另外一個會肥的就是附加的資訊、log紀錄檔案,通常這些東西清理一下,可以幫資料庫瘦身三分之一。

接下來,我們會直接提供一些SQL語法,讓各位可以直接對自己網站資料庫進行資料庫的瘦身優化。目前整個網站中,如果你都沒有優化資料庫,那應該就是「多版本文章」所產生的資料,多版本的用途在於如果新版錯誤,我們可以還原到之前的狀態,就跟電腦內的還原點有些類似。但是這些一旦變多,很可能吃垮資料庫,一個網站流量就這麼大,如果每次備份資料都備了一些用不到的東西,這不是浪費了時間也浪費了流量呢?

注意】進行以下動作之前,請您先備分資料庫,否則發生意外就只能哭哭了。

刪除多版本、自動儲存文章

當務之急,就是對WordPress站內的多版本文章、自動儲存文章做一個清理與優化。在這部分香腸推薦大家一個外掛WP-Optimize,這外掛安裝啟用後,勾選一下就可以一口氣清掉網站內無用的多版本文章以及自動儲存文章,同時也可清理為審核、標記為垃圾的留言,最後還可以執行優化語法,節省資料庫的使用空間,此外,搭配停用多版本語法,可以讓網站變得更輕盈。

清理外掛設定

有些外掛安裝後,會在資料庫寫入一些資料,方便未來外掛的使用,相同的,有些佈景也是會將佈景設定檔案寫進資料庫,這些資料均寫入wp_options資料表內。大家若安裝不同的外掛,就會有不同的參數值,目前並沒有一種可根除的方式來刪除這些資料值(因為外掛移除並不表示完全從WordPress移除)。所以我們可以透過Clean Options外掛來幫我們看看wp_options內到底有哪些資料,我們可以透過最簡單的方式機這些資料移除。

刪除無用標籤或分類

在WordPress後台管理中,我們可以進入標籤或是分類管理裡面,查看標籤或是分類相關聯的文章數量,如果出現零的,表示沒有被使用,未來若也用不到,可以將該標籤或分類刪除,以減少不要的資料,也可以避免搜尋引擎爬尋這些頁面。不過須注意,不知道是WordPress統計的問題,有些標籤顯示0,但是點數字進去確有關聯到文章,所以刪除時大家需要多多注意。另外,有些標籤關聯文章顯示0的,很可能文章是在草稿狀態,所以刪除前要先注意一下喔!

WordPress 資料庫瘦身,超有效優化!

刪除WP Postview Plus人數統計

如果你跟香腸一樣,以前有安裝這個在WordPress中最多人使用的瀏覽人次統計外掛,但是後來卻移除掉的使用者,相信你編輯舊文章時,肯定會發現自訂欄位內好像有這些統計數字,那是因為外掛使用了自訂欄位來記錄每一篇文章的人數統計,但是外掛移除後,可能是我們沒卸載完全或者是外掛本身剛好漏掉了,結果才殘存在資料庫中。現在我們可以透過語法來將這些資料移除囉!下面語法會一句查詢,一句刪除,使用者可以先使用查詢,看看資料有沒有錯誤,沒錯的話再進行刪除動作。

查詢機器人瀏覽次數(bot_views)

SELECT * FROM `wp_postmeta` WHERE `meta_key` = 'bot_views'

刪除機器人瀏覽次數

DELETE  FROM `wp_postmeta` WHERE `meta_key` = 'bot_views'

查詢瀏覽人次(views)

SELECT * FROM `wp_postmeta` WHERE `meta_key` = 'views'

刪除瀏覽人次

DELETE FROM `wp_postmeta` WHERE `meta_key` = 'views'

刪除All in One SEO Pack資料

如果有使用過 All in One SEO Pack的使用者,應該不難發現在自訂欄位的部分應該也和WP Post Views Plus相同,也有儲存一些資料,假設有自訂標題、自訂摘要以及標籤的話,外掛移除後,這些資料還是會儲存在那邊,但實際上,WordPress並不會去使用那邊的資料,所以留著就變成沒用的資料了,所以我可以透過以下的方法,把資料清乾淨。

WordPress 資料庫瘦身,超有效優化!

查詢自訂標題欄位資料(title)

SELECT * FROM `wp_postmeta` WHERE `meta_key` = 'title'

刪除自訂標題欄位資料

DELETE FROM `wp_postmeta` WHERE `meta_key` = 'title'

查詢描述欄位資料(description)

SELECT * FROM `wp_postmeta` WHERE `meta_key` = 'description'

刪除描述欄位資料

DELETE FROM `wp_postmeta` WHERE `meta_key` = 'description'

查詢關鍵字欄位資料(keywords)

SELECT * FROM `wp_postmeta` WHERE `meta_key` = 'keywords'

刪除關鍵字欄位資料

DELETE FROM `wp_postmeta` WHERE `meta_key` = 'keywords'

刪除舊的自訂文章名稱

若有用固定網址,並且有改過自訂名稱,那在wp_postmeta資料表內就會有「_wp_old_slug」的資料值,這些只是舊資料的一個備份紀錄,印象中是假設有人輸入了舊的名稱,WordPress會自動導入到新的名稱,只是我在wp_posts內有看到一個guid的欄位,所以搞到最後我也不太確定是哪一個才有公用。不過如果排除導向問題,那其實我們可以把這欄位資料值清理掉的。

查詢舊有名稱( _wp_old_slug)

SELECT * FROM `wp_postmeta` WHERE `meta_key` = '_wp_old_slug'

刪除舊有名稱

DELETE FROM `wp_postmeta` WHERE `meta_key` = '_wp_old_slug'

事實上,網路上還有資料是關於「_edit_last」、「_edit_lock」、「{{unknown}}」這三種的資料清理優化,依序是最後修改、鎖定編輯、未知,這三者比較不清楚其真正用途,所以香腸在此並沒有特別說要清理這些資料,其實這邊兩者清理下去也可以解省很多空間,可是若遇到是要針對文章鎖住或是最後修改查看的話,可能就不適合做清理囉!

解決Akismet 留言審核問題

如果有使用Akismet的人會發現在WordPress後臺可能會看到以下的錯誤訊息:

Akismet 偵測到一個問題。因伺服器或網路問題導致 Akismet 無法檢查111則迴響。它將會被留在審核清單中並於1分鐘內自動重新檢查。

WordPress 資料庫瘦身,超有效優化!

解決方法是參考自WordPress中文指南,文章內提到可以到phypMyAdmin內搜尋,然後將照到的錯誤訊息進行刪除,不過若錯誤資料很多時,我們可以用SQL語法,一句語法直接清乾淨,就不用這麼多步驟囉!下面提供的語法一樣先查詢,先檢查沒發現搜索錯誤的話,再動手刪除這些資料,問題即可解決。

查詢Akismet的錯誤訊息(akismet_error)

SELECT * FROM wp_commentmeta WHERE meta_key = 'akismet_error'

刪除Akismet的錯誤訊息

DELETE FROM wp_commentmeta WHERE meta_key = 'akismet_error'

刪除留言的歷史紀錄

WordPress留言機制中,有一個歷史紀錄,這個東西會記錄我們對該則留言的審核、標記為垃圾或是其他任何動作,可是當時間一久,這些資料其實就是屬於過期的log檔,定期刪除是必要的。刪除這些資料可以清理出一大半的資料庫空間,以下一樣透過SQL語法來進行DB的刪除與優化。教學方法來自殺氣,不過他那邊是一口氣把wp_commentmeta整個資料表內的資料清空(不是刪除)。可是,如果我們擔心有其他資料的話,我們可以只刪除akismet紀錄的部分而已(但其實基本上整張資料表都是Akismet的log)

WordPress 資料庫瘦身,超有效優化!

查詢是否有akismet的紀錄(akismet_%)

SELECT *  FROM `wp_commentmeta` WHERE `meta_key` LIKE 'akismet_%'

刪除和Akismet有關的紀錄

DELETE  FROM `wp_commentmeta` WHERE `meta_key` LIKE 'akismet_%'

基本上優化的部分就到這邊而已,以上有提供的語法,香腸自己都有對香腸炒魷魚進行瘦身的動作。以上方法對於有些人來說,或許不夠使用,因為每個外掛的設計方式不同,我也無法告知大家每一個外掛所使用的自訂欄位是什麼?大家可以自行進入wp_postmeta資料表內查看有哪些特殊的值,可以利用SQL語法來做清理的動作!(不過請小心,下錯條件很可能整個資料庫都被清空)

經過以上的作業,本來資料庫在不壓縮的狀況下,檔案是「22.1MB」,清理後剩「15.9MB」,整整少了6MB,可見得這些log檔案有多麼的可怕。如果你是一個非常愛嘗鮮、使用各式各樣外掛的朋友,那你的資料庫可能還有一些額外掛的設定,比方說外掛自己添加的資料表,那就需要手動刪除了,目前WordPress標準預設只有11張資料表,超過肯定就是外掛的了,如果要刪除,請記得備分囉!