sql >> Database teknologi >  >> RDS >> PostgreSQL

Hvad er betydningen af ​​epoke i txid_current() i postgresql?

Epoch bruges til at forhindre txid_current() i at vikle sig rundt og starte fra nul (eller for at være præcis fra 3, fordi værdierne 0,1,2 genbruges internt).

Så det virker let dette:

Postgres har en intern 32bit xid-tæller, som er forskellig fra værdien returneret af txid_current(). Den interne xid ombrydes og nulstiller sin optælling ved hver wraparound.

txid_current(), på den anden side, returnerer 64 bit (bigint), hvor de høje bits er et epoketilvækst, som sker én gang pr. xid omvikling og ikke starter fra nul.

Så ved hver wraparound starter epoken, og de høje bits af txid_current() bliver modificeret for at forhindre txids i at nulstille, og i stedet fortsætter txids med at stige, indtil 64bit-grænsen er nået (nogle gange i en meget lang fremtid længe efter, at vi alle dør).




  1. Hvordan ejendomsmæglere kan bruge Microsoft Access

  2. Opdatering af en forududfyldt database

  3. ORA-12170:TNS:Forbindelsestimeout opstod

  4. SQL Server Database Snapshots -3