不可逆な毎日ブログ

2度と過ごすことのない毎日をつらつらと・・・

不要領域を削除する

vacuumdb -f で不要領域を削除しているが、時間がかかる。
そんなときに、次の記事を見つけた。
PostgreSQL VACUUM FULLせずに不要領域を削除する - Shin x blog


データが肥大化しすぎた時点では、vacuum full はヘビーだ。
早く、おわらんかな。
autovacuum してやる。
いや、8.3 にバージョンアップしたほうがよさそうかな。8.2 なんだけど。


PostgreSQLのトラブルシュートとチューニング — Let's Postgres

HINT: Consider increasing the configuration parameter "max_fsm_pages" to a value over (Z)
少なくとも、(Z)の値までmax_fsm_pagesを引き上げると共に、VACUUM FULL か CLUSTER でテーブルを再編成する必要があります。

現在、引き揚げて、VACUUM FULL 実行中。

このメッセージが出力されていた場合、テーブル中のガベージは回収したものの、その領域を再利用するための管理用メモリが不足しています。慢性的にこの上記のメッセージが出力される場合、テーブルがスカスカになり、データベースが肥大化します。

おっしゃるとおりです。orz

Total free space (including removable row versions) is 31475974144 bytes.

あまりに酷すぎる。31GB ...

There were 154193174 unused item pointers.
Total free space (including removable row versions) is 42777901212 bytes.
5311836 pages are or will become empty, including 295746 at the end of the table.

42GB ... これが完了すれば、お掃除完了。
cron で回していても、確認しなきゃなぁ。



良く読め。