Re: why there is not VACUUM FULL CONCURRENTLY? - Mailing list pgsql-hackers

From Alvaro Herrera
Subject Re: why there is not VACUUM FULL CONCURRENTLY?
Date
Msg-id 202504040733.ysuy5gad55md@alvherre.pgsql
Whole thread Raw
In response to Re: why there is not VACUUM FULL CONCURRENTLY?  (Antonin Houska <ah@cybertec.at>)
Responses Re: why there is not VACUUM FULL CONCURRENTLY?
List pgsql-hackers
On 2025-Apr-01, Antonin Houska wrote:

> Besides that, it occurred to me that 0005 ("Preserve visibility
> information of the concurrent data changes.") will probably introduce
> significant overhead. The problem is that the table we're repacking is
> treated like a catalog, for reorderbuffer.c to generate snapshots that
> we need to replay UPDATE / DELETE commands on the new table.
> 
> contrib/test_decoding can be used to demonstrate the difference
> between ordinary and catalog tables:
> 
> [.. ordinary ..]
> Execution Time: 3521.190 ms
> [.. catalog ..]
> Execution Time: 6561.634 ms

Significant indeed.  Thinking about the scenarios in which I envision
people using REPACK CONCURRENTLY (mostly, cases where very large tables
have accumulated considerable amounts of bloat) and considering the size
of the patch, I think the case for treating it as concurrent-safe is not
credible, at least not at this stage -- not only because of this
performance impact, but also because of the additional code complexity,
which I'm really doubtful we can address at this stage.  I would suggest
to put that patch aside for now, maybe with a doc warning that
"repacking a table would cause visibility information to be lost"; and
then address that aspect later on, after this feature has gone through
some battle-hardening.

-- 
Álvaro Herrera         PostgreSQL Developer  —  https://www.EnterpriseDB.com/
"Las navajas y los monos deben estar siempre distantes"   (Germán Poo)



pgsql-hackers by date:

Previous
From: Bertrand Drouvot
Date:
Subject: Re: Draft for basic NUMA observability
Next
From: Jakub Wartak
Date:
Subject: Re: Draft for basic NUMA observability