Как предотвратить автоочистку таблицы в Postgres

У меня есть большие таблицы, в которых я только вставляю и выбираю, поэтому, когда работает автоочистка для этих таблиц - система очень тормозит. Я отключил автоочистку для определенных таблиц:

ALTER TABLE ag_event_20141004_20141009  SET (autovacuum_enabled = false, toast.autovacuum_enabled = false);
ALTER TABLE ag_event_20141014_20141019  SET (autovacuum_enabled = false, toast.autovacuum_enabled = false);

После этого (некоторое время спустя) я вижу:

select pid, waiting, xact_start, query_start,query from pg_stat_activity order by query_start;

 18092 | f       | 2014-11-04 22:21:05.95512+03  | 2014-11-04 22:21:05.95512+03  | autovacuum: VACUUM public.ag_event_20141004_20141009 (to prevent wraparound)
 19877 | f       | 2014-11-04 22:22:05.889182+03 | 2014-11-04 22:22:05.889182+03 | autovacuum: VACUUM public.ag_event_20141014_20141019 (to prevent wraparound)

Какую оболочку сделать, чтобы вообще включить автоочистку для этой таблицы??


person clarent    schedule 04.11.2014    source источник


Ответы (1)


Ключ здесь:

(to prevent wraparound)

Это означает, что Postgres должен выполнять автоматическую очистку, чтобы освободить идентификаторы транзакций.

Вы не можете полностью отключить этот тип автоочистки, но вы можете уменьшить его частоту, настроив параметры autovacuum_freeze_max_age и vacuum_freeze_min_age.

person Andomar    schedule 04.11.2014