WordPressを利用してウェブサイトを運営する際、多くのユーザーが直面しながらも気づきにくい問題が「リビジョンの蓄積」です。
リビジョン機能は、記事を更新するたびに過去の状態を自動的に保存してくれる非常に便利なバックアップ機能といえます。
しかし、この機能が「無制限」に設定されていると、時間の経過とともにサイトの動作を重くする大きな要因となります。
本記事では、なぜリビジョンが無制限だとパフォーマンスが低下するのか、そのメカニズムと最適な設定方法について詳しく解説します。
WordPressのリビジョン機能がデータベースに与える影響
WordPressのリビジョン機能は、投稿や固定ページを保存するたびに、その時点での内容をデータベースに新しいレコードとして記録します。
ここで重要なのは、リビジョンは差分データではなく、記事の全文をそのままコピーして保存しているという点です。
例えば、5,000文字の記事を1回更新するごとに、データベースには新たに5,000文字分のデータが追加されていきます。
1つの記事に対して30回のリビジョンが生成されれば、それだけで記事30本分のデータ容量を消費することになります。
記事数が増え、運用期間が長くなるほど、このデータ量は指数関数的に増大していくのがリビジョン機能の特性です。
データベーステーブルの肥大化とクエリ速度の低下
WordPressのデータは、MySQLなどのデータベース内にある wp_posts というテーブルに格納されます。
リビジョンが無制限の場合、このテーブルには公開されている記事の数倍、時には数十倍もの「不要なデータ」が蓄積されます。
データベースが肥大化すると、特定の記事を検索したり表示したりするための「クエリ(命令)」の処理に時間がかかるようになります。
特に、インデックスのサイズが大きくなることで、メモリ上に乗り切らなくなったデータへのアクセスが低速化し、サイト全体のレスポンスが悪化する原因となります。
サーバーのストレージとバックアップへの影響
データベースのサイズが大きくなると、サーバーのストレージ容量を圧迫するだけでなく、メンテナンス性にも悪影響を及ぼします。
具体的には、サイトのバックアップを取得する際の時間が大幅に延び、生成されるバックアップファイルのサイズも巨大になります。
いざという時のリストア(復元)作業においても、データベースのインポートに時間がかかるため、ダウンタイムが長引くリスクが生じます。
クラウド環境やレンタルサーバーを利用している場合、バックアップ容量の制限を超過してしまい、追加費用が発生するケースも少なくありません。
なぜリビジョン無制限がパフォーマンスを低下させるのか
パフォーマンスの低下は、単にデータの量が多いからという理由だけではありません。
WordPressの内部構造において、リビジョンは「投稿(post)」の一種として扱われていることが技術的なボトルネックとなります。
wp_postsテーブルの構造的課題
WordPressのシステムは、トップページやカテゴリー一覧を表示する際、常に wp_posts テーブルを参照します。
リビジョンが大量にあると、システムは膨大なレコードの中から「公開中(publish)」のステータスを持つ記事だけをフィルタリングしなければなりません。
レコード数が数万、数十万件に達すると、たとえ適切なインデックスが貼られていても、検索効率は確実に低下します。
これが管理画面の投稿一覧の読み込みが遅くなったり、記事の保存時に「ぐるぐる」と読み込みが止まらなくなったりする一因です。
データベースの断片化(フラグメンテーション)
頻繁にリビジョンが作成され、古いものが削除されるというプロセスが繰り返されると、データベースファイル内でデータの断片化が発生します。
断片化が進むと、データがディスク上のあちこちに散らばって保存されるため、データの読み書き速度(I/Oパフォーマンス)が低下します。
特に、大量のリビジョンを抱えたまま運用を続けると、データベースの最適化コマンドを実行しても、すぐに元の肥大化した状態に戻ってしまいます。
適切なリビジョン保存数の目安
リビジョンは便利な機能であるため、完全に停止するよりも、適切な上限数を設定して運用することが推奨されます。
サイトの規模や更新頻度に応じて、以下の目安を参考に設定を検討してください。
| サイトのタイプ | 推奨されるリビジョン保存数 | 理由 |
|---|---|---|
| 個人ブログ・小規模サイト | 3〜5件 | 誤操作の修正には十分であり、DB負荷を最小限に抑えられるため。 |
| 企業サイト・ニュースメディア | 10件 | 複数人での編集作業が発生し、数世代前の状態に戻す必要があるため。 |
| 長文記事・頻繁にリライトするサイト | 15〜20件 | 構成の大きな変更が多いため、少し多めに履歴を確保する必要があるため。 |
| 大規模ポータルサイト | 5件以下(管理を厳格化) | 記事数が多いため、1記事あたりのリビジョンを絞らないとDBが爆発的に増えるため。 |
多くの場合、過去5回分の履歴があれば、編集中のミスをリカバーするには十分です。
逆に、30件や50件といったリビジョンを残しておく必要性は、一般的な運用ではほとんどありません。
リビジョン数を制限する具体的な設定方法
WordPressのリビジョン制限は、プログラムファイルを直接編集する方法と、プラグインを利用する方法の2種類があります。
wp-config.phpを編集して制限する方法
最も軽量で確実に制限をかける方法は、WordPressの構成ファイルである wp-config.php にコードを追記することです。
サーバー上のルートディレクトリにあるファイルを編集し、以下のコードを require_once(ABSPATH . 'wp-settings.php'); という記述よりも前に追加してください。
/* リビジョンの保存数を5件に制限する */
define('WP_POST_REVISIONS', 5);
もしリビジョン機能を完全に無効化したい場合は、数値を false に書き換えます。
/* リビジョン機能を無効にする */
define('WP_POST_REVISIONS', false);
ただし、リビジョンを false にしても、編集中の一時保存である「自動保存(オートセーブ)」は機能し続けます。
自動保存の間隔を変更したい場合は、以下のコードも併せて記述すると効果的です。
/* 自動保存の間隔を300秒(5分)に変更する(デフォルトは60秒) */
define('AUTOSAVE_INTERVAL', 300);
プラグインを使用して制限する方法
ファイルの編集に不安がある場合や、より視覚的に管理したい場合は、プラグインの利用が適しています。
「WP-Optimize」や「Perfmatters」といった最適化プラグインには、リビジョン数を制限する機能が含まれています。
これらのプラグインを使用すれば、管理画面から保存したい件数を入力するだけで、簡単に設定を反映させることができます。
また、特定のアカウント権限のみリビジョンを許可するといった高度な制御が可能なプラグインも存在します。
蓄積された過去のリビジョンを削除・最適化する
リビジョン数を制限する設定を行っても、過去に作成されたリビジョンデータはデータベース内に残り続けます。
パフォーマンスを改善するためには、設定の変更と同時に、既存の不要なデータをクリーンアップする必要があります。
最適化プラグインによる一括削除
「WP-Optimize」は、データベースのクリーンアップにおいて最も有名なプラグインの一つです。
このプラグインを使えば、ボタン一つで全てのリビジョンを一括削除し、さらにデータベーステーブルの最適化(断片化の解消)を行ってくれます。
定期的なクリーンアップをスケジュール化する機能もあるため、運用の手間を減らすことができます。
SQLコマンドによる手動削除(上級者向け)
プラグインを増やしたくない場合は、phpMyAdminなどからSQLコマンドを直接実行してリビジョンを削除することも可能です。
ただし、データベースの直接操作は失敗するとサイトが表示されなくなるリスクがあるため、必ずバックアップを取得してから行ってください。
/* 全てのリビジョンデータを削除するSQL */
DELETE FROM wp_posts WHERE post_type = 'revision';
このコマンドを実行することで、wp_posts テーブルからリビジョン関連のレコードのみを綺麗に削除できます。
パフォーマンス改善後の変化と注意点
リビジョンの制限とクリーンアップを行うと、多くのサイトで管理画面のレスポンスが向上します。
特に、記事の保存ボタンを押した後の待ち時間が短縮されることを実感できるはずです。
また、サイトの表示速度自体も、データベースクエリの効率化によってわずかに改善される傾向があります。
ただし、リビジョンを極端に少なく設定しすぎると、過去の優れた構成に戻したいと思った際に、データが消えていて後悔する可能性があります。
自分のライティングスタイルに合わせて、「何世代前まで戻る可能性があるか」を基準に数値を決めるのが、パフォーマンスと利便性を両立させるコツです。
まとめ
WordPressのリビジョン機能は強力ですが、無制限のまま放置することはサイトの健全性を損なう要因となります。
データベースの肥大化は、ページの読み込み速度を低下させるだけでなく、将来的なサーバー移転やバックアップ管理にも悪影響を及ぼします。
まずは wp-config.php で保存数を5件から10件程度に制限し、溜まってしまった古いリビジョンをプラグイン等でクリーンアップすることから始めてみてください。
データベースを軽量に保つことは、ユーザーにとって快適なサイト環境を提供するだけでなく、SEOの観点からも非常に重要な施策です。
定期的なメンテナンスを心がけ、常に最適化された状態のWordPressを維持していきましょう。
