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被禁用。