Re: [HACKERS] Challenges preventing us moving to 64 bit transaction id (XID)? - Mailing list pgsql-hackers

From Jim Finnerty
Subject Re: [HACKERS] Challenges preventing us moving to 64 bit transaction id (XID)?
Date
Msg-id 1499351347212-5970238.post@n3.nabble.com
Whole thread Raw
In response to Re: [HACKERS] Challenges preventing us moving to 64 bit transactionid (XID)?  (Alexander Korotkov <a.korotkov@postgrespro.ru>)
Responses Re: [HACKERS] Challenges preventing us moving to 64 bit transaction id (XID)?
Re: [HACKERS] Challenges preventing us moving to 64 bit transactionid (XID)?
List pgsql-hackers
re: "The problem is if you want to delete from such a page.  Then you need to
update the tuple's xmax and stick the new xid epoch somewhere."

When the xid's on a single page span a range of more than 2^32, as could
occur in the scenario above, then a single xid base value won't suffice.  Do
we have a proposed solution for this problem?

If not, then allow me to put out a 'straw man' proposal: perhaps we could
mark such a row with a 'tombstone' that points off to some other page in yet
another page format that contains full 64-bit xids.  Rows in this 64-bit xid
format page would all be deleted rows, and would be vacuumed away, along
with the tombstone row, when there are no more transactions that can see it. 
Under the assumption that deletion of such very old rows is rare, this may
have very little impact on performance.  One negative is that rarely
executed code can be a maintainability problem, but we can probably cope
with that.

Feel free to knock down this 'straw man' and propose something better!



--
View this message in context:
http://www.postgresql-archive.org/Challenges-preventing-us-moving-to-64-bit-transaction-id-XID-tp5964779p5970238.html
Sent from the PostgreSQL - hackers mailing list archive at Nabble.com.



pgsql-hackers by date:

Previous
From: Heikki Linnakangas
Date:
Subject: Re: [HACKERS] AdvanceXLInsertBuffer vs. WAL segment compressibility
Next
From: Kaare Rasmussen
Date:
Subject: [HACKERS] Rust bindings to pgtypes lib