{"Entry":{"collection":"guc","key":"autovacuum_vacuum_cost_delay","name":"autovacuum_vacuum_cost_delay","aliases":[],"metadata":{"baseline":false,"boot_human":"Not specified","boot_val":null,"category":"Vacuuming / Automatic Vacuuming","category_zh":"","changed_in":["12","18"],"changes":[{"documentation_changed":false,"fields":{},"from":"8.0","status":"added","to":"8.1"},{"documentation_changed":true,"fields":{},"from":"8.1","status":"changed","to":"8.2"},{"documentation_changed":true,"fields":{},"from":"8.2","status":"changed","to":"8.3"},{"documentation_changed":true,"fields":{},"from":"8.3","status":"changed","to":"8.4"},{"documentation_changed":true,"fields":{},"from":"9.4","status":"changed","to":"9.5"},{"documentation_changed":true,"fields":{"boot_val":{"from":"20","to":"2"},"vartype":{"from":"integer","to":"real"}},"from":"11","status":"changed","to":"12"},{"documentation_changed":false,"fields":{"category":{"from":"Autovacuum","to":"Vacuuming / Automatic Vacuuming"},"extra_desc":{"from":null,"to":"-1 means use \"vacuum_cost_delay\"."}},"from":"17","status":"changed","to":"18"}],"content_hash":"7a39e115fac21df6359876748c9f5604046efccb519005b854848a44fdc892da","context":"","default_changed_in":["12"],"default_history":[{"from":"9.0","to":"11","value":"20 ms"},{"from":"12","to":"19","value":"2 ms"}],"editorial":{"advice":{"olap":"During post-load windows, a larger budget or shorter delay can improve maintenance throughput, but verify that scans do not starve queries/imports. Failsafe activation means normal pacing already failed.","oltp":"Tune autovacuum_vacuum_cost_delay from autovacuum duration, dead-tuple growth, and foreground I/O latency together. Prefer per-table overrides for hotspots; global throttling must not let cleanup fall permanently behind.","small":"Keep conservative defaults. On slow disks, lowering concurrency or overriding one table is usually more controllable than making the delay arbitrarily large."},"mechanism":["Vacuum cost delay in milliseconds, for autovacuum. A configuration reload applies a new value; existing work already in flight is not retroactively changed.","These values govern cost throttling for autovacuum workers; -1 inherits vacuum_cost_delay or vacuum_cost_limit respectively. With multiple active workers, the autovacuum cost budget is balanced among them, so a per-worker reading is not simply multiplied by concurrency.","Monitor and change autovacuum_vacuum_cost_delay together with vacuum_cost_delay, vacuum_cost_limit, vacuum_cost_page_hit. Validate on the relevant server role and real workload, then use its sighup context to choose session change, reload, or restart; a historical boot default is not the current effective value."],"pitfalls":["Changing the global value while a table storage parameter overrides it.","Treating reltuples and cumulative change statistics as exact real-time counts.","Blaming a threshold without checking long transactions, replication slots, and worker saturation.","Buying short-term quiet by deferring maintenance until wraparound failsafe activates."],"references":[{"title":"PostgreSQL 19 Beta 4: autovacuum_vacuum_cost_delay","url":"https://www.postgresql.org/docs/19/runtime-config-vacuum.html#GUC-AUTOVACUUM-VACUUM-COST-DELAY"},{"title":"PostgreSQL 19 release notes","url":"https://www.postgresql.org/docs/19/release-19.html"}],"related":["vacuum_cost_delay","vacuum_cost_limit","vacuum_cost_page_hit","vacuum_cost_page_miss","vacuum_cost_page_dirty","autovacuum_vacuum_cost_limit"],"summary":"autovacuum_vacuum_cost_delay — Vacuum cost delay in milliseconds, for autovacuum. Observed in PG9.0–19 Beta 4; its last measured boot default is 2 ms in PG19 Beta 4, with sighup context. This is a beta-snapshot fact and can change before PostgreSQL 19 GA."},"enumvals":[],"first_version":"8.1","group":"Vacuuming","group_slug":"vacuum","imported_at":"2026-09-27T17:57:30.817512+08:00","intro_commit":{},"key":"autovacuum_vacuum_cost_delay","last_version":"20","max_val":"","min_val":"","name":"autovacuum_vacuum_cost_delay","position":27,"present_in":["8.1","8.2","8.3","8.4","9.0","9.1","9.2","9.3","9.4","9.5","9.6","10","11","12","13","14","15","16","17","18","19","20"],"short_desc":"Specifies the cost delay value that will be used in automatic VACUUM operations.","short_desc_zh":"","source_rev":"english-manuals:c3152f0b09e94add6e64e314584179d2f2672b5545fc23a86e51437752f63c91","unit":"","vartype":"real"}},"Definition":{"Collection":"guc","Key":"autovacuum_vacuum_cost_delay","SourceDatabase":"center","Version":"18","SourceTable":"guc","SourceKey":"autovacuum_vacuum_cost_delay","SourceRevision":"english-manuals:c3152f0b09e94add6e64e314584179d2f2672b5545fc23a86e51437752f63c91","Facts":{"boot_val":"2","category":"Vacuuming / Automatic Vacuuming","context":"sighup","description":"Specifies the cost delay value that will be used in automatic VACUUM operations. If -1 is specified, the regular vacuum_cost_delay value will be used. If this value is specified without units, it is taken as milliseconds. The default value is 2 milliseconds. This parameter can only be set in the postgresql.conf file or on the server command line; but the setting can be overridden for individual tables by changing table storage parameters.","doc":{"anchor":"GUC-AUTOVACUUM-VACUUM-COST-DELAY","file":"runtime-config-vacuum.html","lang":"en","sha256":"7047f1fa9138b97f1812532f8a905fa7479451dfd64655e029a7d387b20b22e4","slug":"18"},"documented":true,"enumvals":null,"extra_desc":"-1 means use \"vacuum_cost_delay\".","lang":"en","max_val":"100","metadata_version":"18","min_val":"-1","name":"autovacuum_vacuum_cost_delay","short_desc":"Vacuum cost delay in milliseconds, for autovacuum.","source":"pg-settings-source-snapshot","unit":"ms","vartype":"real"},"ManualEvidence":{"doc":{"anchor":"GUC-AUTOVACUUM-VACUUM-COST-DELAY","file":"runtime-config-vacuum.html","lang":"en","sha256":"7047f1fa9138b97f1812532f8a905fa7479451dfd64655e029a7d387b20b22e4","slug":"18"}},"MeasuredEvidence":{"metadata_version":"18"}},"Text":{"Collection":"guc","Key":"autovacuum_vacuum_cost_delay","SourceDatabase":"pgweb","Version":"18","Locale":"zh-Hans","Title":"autovacuum_vacuum_cost_delay","Summary":"","BodyHTML":"\u003cp\u003e指定用于自动\u003ccode\u003eVACUUM\u003c/code\u003e操作中的代价延迟值。如果指定-1，则使用\u003ca href=\"/docs/18/runtime-config-vacuum.html#GUC-VACUUM-COST-DELAY\" rel=\"nofollow\"\u003evacuum_cost_delay\u003c/a\u003e值。如果指定值时没有单位，则以毫秒为单位。默认值为2毫秒。该参数只能在\u003ccode\u003epostgresql.conf\u003c/code\u003e文件或在服务器命令行上设置。但是对个别表可以通过修改表存储参数来覆盖该设置。\u003c/p\u003e","SourceRevision":"2026-09-11@29c86d9","ContentHash":"b5d8942812c552af734d0643d62a6f2e4a62d74545bb5f6f8dca01b21884ac46","Payload":{"carried_from":"","carry_reason":"","doc_html":"\u003cp\u003e指定用于自动\u003ccode class=\"command\"\u003eVACUUM\u003c/code\u003e操作中的代价延迟值。如果指定-1，则使用\u003ca href=\"/docs/18/runtime-config-vacuum.html#GUC-VACUUM-COST-DELAY\"\u003evacuum_cost_delay\u003c/a\u003e值。如果指定值时没有单位，则以毫秒为单位。默认值为2毫秒。该参数只能在\u003ccode class=\"filename\"\u003epostgresql.conf\u003c/code\u003e文件或在服务器命令行上设置。但是对个别表可以通过修改表存储参数来覆盖该设置。\u003c/p\u003e","doc_same_as":""}},"RequestedLocale":"zh-Hans","Fallback":false,"Versions":["10","11","12","13","14","15","16","17","18","19","20","8.1","8.2","8.3","8.4","9.0","9.1","9.2","9.3","9.4","9.5","9.6"],"Locales":["en","zh-Hans"],"Signatures":null,"Spellings":null,"SQLState":null,"Evidence":null}
