The proposed option does not need to change the length of either the page header or tuple header. Therefore, you will not need to physically change the data.
 
regards


01.11.2019, 20:10, "Tomas Vondra" <tomas.vondra@2ndquadrant.com>:

On Fri, Nov 01, 2019 at 10:25:17AM +0100, Pavel Stehule wrote:

Hi

pá 1. 11. 2019 v 10:11 odesílatel Павел Ерёмин <shnoor111gmail@yandex.ru>
napsal:

 Hi.
 sorry for my English.
 I want to once again open the topic of 64 bit transaction id. I did not
 manage to find in the archive of the option that I want to discuss, so I
 write. If I searched poorly, then please forgive me.
 The idea is not very original and probably has already been considered,
 again I repeat - I did not find it. Therefore, please do not scold me
 severely.
 In discussions of 64-bit transaction id, I did not find mention of an
 algorithm for storing them, as it was done, for example, in MS SQL Server.
 What if instead of 2 fields (xmin and xmax) with a total length of 64 bits
 - use 1 field (let's call it xid) with a length of 64 bits in tuple header?
 In this field store the xid of the transaction that created the version. In
 this case, the new transaction in order to understand whether the read
 version is suitable for it or not, will have to read the next version as
 well. Those. The downside of such decision is of course an increase in I /
 O. Transactions will have to read the +1 version. On the plus side, the
 title of the tuple remains the same length.


is 32 bit tid really problem? Why you need to know state of last 2^31
transactions? Is not problem in too low usage (or maybe too high overhead)
of VACUUM FREEZE.


It certainly can be an issue for large and busy systems, that may need
anti-wraparoud vacuum every couple of days. If that requires rewriting a
couple of TB of data, it's not particularly nice. That's why 64-bit XIDs
were discussed repeatedly in the past, and it's likely to get even more
pressing as the systems get larger.

I am not sure if increasing this range can has much more fatal problems
(maybe later)


Well, not fatal, but naive approaches can increase per-tuple overhead.
And we already have plenty of that, hence there were proposals to use
page epochs and so on.


regards

--
Tomas Vondra http://www.2ndQuadrant.com
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services