PeriodicVacuumプラグイン

定期的にMovable TypeデータベースのVacuumを実施するプラグイン。

/!\ このプラグインは、Movable Type 3.3以降で、かつDBエンジンにSQLiteかPostgresを利用している場合にしか使えません。

PeriodicVacuum.zip

本ソフトウェアは個人用・商用を問わず無償で提供されています。継続的な開発をご支援くださる方はご寄付をご考慮ください。

更新履歴

  • 0.01 (2006-09-16 13:10:03Z):
    • 公開。

概要

データベースでは一般に、削除したレコードが使用していた領域は、解放されずに再利用されます。なぜそうなっているかと言えば(それには語るには長すぎる物語があるのですが端折って大まかに説明することにすると)、解放操作は他の読み書き操作と排他的に行わなければならないためレコードの削除のたびに実施するには重すぎる処理だからです。また解放せずに残しておいた方が、その領域を続くINSERT操作で流用することによってオーバーヘッドを削減したり、キャッシュの再利用率を低下させずに済んだりする利点もあるからです。

削除したレコードが使用していた領域が解放されずに再利用されるということは、つまり、例えば、トラックバック・コメントスパムを大量に受信した場合、それらを削除してもデータベースファイルのサイズはほとんど変化しないという現象が観測される、ということを意味します。

このことは、特にレンタルサーバなどでSQLiteを使用している場合にはとりわけ問題となり得るでしょう。なぜなら、SQLiteが使用するデータベースファイルのサイズを、多くとも、賃借しているディスク容量以内に抑える必要があるからです。

一方で、データベースファイルの非使用領域の解放操作は、明示的に指示すれば、どのDBエンジンでもおおむね可能です。例えば、SQLiteやPostgresではvacuum命令、MySQLではoptimize table命令が用意されており、これらを実行すれば非使用領域の解放とインデックスの再構成が行われるようになっています。この命令は、データベースに付属するコマンドラインツールなどを使って簡単に実行することができますが、自動化できるのであればそれに越したことはありません。

PeriodicVacuumプラグインは、データベースファイルを小さいまま維持するために、「週に一度」自動的にvacuumコマンドを実行してくれるものです。

使い方

プラグインをインストールするには、パッケージに含まれるPeriodicVacuum.plをMovable Typeのプラグインディレクトリにアップロードもしくはコピーしてください。正しくインストールできていれば、Movable TypeのメインメニューにPeriodicVacuum Pluginが新規にリストアップされます。

以降は、一週間に一度、トラックバックやコメント、エントリーなどが削除されたタイミングで、vacuumが実行されます。

See Also

License

This code is released under the Artistic License. The terms of the Artistic License are described at http://www.perl.com/language/misc/Artistic.html.

Author & Copyright

Copyright 2006, Hirotaka Ogawa (hirotaka.ogawa at gmail.com)