pgs2destroyと分散チェックポイント

co-sakaです。こんにちは。


Ludiaのインデックスは、
1234567, 1234567.SEN, 1234567.SEN.l, 1234567.SEN.i, 1234567.SEN.c
の5つのファイルから構成されます。
DROP INDEXにより、1234567という名前のファイルが削除されると、
残り4つのファイルが残ってしまいます。
そこで、pgs2destroy関数を使って、4つのファイルを削除しましょう。
というのが、今までのLudiaでした。

=# DROP INDEX idx;
=# SELECT pgs2destroy();

PostgreSQL8.3からは、少し変わります。
PostgreSQL8.3では、分散チェックポイントが導入されました。
http://journal.mycom.co.jp/special/2007/postgresql/009.html
分散チェックポイントの機能により、コマンド直後にファイルが削除されません。
定期的に走るチェックポイント処理後に、ようやくファイルが削除されます。
このため、DROP INDEXをした直後は、1234567という名前のファイルが残ってしまいます。
残念。pgs2destroy関数が正常に動作しません。
時間を置いてからpgs2destroy関数を実行しましょう。
チェックポイントが走るのを待ってられないよ、という人は、
手動でチェックポイントを走らせましょう。

=# DROP INDEX idx;
=# CHECKPOINT;
=# SELECT pgs2destroy();

現在、pgs2destroy関数が必要となるのは、DROP INDEXのみ。
(Ludia1.3以降では、REINDEX, CLUSTER, TRUNCATE後にpgs2destroy関数を必要としません。)
この事象で困る場面は少ないと思いますが、ご注意を。


# pgs2destroy関数の改善案を思いついた人、コメントください。
# PostgreSQL8.3対応のLudia1.5.0リリースまで、あと少しです。少々お待ちを。