Re: Disabling vacuum truncate for autovacuum
Fujii Masao <masao.fujii@oss.nttdata.com>
From: Fujii Masao <masao.fujii@oss.nttdata.com>
To: Nathan Bossart <nathandbossart@gmail.com>,
Gurjeet Singh <gurjeet@singh.im>
Cc: Robert Haas <robertmhaas@gmail.com>,
Laurenz Albe <laurenz.albe@cybertec.at>,
Postgres Hackers <pgsql-hackers@postgresql.org>,
Will Storey <will@summercat.com>
Date: 2025-03-05T23:54:59Z
Lists: pgsql-hackers, pgsql-general
On 2025/03/01 3:21, Nathan Bossart wrote: > On Thu, Feb 27, 2025 at 08:29:16PM -0800, Gurjeet Singh wrote: >> On Mon, Jan 27, 2025 at 1:55 AM Laurenz Albe <laurenz.albe@cybertec.at> wrote: >>> I hope it is possible to override the global setting with the "vacuum_truncate" >>> option on an individual table. >> >> Current patch behaviour is that if the autovacuum_vacuum_truncate is false, then >> autovacuum will _not_ truncate any relations. If the parameter's value is true >> (the default), then the relation's reloption will be honored. >> >> A table-owner, or the database-owner, may enable truncation of a table, as they >> may be trying to be nice and return the unused disk space back to the >> OS/filesystem. But if the sysadmin/DBA (who is ultimately responsible for the >> health of the entire db instance, as well as of any replicas of the db >> instance), >> wants to disable truncation across all databases to ensure that the replication >> does not get stuck, then IMHO Postgres should empower the sysadmin to make >> that decision, and override the relation-level setting enabled by the table- >> owner or the database-owner. > > IIUC reloptions with corresponding GUCs typically override the GUC setting, > although autovacuum_enabled is arguably an exception. If setting the GUC > to false overrides the relation-specific settings, it also becomes more > difficult to enable truncation for just a couple of tables, although that > might not be a popular use-case. Furthermore, even if we do want the GUC > to override the reloption, it won't override VACUUM (TRUNCATE). +1 to having the reloption (if specified) override the GUC setting. That is, I think that autovacuum_vacuum_truncate as defining the default behavior for VACUUM truncation, and that the GUC should only apply when neither the TRUNCATE option in VACUUM nor the reloption is set. Regards, -- Fujii Masao Advanced Computing Technology Center Research and Development Headquarters NTT DATA CORPORATION
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Expand comment for isset_offset.
- 7d559c8580f7 18.0 landed
-
Add vacuum_truncate configuration parameter.
- 0164a0f9ee12 18.0 landed