Wordpress

【WordPress】データベース容量が不自然に滅茶苦茶増えてた。原因は何だ?

2023年10月25日

WordPressを使っていると、不測の事態に備えてバックアップを取っている人は多いと思います。
プラグインによるバックアップもいいのですが、人によってはSnapUpを使っている人も多いでしょう。

私の場合はさくらインターネットを利用しているので、バックアップ機能としてSnapUpを利用しています。

SnapUpとは基本的にレンタルサーバーから提供されるサーバーのバックアップやステージング(テスト環境みたいなもの)が出来る便利なものです。
(SnapUpが使えるかはサーバー会社やレンタルサーバーの契約内容により変わりますのでその辺はサーバー会社のHPを参照してください)

私の場合はこのSnapUpによる自動バックアップを1週間に1回行っていたのですが……ふと見てみるとバックアップの作成に失敗していたわけです。

失敗している理由は明白で、データベース容量が1GBを超えた為でした。


なるほど、データベース容量が問題ならデータベース容量を減らせばいいんだな?となるわけですが……
そもそも1GBを超える程一体どこで容量を喰っているのかがわからなかったわけです。

まずどこで容量喰っているのか洗い出し

データベース容量は当然記事数が増えれば増える程、記事の文章量が増えれば増える程、メディアの数が増えれば増える程(※メディアのファイルサイズではありません)、つまりWordPressの内容を充実させればさせるほど容量が増えます。
ですがデータベース容量が1GBを超えるのは余程のことがなければそうあり得ません。
具体的な数字はわかりませんが、恐らく記事数が2万くらいいけば1GBを超えるんじゃないかなと思います。
記事数2万もあれば容量1GBを超えるのは納得はするでしょうが、普通の人はそんなに記事を書いていないでしょうからおかしい!と感じるはずです。

となると容量1GBを超える原因がどこかにあるはずです。

原因その1:記事のリビジョン(記事の保存・編集履歴)

WordPressで記事を書いていると「下書き保存」して中断したり、誤って画面を閉じたりといったことがあると思います。
そんな時に「前の状態を呼び戻したい」ってなった場合に利用するのがリビジョンですね。
「元に戻す」とは異なり、最後に保存した状態に復元出来る機能です。

「記事の一部を消したつもりが必要なところまで消してしまった挙句、後になるまで気づかない」なんて時にリビジョンの履歴から発掘して事なきを得る、なんてことが私はありました。

そんな便利なリビジョンですが、実質的に保存した分だけ記事を作成しているのでリビジョンの数だけ不要な容量が発生していることになります。
そしてすぐ上で便利と言ったばかりですが、リビジョンを頻繁に利用する人はそういないでしょうし、一度完成させた記事のリビジョンなんて利用することはまずないでしょう。
つまり利用しないにも関わらず書いた記事だけ増え続け、消されることのないリビジョンがデータベース容量を圧迫していくことになります。

使用しないリビジョンの削除は「WP-optimize」などによるデータベースを整理するプラグインを利用して他の不要なデータと一緒に削除するといいでしょう。

原因その2:アクセス統計プラグインによるアクセスログ

私の場合、こちらの方が深刻でした。

ブログを書いている人ならアクセス数を気にするでしょう。jetpackでもアクセス数は表示できますが、痒いところに届かないのでアクセス統計のプラグインを別途インストールしている人もいると思います。
このアクセス統計プラグインですが、基本的に「○年○月○日の○時○分○秒に○○の記事にアクセスされた」というデータを1件1件保存しています。
この情報を元に指定期間で一番アクセスがあった記事などを拾い出すわけですね。
私が利用している「Wordpress Popular Post」というプラグインはサイト上に「1週間の人気記事」「今日の人気記事」といった情報を表示できるので大変重宝しています。

……が、上の太字の部分で察せるかもしれませんが、これもやはりアクセスされた回数分容量が増えていくことになります。
しかもこれはリビジョンと異なりリアルタイムで増える為、運営期間が長ければ長いほど、人気ウェブサイトであればあるほど際限なく増え続けます
プラグイン側も容量が増えていくことは把握している為「何日分のデータを保存する(=それより古いものは削除する)」という機能が備わっていますが、標準ではその機能はオフになっていると思います。
(プラグイン作成者側が勝手に何日間保存すればいいでしょ?なんて判断するわけにはいかないから当然ではありますが)

その機能をオンにして、必要な日数分保存するように設定をしておきましょう。あとはプラグインが日数をオーバーした分は勝手に消してくれます。

「Wordpress Popular Post」ではツールタブの真ん中くらいにログ上限とあるのでそこで設定しましょう。ここで設定した日数分は保管し、あとは削除してくれます。

原因その3:削除したプラグインが保有するデータがそのまま残っている

リビジョンも削除した、アクセスログも必要な分だけ残して削除するようにした。それでもデータベース容量がデカすぎる!
となってデータベースの中身を見に行ったわけです。一体どこで容量食ってるんだ、と。
(データベースの説明については割愛します。詳しくない人は閲覧する程度に収めてデータベースをいじらないようにしましょう)
容量とテーブル名を確認していると、見覚えのない名前のデータが保存されていたわけです。しかも大容量。
それはどうやらプラグインのようで調べてみると、それはかなり昔にインストールして、削除済みのプラグインでした。
それも原因その2である「アクセス統計プラグイン」だったためにアクセスログを大量に保存していたのです。

該当プラグインは既に存在しない為ログが増えることはありませんが、削除されることもないためそのまま残り続けていたわけです。これはデータベースの中身を整理するプラグインでも消すことが出来なかったようで見落としがちなケースになると思います。

データベース上から保存されているログを削除してもいいとは思いますが、データベースについて詳しくない方はあくまで確認作業に留めて、
該当プラグインを改めてインストールしてプラグイン上から削除しましょう。

1

トレーナーからの呼び方については地の文ではフルネームが多いので、声に出す際の愛称があればそちらを優先して記載します

-Wordpress
-