Vacuum简介


Autovacuum


PGServer每一分钟(autovacuum_naptime)检查一次是否需要进行vacuum。

如果需要进行,则发起三个(autovacuum_max_workers)worker进程。


如何判断是否需要进行vacuum?

如果

一个表的数据更改量达到了总数据量的20%(autovacuum_vacuum_scale_factor);

并且至少50行数据(autovacuum_vacuum_threshold);

则判断为需要进行vacuum。

在PG 13之前,如果一个表只有insert,不会触发autovacuum,但是从13开始,当插入超过1000(autovacuum_vacuum_insert_threshold)行,会触发vacuum。



对于优化统计信息收集来说,是相同的机制,


如果

一个表的数据更改量达到了总数据量的10%(autovacuum_analyze_scale_factor);

并且至少50行数据(autovacuum_analyze_threshold);

则判断为需要进行统计数据收集。


理想情况下,正常VACUUM操作同时也会收集新的统计信息。


如果一个表中存在未冻结的行的XID生存时间大于autovacuum_freeze_max_age,都会触发autovacuum,即使autovacuum被禁用。






  • No labels