我有大表,其中我只有插入和选择,所以当这个表的自动真空运行-系统是非常缓慢的。我已关闭特定桌子的自动吸尘器:
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)
我该怎么换这个桌子的自动吸尘器呢??
最佳答案
这里的关键是:
(to prevent wraparound)
这意味着Postgres必须自动真空才能free up transaction identifiers。
您不能完全禁用这种类型的自动真空,但可以通过调整
autovacuum_freeze_max_age
和vacuum_freeze_min_age
参数来降低其频率。关于postgresql - 如何防止Postgres中的表自动清空,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26743732/