Movable Typeが利用するデータベースをメンテナンスする
突然ですが、Movable Typeを利用して、blogを書かれているみなさまに質問です。
Movable Typeが利用するデータベースのメンテナンスは定期的に行っていますでしょうか?
私は、いままでメンテナンスをしたことがありませんでした(笑)。
今回、たまたま、データベースの状態を確認したところ、意外に大きなデータ容量が消費されていることが確認されました。
なぜなのか、わからなかったので、いろいろ調べてみました。以下に、調査結果を報告いたします。
私がMovable Typeと一緒に利用しているデータベースは、MySQLです。データの確認・操作はphpMyAdminを利用してを行いました。
まず、
Movable Typeのデータを格納しているテーブルのうち、コメントとトラックバックが大きくなっていることがわかりました。迷惑コメントやトラックバックは、逐一、Movable Typeのメニューから削除していたので、こんなに大きな容量にはならないだろうと思い、データをの中身をのぞいてみることにしました。
そこには、消したはずの迷惑コメント、トラックバックのデータが並んでいました。
なぜかと思い、検索してみました。原因は、次の理由によるものだと判明しました。
データ領域の解放操作は、レコードの削除のたびに実施するには重すぎる処理で、
再利用した方が大抵の場合都合が良い。そのため1度使われたデータ領域は解放されずに
再利用の為に保持される。
ですが、phpMyAdminで各コラムのエントリーを削除したのち最適化すると、全領域が解放されることはありませんでしたが、多くの領域を解放することができました。
次に、
オーバーヘッド?なるものが発生していることが確認されました。
ここで、オーバーヘッドについても検索してみました。
データレコードの再編成、削除などを繰り返し行うと、データベース内に無駄な未使用領域ができる。
この領域をオーバーヘッドと呼ぶ。最適化を行うと、無駄に使用している領域が整理され、
オーバーヘッドなくすことができる。
各テーブルについて最適化を行ったところ、多くのオーバーヘッドをなくすことができました。
参考までに、今回のメンテナンスで、データ領域はおよそ1/10になりました。
ご自分で運用しているサーバやレンタルサーバに、Movable Typeをご自身でインストールして利用されている方もいらっしゃるとおもいます。
そのような方々は、データベースのパフォーマンス向上と、データ領域の有効活用のために、定期的にメンテナンスをされてはどうでしょうか?
最後に、
今回、私がおこなったようなメンテナンスを自動で行ってくれるプラグインを見つけましたので紹介しておきます。
ただし、
「このプラグインは、Movable Type 3.3以降で、かつDBエンジンにSQLiteかPostgresを利用している場合にしか使えません。」
とのことです(TT)。
他のデータベースメンテナンス用のプラグインをご存知の方がおりましたら、情報をいただけると幸いです。
よろしくお願いします。