デジタリストBlog

« 前の記事 | トップ | 次の記事 »

2008年10月18日

MovableTypeの迷惑コメント・迷惑pingを削除してMySQLを整理整頓

迷惑コメント、迷惑ping(迷惑トラックバック)を受け続けているとMovableTypeのデータベースは肥大化する。このため、時々はMySQLデータベースの整理整頓を行ってやろう。データベース容量を抑え、ひいてはMovableTypeの動作軽量化にも繋がる。もちろん、SQLiteやPostgreSQLでもデータベースの整理整頓は大切だ。

MovableTypeは世界中に普及しているおかげで、当然スパムの攻撃対象にもなる。このブログの場合は迷惑コメントが月に約2500件、迷惑トラックバックが月に1000件来る。毎月数件は残念ながらフィルターをすり抜けてブログに表示されてしまうが、99.9%程度はMovableTypeのスパムフィルター(SpamLookupプラグイン、BanASCIIプラグイン)で排除しているのでブログには表示されない。BanASCIIプラグインは英数字しか含まないスパムを判定するフィルターで、これで海外からの大抵のスパムを排除できる。SpamLookupプラグインでブラックリストの参照先を登録しておくとこのブラックリストに掲載されているIPからの投稿をスパムと判定できる(アドレスチェックに「bsb.spamlookup.net, niku.2ch.net,」、ドメインチェックに「bsb.spamlookup.net, sc.surbl.org, rbl.bulkfeeds.jp」などを登録しておくと良い)。

これでスパムは迷惑フォルダーに放り込まれるし、迷惑フォルダーはワンクリックで中身を空に出来るのだが、中身を空にしたところでMovableTypeのコンソールパネルで表示されないだけでMySQL内にはデータとして保存されている(phpMyAdminで確認できる)。これは、「データ領域の解放操作は、レコードの削除のたびに実施するには重すぎる処理で、再利用した方が大抵の場合都合が良い。そのため1度使われたデータ領域は解放されずに再利用の為に保持される。」ということと「データレコードの再編成、削除などを繰り返し行うと、データベース内に無駄な未使用領域ができる(オーバーヘッド)」というデータベースの仕様によるものである。

そこで、MovableTypeの迷惑コメント、迷惑pingをコンソールパネルで「空にする」で削除してみてから、phpMyAdminにログインしてみよう。オーバーヘッド領域に何MBのデータ領域が使われているかを確認することが出来る(図のオレンジ枠部分)。特に、mt_commentとmt_tbpingのオーバーヘッド領域は過去に削除されたスパムがため込まれている部分だ(図の紫枠部分)。オーバーヘッド領域を無くし最適化するために、最適化したいものにチェックを入れて、「チェックしたものを」の「テーブルを最適化する」を選択しよう(図の緑枠部分)。おそらく数秒も待たずにオーバーヘッド領域が無くなり、同時にデータベースの容量も小さくなることだろう。MovableTypeのログも不必要であれば削除しても動作には問題ない。

ちなみにこのMovableType 3.37では2004年MovableType 2.661からの4年間の運用のうちにデータベースの容量は肥大を続け、2008年9月のSQLiteのサイズは31MB。これをMySQLに変更したところ17MBまで減少したが、さらに貯まりに貯まっていた数万件のスパムをMovableTypeの迷惑コメントフォルダから一括削除したところ7.5MBまで容量を圧縮。さらにさらに、オーバーヘッド領域の最適化を行って容量は5.8MBまでに抑えることが出来た。

- Movable Typeが利用するデータベースをメンテナンスする
- 「MySQL」データベースの容量削減

Posted at 2008/10/18(土曜日)19:08

この記事を読んだ人はこんな記事も読んでいます

« 前の記事 | トップ | 次の記事 »

« 前の記事 | トップ | 次の記事 »