【问题标题】:What is autovacuum_vacuum_cost_delay in autovacuum in PostgreSQL?PostgreSQL 中的 autovacuum 中的 autovacuum_vacuum_cost_delay 是什么?
【发布时间】:2020-08-31 12:59:29
【问题描述】:

我正在尝试使用配置文件中的以下配置参数来调整 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 的作用。我在谷歌上搜索了很多,但没有得到足够好的理解。

【问题讨论】:

  • 这有帮助吗? percona.com/blog/2018/08/10/…
  • @a_horse_with_no_name 它说“autovacuum_vacuum_cost_delay:当清理达到 autovacuum_vacuum_cost_limit 成本时,autovacuum 将休眠这么多毫秒。”并且“autovacuum_vacuum_cost_limit”表示 autovacuum 可以达到的总成本限制(由所有 autovacuum 作业组合)。你能帮我理解“autovacuum_vacuum_cost_limit”吗?

标签: postgresql database-administration autovacuum


【解决方案1】:

The documentation 指的是vacuum_cost_delay,它表示:

超过成本限制时进程将休眠的时间量。

这是一个减慢自动清理速度的功能。每当一个 autovacuum worker 工作时(删除一个元组,读取一个块,......),它都会收集工作点。一旦这些点超过autovacuum_vacuum_cost_limit(默认为200),它就会暂停 autovacuum_vacuum_cost_delay.

原因是VACUUM占用资源较多,所以默认放慢,希望不影响正常运行。但是,如果 autovacuum 太慢,您最终可能会得到臃肿的表。

【讨论】:

  • 太好了,所以使用 autovacuum_vacuum_cost_delay = 0 可以用于大型数据库吗?
  • 是的 - 它会在 autovacuum 期间产生更多负载,但工作会更快完成。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-01-27
  • 2019-12-10
  • 1970-01-01
  • 2021-02-27
  • 2018-05-14
  • 2021-09-09
  • 1970-01-01
相关资源
最近更新 更多