ワードプレスのデータベースは一般的には1000記事程でアクセス解析プラグインなどを入れていてログがたまっていたとしても最大100MB程が望ましいサイズかと思います。データベースが肥大化しているとサイト速度の低下や、バックアップが不完全になるなど様々な弊害があります。
今回は肥大化してしまったデータベースのサイズの最適化の方法をいくつかご紹介したいと思います。
WordPressのデータベースの無駄なファイルを削除する
データベースの最適化の前に、データベースのバックアップをお取りになる事をお勧めいたします。
スパムコメントを一括削除する
データベースを肥大化させる原因の一つにスパムコメントの大量書き込みがあります。もし、管理画面→コメント にて承認待ちのスパムコメントが大量にある場合は一括でそれらのコメントを削除する方法がございます。
参考記事
WordPress ワードプレス 大量のスパムコメントの一括削除方法と、スパムコメントへの対処方法
投稿のレビジョン(変更履歴)を削除、最適化する
ワードプレスの投稿(記事)は、下書き保存や一定時間ごとに編集履歴が保存されます。投稿のレビジョンがすべての記事で例えば数百たまっていることもあり、こちらを削除することでデータベースの容量を劇的に少なくすることが可能です。
投稿のレビジョンが保存される数を5つまでに制限するには下記のように wp-config.phpに記載します。
define( 'WP_POST_REVISIONS', 5);
次にこれまでたまってしまった投稿のレビジョンを削除していきましょう。
プラグイン Optimize Database after Deleting Revisions はデータベースのレビジョンを一括削除するにはとても便利なプラグインです。
プラグインをインストールされたら管理画面>設定>ツール>Optimize Databese より下記のように設定して保存します。
post → 投稿のレビジョンを削除
page → 固定ページのレビジョンを削除
Delete revisions older than → X日以上経過したレビジョンを削除
Maximum number of – most recent – revisions to keep per post / page → 残す最小のレビジョン数
設定を保存されたら、次にツール>optimize-databaseよりStart Optimizationをクリックして最適化を実行します。
WordPressのWP-OPTIONSテーブルの肥大化を解消する
WP-OPTIONSテーブル(ワードプレスのプレフィックス設定によってはXXXoptions等別名で保存されている場合もあります。)は、様々なワードプレスの設定を書き込んでいるデータベースのテーブルです。こちらのテーブルが巨大化していたら下記のような方法でサイズを小さくしたり最適化することができます。
WP-OPTIONSテーブルの状況を見るには、Adminerというデータベース編集プログラムがとても便利です。利用方法は下記を参考にされてみてください。
参考記事
シンプルで軽いphpMyadminの代替 データベース管理プログラム「Adminer」を使おう
下図は、データベースのWP-OPTIONSテーブルをAdminerで表示している例です。
Data Length → データのサイズです
Index Length → テーブルの牽引(実データと対応する)のサイズです
Rows → 書き込まれているデータの数です
上記の項目で非常に大きなサイズのものがある場合、WP-OPTIONSテーブルを最適化する必要がございます。
_transientレコードを削除する
_transientXXXというレコードがWP-OPTIONSテーブルに蓄積してしまっている場合、こちらを削除することで数十万ものレコードを減らすことができることがあります。
このレコードは様々なプラグインで特定の日時に繰り返し処理をして、その時刻を記録するために使われています。削除してもほとんどの場合問題ありません。
Adminerでデータベースに接続されたら、SQL Commandというリンクをクリックし、
下記のコマンドを入力して「Execute」ボタンを押すことで一括削除することが可能です。
DELETE FROM 'wp_options' WHERE 'option_name' LIKE ('_transient_%');
また、「投稿のレビジョン(変更履歴)を削除、最適化する」でご説明した、プラグインOptimize Database after Deleting Revisionsの設定項目、Delete trashed itemsをチェックして最適化を実行することでも削除することが可能です。
レコード数(記録数)が少ないのにWP-OPTIONSテーブルが巨大化していたら?
レコード数が少ないにもかかわらず、WP-OPTIONSテーブルが数ギガバイトになってしまっているお客様の例がございました。この原因はプラグインによってテーブルに書いたり消したりが毎秒数十回起こっており、そのことによりデータベースにINDEXと呼ばれるデータベースのデータの牽引のみが大量に作られてしまっていることが原因でした。※プラグインは実データを削除しているため、実データのない牽引だけが肥大化してしまっている状況です。
まず、原因となるプラグインを停止します。もし、何らかのログ(アクセスログ、404のログ、ログイン施行ログ等)をとるようなプラグインを利用していたらそのプラグインが原因となっている可能性が高いです。
データベースのたまってしまったINDEX(牽引データ)を削除するには下記のコマンドを実行します。
Adminerでデータベースに接続されたら、SQL Commandというリンクをクリックし、
下記のコマンドを入力して「Execute」ボタンを押すことでINDEXを削除することが可能です。
ALTER TABLE wp_options;
このコマンドはWP-OPTIONSテーブルをミラーコピーして再生成します。このことにより蓄積したINDEXが削除されます。
WordPressでデータベースの肥大化等の問題が起こったら、 ワードプレスドクターがご解決いたします。お気軽にご相談ご依頼ください。