【发布时间】:2021-01-19 14:06:49
【问题描述】:
我是使用 posgtresql 的新手,我想在 dead_rows 很高时进行自动清理。
我怎样才能自动完成。
谢谢,
【问题讨论】:
标签: database postgresql vacuum autovacuum
我是使用 posgtresql 的新手,我想在 dead_rows 很高时进行自动清理。
我怎样才能自动完成。
谢谢,
【问题讨论】:
标签: database postgresql vacuum autovacuum
您需要确保在 postgresql.conf 中将 autovacuum 设置为“on”。然后你会想要调整:
autovacuum_vacuum_scale_factor - 将其设置为 0 到 1 之间的数字,表示需要更改多少表才能触发真空
autovacuum_vacuum_threshold - 将此设置为将触发真空的行更改数。
因此,如果您有一个表将 1,000,000 行,并且您将 autovacuum_vacuum_scale_factor 设置为 0.05 并将 autovacuum_vacuum_threshold 设置为 5000,这意味着表的 5%(50,000 行)+ 5,000 行(总计 55,000)将触发自动真空。这两个都可以在postgresql.conf中调优,但是如果是异常也可以直接在表上设置。
例如
ALTER TABLE mytable
SET (autovacuum_vacuum_scale_factor = 0.05, autovacuum_vacuum_threshold = 5000);
【讨论】: