PostgresQL Automatyzacja VACUUM FULL dla rozdętych tabel

Mamy produkt korzystający z serwera baz danych PostgreSQL, który jest wdrażany u kilkuset klientów. Niektórzy z nich się zebralidziesiątki gigabajtów danych na przestrzeni lat. W następnej wersji wprowadzimy zautomatyzowane procedury czyszczenia, które będą stopniowo archiwizowane iKASOWAĆ stare rekordy podczas nocnych zadań wsadowych.

Jeśli poprawnie rozumiem,autovacuum rozpocznie i przeanalizuje oraz zreorganizuje krotki, więc wydajność będzie taka, jak wtedy, gdy istniało mniej rekordów.

Rzeczywiste miejsce na dysku nie zostanie zwolnione, jeśli dobrze rozumiem, ponieważ dzieje się to tylko za pomocąVACUUM FULLi to nie jest spowodowane przezautovacuum.

Myślałem o automatycznym procesie, który to zrobił.

Znalazłem wzdęty widok używany przez nagios check_postgres nahttp://wiki.postgresql.org/wiki/Show_database_bloat.

Czy ten widok jest dobry? Czy mam rację, gdy rozumiem, że jeśliunosić się jest> 2, może użyć VACUUM FULL? A jeśliibloat jest za wysoka, może użyć REINDEX?

Wszelkie komentarze dotyczące następującego zadania, które mają być wykonywane jako codzienne zadanie wsadowe?

vacuumdb -Z mydatabase #vacuum z analizą tylkoselect tablename from bloatview order by tbloat desc limit 1vacuumdb -f -t tablename mydatabaseselect tablename, iname from bloatview order by ibloat desc limit 1reindexdb -t tablename -i iname mydatabase

Oczywiście, nadal muszę zawinąć go w ładny skrypt perla w crontab (używamy ubuntu 12), czy postgresql ma jakiś harmonogram, z którym mogę to zrobić?

A może ta całkowita przesada i czy istnieje znacznie prostsza procedura?

questionAnswers(2)

yourAnswerToTheQuestion