{"Entry":{"collection":"guc","key":"autovacuum_vacuum_scale_factor","name":"autovacuum_vacuum_scale_factor","aliases":[],"metadata":{"baseline":false,"boot_human":"Not specified","boot_val":null,"category":"Vacuuming / Automatic Vacuuming","category_zh":"","changed_in":["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.3","status":"changed","to":"8.4"},{"documentation_changed":true,"fields":{},"from":"9.4","status":"changed","to":"9.5"},{"documentation_changed":false,"fields":{"category":{"from":"Autovacuum","to":"Vacuuming / Automatic Vacuuming"}},"from":"17","status":"changed","to":"18"}],"content_hash":"090a9716c587572be3ea7c6e8d1f94aaf0ef1e2c74888c9d269f10bdcc763841","context":"","default_changed_in":[],"default_history":[{"from":"9.0","to":"19","value":"0.2"}],"derived_content_hash":"ee5f362a0f29d291dfb956dd524c6fef59716d52e412d4bedefe3ade486627c8","documentation_refresh":{"batch":"20261113","original_source_rev":"wiki-repair-20261023:f2f73631dd569266513cf7ff884cbd74707dadaabb6c76570339768b0bbd04a7","versions":{"14":"14.25","15":"15.20","16":"16.16","17":"17.12","18":"18.7","19":"19rc2"}},"editorial":{"advice":{"olap":"For append-and-batch workloads, coordinate the threshold with load cycles and explicit VACUUM/ANALYZE. A low global factor can create unwanted maintenance during bulk jobs.","oltp":"Use lower per-table values on large, update-heavy tables so dead tuples do not accumulate into a large absolute backlog. Validate with table churn and vacuum duration rather than selecting a percentage in isolation.","small":"The upstream default is often adequate for genuinely small tables. Tune exceptions per table; a low cluster-wide value can create frequent tiny vacuums."},"mechanism":["The core trigger is the base threshold plus this factor multiplied by pg_class.reltuples, an approximate row count. In PostgreSQL 18 the result is also capped by autovacuum_vacuum_max_threshold.","This trigger counts tuples made obsolete by UPDATE or DELETE; insert-driven vacuuming has its own threshold and scale factor. Anti-wraparound vacuuming is governed by transaction-age rules and can run independently of this setting.","A table-level autovacuum_vacuum_scale_factor storage parameter overrides the global value, which is often preferable when table sizes and update rates vary widely."],"pitfalls":["A percentage that looks small can still represent millions of dead tuples on a large table.","Lowering the factor globally can create continuous I/O pressure across many tables.","It does not control insert-triggered vacuuming or anti-wraparound vacuuming.","reltuples is an estimate, so the trigger is not an exact dead-row percentage.","Table storage parameters can silently make the global value irrelevant for that table."],"references":[{"title":"PostgreSQL 19 Beta 4: autovacuum_vacuum_scale_factor","url":"https://www.postgresql.org/docs/19/runtime-config-vacuum.html#GUC-AUTOVACUUM-VACUUM-SCALE-FACTOR"},{"title":"PostgreSQL 18: Autovacuum trigger formulas","url":"https://www.postgresql.org/docs/18/routine-vacuuming.html#AUTOVACUUM"},{"title":"PostgreSQL 19 release notes","url":"https://www.postgresql.org/docs/19/release-19.html"}],"related":["autovacuum_vacuum_threshold","autovacuum_vacuum_max_threshold","autovacuum_vacuum_insert_scale_factor","autovacuum_analyze_scale_factor","autovacuum_naptime","autovacuum_freeze_max_age"],"summary":"Controls the table-size-proportional part of the normal autovacuum VACUUM trigger. Lower values make large tables eligible after a smaller fraction of rows becomes obsolete."},"enumvals":[],"first_version":"8.1","group":"Vacuuming","group_slug":"vacuum","imported_at":"2026-09-27T17:57:30.839836+08:00","intro_commit":{},"key":"autovacuum_vacuum_scale_factor","last_version":"20","max_val":"","min_val":"","name":"autovacuum_vacuum_scale_factor","position":33,"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"],"repair_provenance":{"original_source_revision":"english-manuals:5492749b74cde5423375acc86fa30541f4081c00c1bbf12b68aa82de7effdcce","receipt_sha256":"ba691f17f3ccaf0d97b6a32132b4b86e484e55441415a89eda235f2e5af6770c","repair":"wiki-repair-20261023"},"short_desc":"Specifies a fraction of the table size to add to autovacuum_vacuum_threshold when deciding whether to trigger a VACUUM.","short_desc_zh":"","source_rev":"wiki-repair-20261023:f2f73631dd569266513cf7ff884cbd74707dadaabb6c76570339768b0bbd04a7","unit":"","vartype":"real"}},"Definition":{"Collection":"guc","Key":"autovacuum_vacuum_scale_factor","SourceDatabase":"center","Version":"18","SourceTable":"guc","SourceKey":"autovacuum_vacuum_scale_factor","SourceRevision":"wiki-repair-20261023:f2f73631dd569266513cf7ff884cbd74707dadaabb6c76570339768b0bbd04a7","Facts":{"boot_val":"0.2","category":"Vacuuming / Automatic Vacuuming","context":"sighup","description":"Specifies a fraction of the table size to add to autovacuum_vacuum_threshold when deciding whether to trigger a VACUUM. The default is 0.2 (20% of table size). 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.","description_zh":"指定一个表尺寸的分数，在决定是否触发 VACUUM 时将它加到 autovacuum_vacuum_threshold 上。默认值为 0.2（表尺寸的 20%）。该参数只能在 postgresql.conf 文件或在服务器命令行上设置。但是对个别表可以通过修改表存储参数来覆盖该设置。","description_zh_html":"\u003cp\u003e\n        指定一个表尺寸的分数，在决定是否触发 \u003ccode class=\"command\"\u003eVACUUM\u003c/code\u003e 时将它加到 \u003ccode class=\"varname\"\u003eautovacuum_vacuum_threshold\u003c/code\u003e 上。默认值为 \u003ccode class=\"literal\"\u003e0.2\u003c/code\u003e（表尺寸的 20%）。该参数只能在 \u003ccode class=\"filename\"\u003epostgresql.conf\u003c/code\u003e 文件或在服务器命令行上设置。但是对个别表可以通过修改表存储参数来覆盖该设置。\n       \u003c/p\u003e","doc":{"anchor":"GUC-AUTOVACUUM-VACUUM-SCALE-FACTOR","file":"runtime-config-vacuum.html","lang":"en","sha256":"599d3819c5fa60f160ba633df604ee9afd85549ffad2ae2fb0c3132a00d47417","slug":"18"},"doc_html":"\u003cp\u003e\n         Specifies a fraction of the table size to add to\n         \u003ccode class=\"varname\"\u003eautovacuum_vacuum_threshold\u003c/code\u003e\n         when deciding whether to trigger a \u003ccode class=\"command\"\u003eVACUUM\u003c/code\u003e.\n         The default is \u003ccode class=\"literal\"\u003e0.2\u003c/code\u003e (20% of table size).\n         This parameter can only be set in the \u003ccode class=\"filename\"\u003epostgresql.conf\u003c/code\u003e\n         file or on the server command line;\n         but the setting can be overridden for individual tables by\n         changing table storage parameters.\n        \u003c/p\u003e","doc_same_as":"","documentation_revision":{"inputs":[{"file":"runtime-config-vacuum.html","kind":"same-version-reviewed-manual","locale":"en","sha256":"599d3819c5fa60f160ba633df604ee9afd85549ffad2ae2fb0c3132a00d47417","version":"18.7"},{"file":"runtime-config-vacuum.html","kind":"same-version-reviewed-manual","locale":"zh-Hans","sha256":"b835e4b6c446cfdaf673750aba29ba28fc55ef6cc0c531558c1e394fdc05a140","version":"18.7"}],"release":"18.7","runtime_remeasured":false,"source_revision":"pgdoc:b9f0e7232f60f380d642ac9b99226606c254b552"},"documented":true,"enumvals":null,"extra_desc":null,"lang":"en","max_val":"100","metadata_version":"18","min_val":"0","name":"autovacuum_vacuum_scale_factor","short_desc":"Number of tuple updates or deletes prior to vacuum as a fraction of reltuples.","source":"pg-settings-source-snapshot","translation_provenance":{"inputs":[{"kind":"current-pgdoc-translation","path":"/Users/vonng/pgsty/pgdoc/zh/18/html/runtime-config-vacuum.html","sha256":"ea621aa6ed500fc56d21868a21fd313872cec24b86caf4c8f9bdfdc804b8235f"}],"kind":"same-version-pgdoc","locale":"zh-Hans","source_revision":"b1b500221dbe5437cfca004d6b04d3f6e422765d","version":"18"},"unit":null,"vartype":"real","zh_from":"same-version-manual"},"ManualEvidence":{"doc":{"anchor":"GUC-AUTOVACUUM-VACUUM-SCALE-FACTOR","file":"runtime-config-vacuum.html","lang":"en","sha256":"599d3819c5fa60f160ba633df604ee9afd85549ffad2ae2fb0c3132a00d47417","slug":"18"}},"MeasuredEvidence":{"metadata_version":"18"}},"Text":{"Collection":"guc","Key":"autovacuum_vacuum_scale_factor","SourceDatabase":"center","Version":"18","Locale":"en","Title":"autovacuum_vacuum_scale_factor","Summary":"Specifies a fraction of the table size to add to autovacuum_vacuum_threshold when deciding whether to trigger a VACUUM. The default is 0.2 (20% of table size). 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.","BodyHTML":"\u003cp\u003e\n         Specifies a fraction of the table size to add to\n         \u003ccode\u003eautovacuum_vacuum_threshold\u003c/code\u003e\n         when deciding whether to trigger a \u003ccode\u003eVACUUM\u003c/code\u003e.\n         The default is \u003ccode\u003e0.2\u003c/code\u003e (20% of table size).\n         This parameter can only be set in the \u003ccode\u003epostgresql.conf\u003c/code\u003e\n         file or on the server command line;\n         but the setting can be overridden for individual tables by\n         changing table storage parameters.\n        \u003c/p\u003e","SourceRevision":"wiki-repair-20261023:f2f73631dd569266513cf7ff884cbd74707dadaabb6c76570339768b0bbd04a7","ContentHash":"8f9d70f4cfc0b1718c9b4ab213d591055b76bfa2dce00c531e32ca73c5bf7c28","Payload":{"description":"Specifies a fraction of the table size to add to autovacuum_vacuum_threshold when deciding whether to trigger a VACUUM. The default is 0.2 (20% of table size). 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."}},"RequestedLocale":"en","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}
