Почему не работает автовакуум

Если параметр autovacuum является onи параметр track_counts является on Кроме того - почему это выглядит так, будто автопылесос никогда не работал?

select relname,last_vacuum, last_autovacuum, last_analyze, last_autoanalyze 
from pg_stat_user_tables 
where last_vacuum is not null 
or last_autovacuum is not null;

нет строк...

Какие действия необходимы для его запуска?

Моя версия: PostgreSQL 9.6

1 ответ

Из документов:

Postgres AutoVacuum запустится, когда num_obselete_tuplesпревышает vacuum_threshold.

vacuum_threshold = base_threshold + (scale_factor * num_tuples)

  • base_thresholdзнак равно autovacuum_vacuum_threshold
  • scale_factorзнак равно autovacuum_vacuum_scale_factor
  • num_tuplesможно найти по запросу pg_class
      SELECT relname, reltuples FROM pg_class

Вы должны быть в состоянии использовать цифры выше, чтобы определить, сколько dead_tuplesнеобходимы перед запуском автоочистки.

Вы можете увидеть n_dead_tuplesс:

      SELECT n_dead_tup FROM pg_stat_user_tables where relname = ‘transaction’;

А UPDATEили же DELETEоператор создаст dead_tuple. Вы можете проверить autovacuumнастройки и введите номера, чтобы найти autovacuum thresholdа затем обновите столько строк в вашей таблице, которые должны вызвать демон автоочистки.

Вы можете найти запущенные процессы автоочистки с помощью:

      SELECT query, xact_start, state FROM pg_stat_activity WHERE query LIKE 'autovacuum:%';
Другие вопросы по тегам