Re: Add 64-bit XIDs into PostgreSQL 15 - Mailing list pgsql-hackers

From Aleksander Alekseev
Subject Re: Add 64-bit XIDs into PostgreSQL 15
Date
Msg-id CAJ7c6TOk1mx4KfF0AHkvXi+pkdjFqwTwvRE-JmdczZMAYnRQ0w@mail.gmail.com
Whole thread Raw
In response to Re: Add 64-bit XIDs into PostgreSQL 15  (Maxim Orlov <orlovmg@gmail.com>)
Responses Re: Add 64-bit XIDs into PostgreSQL 15
List pgsql-hackers
Hi Maxim,

> Anyway. Let's discuss on-disk page format, shall we?

Here are my two cents.

> AFAICS, we have a following options:
> [...]
> 2. Put special in every page where base for XIDs are stored. This is what we have done in the current patch set.

The approach of using special space IMO is fine. I'm still a bit
sceptical about the need to introduce a new entity "64-bit base XID"
while we already have 32-bit XID epochs that will do the job. I
suspect that having fewer entities helps to reason about the code and
that it is important in the long run, but maybe it's just me. In any
case, I don't have a strong opinion here.

Additionally, I think we should be clear about the long term goals. As
Peter G. pointed out above:

> I think that we'll be able to get rid of freezing in a few years time.

IMO eventually getting rid of freezing and "magic" XIDs will simplify
the maintenance of the project and also make the behaviour of the
system much more predictable. The user will have to worry only about
the disk space reclamation.

If we have a consensus that this is the final goal then we should
definitely be moving toward 64-bit XIDs and perhaps even include a
corresponding PoC to the patchset. If we want to keep freezing
indefinitely then, as Chris Travers argued, 64-bit XIDs don't bring
that much value and maybe the community should be focusing on
something else.

-- 
Best regards,
Aleksander Alekseev



pgsql-hackers by date:

Previous
From: Andres Freund
Date:
Subject: Re: can while loop in ClockSweepTick function be kind of infinite loop in some cases?
Next
From: Ted Yu
Date:
Subject: Re: releasing ParallelApplyTxnHash when pa_launch_parallel_worker returns NULL