2011/08/08

為 WordPress 資料庫減肥瘦身

WordPress 有些功能看似不錯,
但其實會為資料庫增肥許多,
透過以下幾項的說明,明白如何整理好資料庫,
刪除大量無用的欄位對提高 SQL 語句的執行速度,
以及提升 WordPress 執行速度有很大的好處!


 
1. Revisions:
從 WordPress 2.6 版開始多了一個叫「文章校訂」的功能,
就是文章發表後,再進去編輯,
就會在後台編輯文章下看到校訂的版本,
這在某些寫程式碼的或是多人作業的,還不錯的樣子,
可以臨時要撈回舊版資料或是知道別人改了什麼東西。

但是如果是常對文章內容不是很滿意想要再修改一下的人,
或甚至只是去改個錯字而已,然後就多了一個校訂的版本,
我想根本不會想去看吧!之後修修改改,
備份資料庫時才發現,一堆相似的文章佔用著欄位。

這邊可以在 wp-config.php 裡定義,
WordPress 文章版本設定:
WordPress 預設會幫您儲存舊版的文章與分頁,以便您之後可以恢復到先前的版本。
這功能可關閉,或是指定最大版本數量。
預設為開啟,若要關閉請將它設為 false。
若您想指定指定最大版本數量,請設個整數。

[php]//define('WP_POST_REVISIONS', true );[/php]
改成:
[php]define('WP_POST_REVISIONS', false );[/php]
或是保留最近 3 份校訂版本:
[php]define('WP_POST_REVISIONS', 3 );[/php]
有些 Plugin 也可以取消文章校訂功能,像是 No Revisions
或是 Revision Control 可以選擇保留最近幾份。

 
2. Autosave:
另一個是「自動儲存」的功能,
一樣找到在 wp-config.php 裡定義,
WordPress 自動儲存間隔:
當您編輯文章時 WordPress 使用 Ajax 技術自動地定時幫您儲存文章草稿。
您可更改數值以延長或減少自動儲存的時間間隔。
預設儲存間隔為 60 秒。
[php]//define('AUTOSAVE_INTERVAL', 60 ); // 單位:秒[/php]
改成:
[php]define('AUTOSAVE_INTERVAL', 99999 ); // 單位:秒[/php]
時間愈大就不容易自動儲存囉!
不過這功能可以保留以避免意外的發生,
有一個叫 disable autosave 簡單的 Plugin 也可以取消。

後來用一用,發現這功能還是會在資料表裡留下垃圾,
所以我把以下的砍了,加到 99999 :)
wp_posts 表:
post_titlepost_statuspost_type
自動草稿auto-draft
inheritrevision

不過偶爾還是會在 wp_posts 表找到 自動草稿 ...
一陣子要匯出資料庫備份時可以檢查刪除一下。

 
3. Trash:
最後是一個 WordPress 2.9 增加的 Trash「垃圾桶」功能,
就是刪除文章時會先放到垃圾桶,發現刪錯使可以再救回來,
像 Windows 內建的資源回收筒那樣。

By default it is not possible to directly delete posts, pages and comments - you have to move them to Trash first, and then delete them. This is of course helpful for novice users, but for advanced ones this is only an obstacle.
這段說的好,對於先進這是一個阻礙啊!

可以定義在 wp-config.php 裡,
預設是 30 天,增加:
[php]define('EMPTY_TRASH_DAYS', 0 ); // 單位:天[/php]
這樣就可以停用垃圾筒功能了 :)
或是透過 Plugin: Trash Manager 也可以,
可再刪除時增加一個 'Are you sure?' 確定框。

Codex: 編輯 wp-config.php
http://codex.wordpress.org/Editing_wp-config.php

 
4. Delete Revision:
都取消好後,已儲存的文章並不會被刪除,
還是要到資料庫裡一一檢查有無重複或是多餘的,
你如果有上百篇的文章,
冗餘的校訂文章可能會有上千篇之多!
這將是一個很可怕的數量!
這邊可以透過 plugin: Delete-Revision
找到冗餘的校訂文章,
然後先備份一下再刪除吧!
之後匯出就可以發現你的資料庫減肥瘦身了 :)

 
5. Delete wp_options option_value:
另外如果你常常在安裝 Plugin 和 Theme 做測試,
可能不合用之後刪除,
但其實很多 Plugin 和 Theme 都會在 Database 留下資料,
除非是設計比較完美的...
這些資料保留有些好處,當下次又啟用時可以保留以前的設定,
但大部份廢棄掉的可能再也不會用了!
可以透過 Plugin: WP-Options-Manager, Clean Options
找出那些無關聯的欄位,不過有些欄位的名稱不好判斷,
還是要自己 Google 一下資料,
並且備份好資料庫之後再做刪除就是了。

沒有留言:

張貼留言