WordPressのリビジョン数に上限を設定し、DBをスマートに

データベース肥大化の原因の代表

WordPressを使ってサイトを運営していて、どんどん記事を更新していくとリビジョンが増えます。
そしてデータベースが肥大化します。

対象としては、アクセス数の多い、検索流入による人気記事を日々更新されているようなサイトが当てはまると思います。

特定の記事を書き換え更新することで、リビジョンが保存されます。

WordPressのリビジョンは、基本無制限

デフォルトでは無制限にリビジョンが増えます。
同一の記事を更新すればするほど、データベースが肥大化します。

データベース肥大で困ること

サイトの引っ越しが大変

データベースが肥大化すると、データベースファイルのバックアップサイズが大きくなります。バックアップ、復元などの処理に時間がかかるようになります。
サイトの引っ越しなどの際に、バックアップや復元に処理時間がかかりすぎ、タイムアウトでエラーが発生、うまく引っ越しできない。という問題につながったりします。

記事編集の際に重たい、開けない、保存できない

phpのメモリー設定が少ない場合で、リビジョン数がとても多い記事を編集しようとした場合にメモリ不足で、記事を開くことが出来ない、あるいは保存できないというようなエラーが発生したりします。
また、他の記事に比べ編集時に「とても重たい」と感じます、Elememtorのようなページビルダーツールを使用しているときに感じます。

解決方法

WordPressのリビジョンを管理する定数に値で指示します

WP_POST_REVISIONS

に、値を設定します

設定する方法
wp-config.php 

define('WP_POST_REVISIONS', 5); // 例として5つに制限

のように記述します。

設定例

すべてのリビジョンを保存(初期値)

define( 'WP_POST_REVISIONS', true );
define( 'WP_POST_REVISIONS', -1);

リビジョンを保存しない (各投稿1つの自動保存を除く)

define( 'WP_POST_REVISIONS', false );
define( 'WP_POST_REVISIONS', 0);

指定された数のリビジョン (プラス自動保存1つ) を保存する。古いリビジョンは自動的に削除される。

define( 'WP_POST_REVISIONS', 100 );

リビジョンとデータベース

データベース内の wp_posts テーブルにおける post_type カラムは、各投稿やページがどのタイプのコンテンツであるかを指定します。通常、投稿は “post”、ページは “page” という値を持ちます。
リビジョンも同様に post_type カラムで “revision” として識別されます。