-1

我是使用 posgtresql 的新手,我想在 dead_rows 很高时进行自动清理。

我怎样才能自动做到这一点。

谢谢,

4

1 回答 1

0

您需要确保在 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);
于 2021-01-19T14:44:18.360 回答