{"Entry":{"collection":"guc","key":"autovacuum_vacuum_insert_threshold","name":"autovacuum_vacuum_insert_threshold","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":"12","status":"added","to":"13"},{"documentation_changed":false,"fields":{"category":{"from":"Autovacuum","to":"Vacuuming / Automatic Vacuuming"},"extra_desc":{"from":null,"to":"-1 disables insert vacuums."},"short_desc":{"from":"Minimum number of tuple inserts prior to vacuum, or -1 to disable insert vacuums.","to":"Minimum number of tuple inserts prior to vacuum."}},"from":"17","status":"changed","to":"18"}],"content_hash":"859bc55d9b570e8e8b365ef6d1b9736d97fdf9e83cd196473965ab95ec480913","context":"","default_changed_in":[],"default_history":[{"from":"13","to":"19","value":"1000"}],"editorial":{"advice":{"olap":"Run explicit ANALYZE/VACUUM after bulk loads instead of waiting only for proportional triggers; plan freezing and visibility-map advancement separately for append-only partitions.","oltp":"Tune autovacuum_vacuum_insert_threshold from table size, change rate, and maintenance SLA, using per-table thresholds for large/hot relations. Observe trigger intervals, dead tuples, and ANALYZE/VACUUM duration.","small":"Start with upstream. Fixed thresholds dominate on small tables; after changes, confirm worker and I/O headroom."},"mechanism":["Minimum number of tuple inserts prior to vacuum. A configuration reload applies a new value; existing work already in flight is not retroactively changed.","For insert-heavy tables the trigger is the insert threshold plus insert scale factor times reltuples times the fraction not all-frozen. Such vacuuming can advance visibility/freeze state even without dead tuples and reduce later aggressive-vacuum work.","Monitor and change autovacuum_vacuum_insert_threshold together with autovacuum_vacuum_threshold, autovacuum_vacuum_scale_factor, autovacuum_vacuum_max_threshold. 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_insert_threshold","url":"https://www.postgresql.org/docs/19/runtime-config-vacuum.html#GUC-AUTOVACUUM-VACUUM-INSERT-THRESHOLD"},{"title":"PostgreSQL 19 release notes","url":"https://www.postgresql.org/docs/19/release-19.html"}],"related":["autovacuum_vacuum_threshold","autovacuum_vacuum_scale_factor","autovacuum_vacuum_max_threshold","autovacuum_vacuum_insert_scale_factor","autovacuum","autovacuum_analyze_scale_factor"],"summary":"autovacuum_vacuum_insert_threshold sets the minimum number of tuple inserts prior to vacuum. It is a sighup setting present in PG13–18; the latest recorded boot default is 1000."},"enumvals":[],"first_version":"13","group":"Vacuuming","group_slug":"vacuum","imported_at":"2026-09-27T17:57:30.833803+08:00","intro_commit":{"authored_at":"2020-03-28T19:20:12+13:00","discussion":["https://postgr.es/m/CAC8Q8t%2Bj36G_bLF%3D%2B0iMo6jGNWnLnWb1tujXuJr-%2Bx8ZCCTqoQ%40mail.gmail.com"],"hash":"b07642dbcd8d5de05f0ee1dbb72dd6760dd30436","subject":"Trigger autovacuum based on number of INSERTs","url":"https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=b07642dbcd8d5de05f0ee1dbb72dd6760dd30436"},"key":"autovacuum_vacuum_insert_threshold","last_version":"20","max_val":"","min_val":"","name":"autovacuum_vacuum_insert_threshold","position":31,"present_in":["13","14","15","16","17","18","19","20"],"short_desc":"Specifies the number of inserted tuples needed to trigger a VACUUM in any one table.","short_desc_zh":"","source_rev":"english-manuals:9c3f9d9fbf2e15fa70283f9b915da475f42736c3c716d77e0508cb4f556cddf2","unit":"","vartype":"integer"}},"Definition":{"Collection":"guc","Key":"autovacuum_vacuum_insert_threshold","SourceDatabase":"center","Version":"18","SourceTable":"guc","SourceKey":"autovacuum_vacuum_insert_threshold","SourceRevision":"english-manuals:9c3f9d9fbf2e15fa70283f9b915da475f42736c3c716d77e0508cb4f556cddf2","Facts":{"boot_val":"1000","category":"Vacuuming / Automatic Vacuuming","context":"sighup","description":"Specifies the number of inserted tuples needed to trigger a VACUUM in any one table. The default is 1000 tuples. If -1 is specified, autovacuum will not trigger a VACUUM operation on any tables based on the number of inserts. 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-INSERT-THRESHOLD","file":"runtime-config-vacuum.html","lang":"en","sha256":"7047f1fa9138b97f1812532f8a905fa7479451dfd64655e029a7d387b20b22e4","slug":"18"},"documented":true,"enumvals":null,"extra_desc":"-1 disables insert vacuums.","lang":"en","max_val":"2147483647","metadata_version":"18","min_val":"-1","name":"autovacuum_vacuum_insert_threshold","short_desc":"Minimum number of tuple inserts prior to vacuum.","source":"pg-settings-source-snapshot","unit":null,"vartype":"integer"},"ManualEvidence":{"doc":{"anchor":"GUC-AUTOVACUUM-VACUUM-INSERT-THRESHOLD","file":"runtime-config-vacuum.html","lang":"en","sha256":"7047f1fa9138b97f1812532f8a905fa7479451dfd64655e029a7d387b20b22e4","slug":"18"}},"MeasuredEvidence":{"metadata_version":"18"}},"Text":{"Collection":"guc","Key":"autovacuum_vacuum_insert_threshold","SourceDatabase":"center","Version":"18","Locale":"en","Title":"autovacuum_vacuum_insert_threshold","Summary":"Specifies the number of inserted tuples needed to trigger a VACUUM in any one table. The default is 1000 tuples. If -1 is specified, autovacuum will not trigger a VACUUM operation on any tables based on the number of inserts. 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\u003eSpecifies the number of inserted tuples needed to trigger a VACUUM in any one table. The default is 1000 tuples. If -1 is specified, autovacuum will not trigger a VACUUM operation on any tables based on the number of inserts. 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.\u003c/p\u003e","SourceRevision":"english-manuals:9c3f9d9fbf2e15fa70283f9b915da475f42736c3c716d77e0508cb4f556cddf2","ContentHash":"ea1cb8b1f848e03eaa7f3db9265fa4ec938a45bcd25b0a7d653d3464dee0758b","Payload":{"description":"Specifies the number of inserted tuples needed to trigger a VACUUM in any one table. The default is 1000 tuples. If -1 is specified, autovacuum will not trigger a VACUUM operation on any tables based on the number of inserts. 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":"zh-Hans","Fallback":true,"Versions":["13","14","15","16","17","18","19","20"],"Locales":["en"],"Signatures":null,"Spellings":null,"SQLState":null,"Evidence":null}
