问题描述
我正在尝试使用配置文件中的以下配置参数来调整Postgresql服务器:
autovacuum_freeze_max_age = 500000000
autovacuum_max_workers = 6
autovacuum_naptime = '15s'
autovacuum_vacuum_cost_delay = 0
maintenance_work_mem = '10GB'
vacuum_freeze_min_age = 10000000
我想了解autovacuum_vacuum_cost_delay
的作用。我尝试在Google上进行很多搜索,但没有得到足以理解的信息。
解决方法
The documentation是指vacuum_cost_delay
,它表示:
超过成本限制时,进程将进入休眠状态的时间。
这是减慢自动真空的功能。每当自动真空工作者工作时(删除元组,读取块...),它都会收集工作点。一旦这些点超过autovacuum_vacuum_cost_limit
(默认为200),就会暂停
autovacuum_vacuum_cost_limit
。
原因是VACUUM
使用了大量资源,因此默认情况下会降低它的速度,以免对正常操作造成干扰。但是,如果自动清理速度太慢,则可能导致表膨胀。