On Sat, 2021-04-03 at 15:22 +0200, Luca Ferrari wrote:
> why having a TransactionId that is 32 bits
> in depth while it is exposed (thru txid_current()) as a 64 bits value?
> I mean, having 64 bits would reduce the need for anti-wrap arpund
> vacuum. I suspect the usage of 32 bits is both for compatibility and
> tuple header size, but I'm just guessing.
Because there are two of these transaction IDs stored on each tuple
(xmin and xmax) to determine its visibility. The overhead of 8 bytes
per tuples for visibility is already pretty high.
Another downside is that changing this would prevent the use of
pg_upgrade for upgrading, as the on-disk format changes.
Yours,
Laurenz Albe
--
Cybertec | https://www.cybertec-postgresql.com