maintenance_work_mem

类型: integer
默认: 65536 (64MB)
最低限度: 1024 (1MB)
最大: 2147483647 (2147483647kB)
单元: KB
上下文: user
重新开始: false

指定在维护性操作(例如VACUUMCREATE INDEXALTER TABLE ADD FOREIGN KEY)中使用的 最大的内存量。 如果指定值时没有单位,则以千字节为单位,其默认值是 64 兆字节(64MB)。因为在一个数据库会话中,一个时刻只有一个这样的操作可以被执行,并且一个数据库安装通常不会有太多这样的操作并发执行, 把这个数值设置得比work_mem大很多是安全的。 更大的设置可以改进清理和恢复数据库转储的性能。

注意当自动清理运行时,可能会分配最多达这个内存的autovacuum_max_workers倍,因此要小心不要把该默认值设置得太高。 通过独立地设置autovacuum_work_mem可能会对控制这种情况 有所帮助。

建议 [EN]

Sets the limit for the amount that autovacuum, manual vacuum, bulk index build and other maintenance routines are permitted to use. Setting it to a moderately high value will increase the efficiency of vacuum and other operations. Applications which perform large ETL operations may need to allocate up to 1/4 of RAM to support large bulk vacuums. Note that each autovacuum worker may use this much, so if using multiple autovacuum workers you may want to decrease this value so that they can't claim over 1/8 or 1/4 of available RAM.

条评论