Zarządzam dużą (kilkaset koncertów) bazą danych zawierającą tabele z różnymi rolami, niektóre z nich zawierają miliony rekordów. Niektóre tabele otrzymują tylko dużą liczbę wstawek i usunięć, inne kilka wstawek i dużą liczbę aktualizacji.
Baza danych działa na PostgreSQL 8.4 w systemie Debian 6.0 amd64 z 16 gigabajtami pamięci RAM.
Czasami pojawia się pytanie o proces automatycznej próżni na stole, którego wypełnienie zajmuje bardzo dużo czasu (dni). Chcę być w stanie z grubsza określić, ile czasu zajmie dane polecenie próżniowe, aby móc zdecydować, czy je anulować, czy nie. Byłoby też bardzo pomocne, gdyby istniał wskaźnik postępu dla operacji próżniowych postgres.
Edytować:
Nie szukam rozwiązania kuloodpornego. Wystarczy tylko przybliżona wskazówka na temat liczby martwych krotek lub niezbędnych bajtów We / Wy. To naprawdę denerwujące, że nie mam pojęcia, kiedy VACUUM
się skończy.
Widziałem, że pg_catalog.pg_stat_all_tables
ma kolumnę z liczbą martwych krotek. Możliwe jest więc oszacowanie, nawet jeśli oznacza to, że należy wcześniej do ANALYZE
tabeli. Z drugiej strony autovacuum_vacuum_threshold
i autovacuum_vacuum_scale_factor
same ustawienia dowodzą, że sam postgres wie coś o ilości zmian w tabelach i prawdopodobnie oddaje to również w ręce DBA.
Nie jestem pewien, jakie zapytanie uruchomić, ponieważ kiedy uruchamiam VACUUM VERBOSE
, widzę, że przetwarzane są nie tylko tabele, ale również indeksy na nich.