| From: | Antonin Houska <ah(at)cybertec(dot)at> |
|---|---|
| To: | Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org> |
| Cc: | Matthias van de Meent <boekewurm+postgres(at)gmail(dot)com>, Mihail Nikalayeu <mihailnikalayeu(at)gmail(dot)com>, Pg Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>, Robert Treat <rob(at)xzilla(dot)net> |
| Subject: | Re: Adding REPACK [concurrently] |
| Date: | 2026-03-17 19:57:06 |
| Message-ID: | 91049.1773777426@localhost |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-hackers |
Antonin Houska <ah(at)cybertec(dot)at> wrote:
> Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org> wrote:
>
> > On 2026-Mar-16, Matthias van de Meent wrote:
> >
> > > On Mon, 16 Mar 2026 at 21:15, Antonin Houska <ah(at)cybertec(dot)at> wrote:
> >
> > > > Anyway (fortunately?), the concurrent use of slots by REPACK is limited
> > > > because, during the initialization of logical decoding, the backend needs to
> > > > wait for all the transactions having XID assigned to finish, and these include
> > > > the already running REPACK commands. See SnapBuildWaitSnapshot() and callers
> > > > if you're interested in details.
> > >
> > > Huh, so would you be able to run more than one Repack Concurrently in
> > > the same database? ISTM that would not be possible, apart from
> > > possibly a mechanism comparable to the SAFE_IN_IC flag (to not wait on
> > > those backends).
> >
> > Yeah, this sounds kind of bad news ...
>
> Admittedly, it is a problem. I tried to address this in pg_squeeze by
> pre-allocating slots when it's clear (due to scheduling) that more than one
> table needs to be processed. This was an effort to achieve the best possible
> performance rather than a response to complaints of users about low
> throughput. Nevertheless, I'm glad I happened to mention it before it's too
> late.
>
> Regarding solution, a flag like SAFE_IN_IC alone does not help. The
> information that particular transaction is used by REPACK (and therefore it
> does not have to be decoded) would need to be propagated to the
> xl_running_xacts WAL record too.
0007 in the next version tries to implement that.
--
Antonin Houska
Web: https://www.cybertec-postgresql.com
| Attachment | Content-Type | Size |
|---|---|---|
| v42-0001-Refactor-index_concurrently_create_copy-for-use-with.patch | text/x-diff | 8.7 KB |
| v42-0002-Do-not-dereference-varattrib_4b-in-VARSIZE_4B.patch | text/x-diff | 1.9 KB |
| v42-0003-Add-CONCURRENTLY-option-to-REPACK-command.patch | text/plain | 165.1 KB |
| v42-0004-Serialize-decoded-tuples-without-flattening.patch | text/x-diff | 20.8 KB |
| v42-0005-Use-BulkInsertState-when-copying-data-to-the-new-hea.patch | text/x-diff | 6.7 KB |
| v42-0006-Fix-a-few-problems-in-index-build-progress-reporting.patch | text/x-diff | 8.3 KB |
| v42-0007-Teach-snapshot-builder-to-skip-transactions-running-.patch | text/x-diff | 19.2 KB |
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Hüseyin Demir | 2026-03-17 19:59:04 | Re: client_connection_check_interval default value |
| Previous Message | Viktor Holmberg | 2026-03-17 19:49:54 | Re: [PATCH] no table rewrite when set column type to constrained domain |