PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Quelle est la signification de epoch dans txid_current() dans postgresql ?

Epoch est utilisé pour empêcher txid_current() de boucler et de démarrer à partir de zéro (ou pour être exact à partir de 3 car les valeurs 0,1,2 sont utilisées en interne).

Donc ça marche lite ceci :

Postgres a un compteur xid interne 32 bits qui est différent de la valeur renvoyée par txid_current(). Le xid interne s'enroule et réinitialise son comptage à chaque enroulement.

Le txid_current(), d'autre part, renvoie 64 bits (bigint) dans lequel les bits de poids fort sont un incrément d'époque qui se produit une fois par xid et ne part pas de zéro.

Ainsi, à chaque bouclage, l'époque se déclenche et les bits élevés de txid_current() sont modifiés pour empêcher la réinitialisation des txids, et à la place, les txids continuent d'augmenter jusqu'à ce que la limite de 64 bits soit atteinte (parfois dans un avenir très lointain, longtemps après notre mort). /P>