WordPressでサイトを運営していると、どんどんデータベースが肥大化していく。
この記事を執筆時点で記事IDが既に「1370」に達している。今現在公開済みの記事は57件なのに記事IDの数値はなんとその24倍。

これはリソースの無駄使い以外の何物でもない。このまま放置しておくと、これからもこのペースでデータベースがどんどん肥大化してサイトの表示速度が遅くなることは必然。
「WP-Optimize」というプラグインを利用すればデータベースを簡単に最適化できるのでさっそく対策する。
データベースが肥大化する原因とその副作用
- WordPressで記事を書く際に「下書きとして保存」を実行
- 定期的な自動保存
- 記事のリライト(文面の追加や修正・削除など)
WordPressでは、記事を書く際に上記の3つのタイミングで自動的にリビジョン(過去のバックアップ)が作成されます。
記事データの保守という面では素晴らしい機能なのですが、投稿した記事数が増えてくると驚異のスピードでデータベースが肥大化していきます。
サイトの表示速度がとても重要視されている今、データベースの肥大化はMySQLやMariaDBなどのRDBMS(リレーショナルデータベースマネージメントシステム)の負荷を無駄に増大させ、サイト表示の際のボトルネックとなってしまいます。
というわけで対策をはじめましょう。
対策開始
まず念のためにデータベースをバックアップ
データベースの最適化をおこないますので、その前にデータベースのバックアップを取っておきます。
「UpdraftPlus」や「BackWPup」などのバックアップ用プラグインをインストールして利用するか、phpMyAdminでデータベースを直接丸ごとバックアップしておきましょう。
WP-Optimizeをインストール&有効化
WordPressメニューの「プラグイン」→「新規追加」にて「WP-Optimize」を検索

「WP-Optimize」をインストール&有効化


WP-Optimizeの初期設定
インストールして有効化するとWordPressメニューに「WP-Optimize」が追加されるので「設定」をクリックします。

これが「WP-Optimize」の設定画面です。

これより初期設定を行っていきます。
一般設定
基本的な設定です。

直近2週間ぶんのデータを保持する設定にして、見やすいように管理バーリンクを有効化しました。
Scheduled clean-up settings
スケジュール設定です。ここで設定した項目を定期的に自動実行してくれます。

当方は「Enable scheduled clean-up and optimization (Beta feature)」をチェックして自動クリーンナップ最適化を有効化し、
- スケジュールタイプを選択 (デフォルト: 毎週):毎週
- データベーステーブルの最適化:ON
- 自動リビジョンを削除:ON
- Remove auto-draft posts(自動保存データ削除):ON
という設定を行いました。
- Remove trashed posts(投稿のゴミ箱を削除)
- Remove spam and trashed comments(コメントのスパムとゴミ箱を削除)
- 未承認コメントの削除
- 期限切れの transient オプションを削除
上記の4つはゴミ箱の利用頻度やスパムの多さにより任意で設定してください。
Logging settings
ここでは「WP-Optimize」の活動ログを取るか否か、そのログをどこに保存するかが設定できます。

※今回は特に設定しません。
トラックバックとコメントのアクション
トラックバックやコメントを一括で有効化・無効化できます。

※今回は何もしません。
設定を保存
初期設定が終了したら「設定を保存」ボタンをクリックします。

これでスケジュールが開始され、自動的に「WP-Optimize」が仕事をしてくれます。
データベース最適化を手動で実行する場合
スケジュールを設定したので今後はデータベース最適化を定期的に自動でやってくれますが、テストのために今回は手動でもやっておきます。
「Detabase」をクリックして「最適化」タブを開きます。

最適化前のバックアップに関して
「Take a backup with UpdraftPlus before doing this Follow this link to install UpdraftPlus, to take a backup before optimization」というチェック項目がありますが、これは最適化の前に「UpdraftPlus」プラグインでバックアップを行うか否かの設定です。

「UpdraftPlus」プラグインがインストールされていない場合はチェック出来ませんが、チェック項目の横にある「Follow this link~」から始まるリンクをクリックすると自動的に「UpdraftPlus WordPress Backup Plugin」のインストールが始まりますので、インストール&有効化後にチェックができるようになります。
※当方はphpMyAdminでデータベースのバックアップを行っているのでチェックを入れていませんが、「UpdraftPlus」でバックアップを行う場合はチェックを入れてください。
最適化実行
最適化したい項目にチェックを入れ、「Run all selected optimizations」ボタンをクリックすると最適化が実行されます。(項目の右にある「最適化を実行」ボタンで個別に最適化も可能です。)
今回はテストなので以下の項目にチェックを入れて最適化します。
- データベーステーブルの最適化
- すべての投稿リビジョンをクリーン
- Clean all auto-draft posts(自動保存データ削除)
- Clean all trashed posts(投稿のゴミ箱を削除)
- Remove spam and trashed comments(コメントのスパムとゴミ箱を削除)
【※「!」マークが付いている項目に関しての注意】
「!」のマークがついている項目を最適化する際は以下の警告表示のとおりに事前に必ずデータベースのバックアップを行いましょう。
このアイコンが付いている項目は、より集中的なデータベース操作を実行します。ごくまれに、最適化操作の実行と同時にデータベースサーバーがクラッシュしたり、強制的に電源が切られたりすると、データが破損する可能性があります。最適化する前にバックアップを実行することをお勧めします。
引用:WP-Optimizeの警告表示
それでは手動で最適化を実行します。

最適化が終わりました。

チェックを入れた項目が全てクリーンになっているのが確認できます。
※チェックボタンでの一括最適化がうまくいかない時は、右側の「最適化を実行」ボタンで個別に最適化を行いましょう。
Tablesタブで確認
「Tables」タブで更に詳しくデータベースのテーブルごとの状態を確認することができます。

ここではテーブル単位で「Romove」ボタンによる削除が可能です。
※今回は何もしません。(ここは他のプラグインも関係してくるので上級者以外いじらないほうが良いです。)
まとめ
WordPressのデータベース肥大化を防ぐためには「WP-Optimize」プラグインをインストールしてスケジュールを設定するか、手動で定期的にデータベース最適化を実行。
これを忘れずに行いましょう。
以上で解決です。