Re: why there is not VACUUM FULL CONCURRENTLY?

From: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
To: Antonin Houska <ah(at)cybertec(dot)at>
Cc: Marcos Pegoraro <marcos(at)f10(dot)com(dot)br>, Michael Banck <mbanck(at)gmx(dot)net>, Junwang Zhao <zhjwpku(at)gmail(dot)com>, Kirill Reshke <reshkekirill(at)gmail(dot)com>, Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com>, Michael Paquier <michael(at)paquier(dot)xyz>, PostgreSQL Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: why there is not VACUUM FULL CONCURRENTLY?
Date: 2025-03-20 17:32:02
Message-ID: 202503201732.xyyic3z35zis@alvherre.pgsql
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

I rebased this patch series; here's v09. No substantive changes from v08.
I made sure the tree still compiles after each commit.

I did look at 0002 again (and renamed the members of the new struct by
adding a p_ prefix, as well as fixing the references to the old names
that were in a few code comments here and there; I don't think these
changes are "substantive"), and ended up wondering why do we need that
change in the first place. According to the comment where the progress
restore function is called, it's because reorderbuffer.c uses a
subtransaction internally. But I went to look at reorderbuffer.c and
noticed that the subtransaction is only used "when using the SQL
function interface, because that creates a transaction already". So
maybe we should look into making REPACK use reorderbuffer without having
to open a transaction block.

I didn't do anything about that, in particular I didn't actually try to
run REPACK to see whether the transaction is needed. I'll be looking at
that in the next couple of days.

--
Álvaro Herrera PostgreSQL Developer — https://www.EnterpriseDB.com/
"Once again, thank you and all of the developers for your hard work on
PostgreSQL. This is by far the most pleasant management experience of
any database I've worked on." (Dan Harris)
http://archives.postgresql.org/pgsql-performance/2006-04/msg00247.php

Attachment Content-Type Size
v09-0001-Add-REPACK-command.patch text/x-diff 89.8 KB
v09-0002-Move-progress-related-fields-from-PgBackendStatu.patch text/x-diff 9.9 KB
v09-0003-Move-conversion-of-a-historic-to-MVCC-snapshot-t.patch text/x-diff 5.4 KB
v09-0004-Add-CONCURRENTLY-option-to-REPACK-command.patch text/x-diff 166.8 KB
v09-0005-Preserve-visibility-information-of-the-concurren.patch text/x-diff 39.6 KB
v09-0006-Add-regression-tests.patch text/x-diff 10.6 KB
v09-0007-Introduce-repack_max_xlock_time-configuration-va.patch text/x-diff 20.4 KB
v09-0008-Enable-logical-decoding-transiently-only-for-REP.patch text/x-diff 24.2 KB
v09-0009-Call-logical_rewrite_heap_tuple-when-applying-co.patch text/x-diff 26.1 KB

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Robert Haas 2025-03-20 17:45:59 Re: why there is not VACUUM FULL CONCURRENTLY?
Previous Message David E. Wheeler 2025-03-20 17:20:30 Re: Support "make check" for PGXS extensions