PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Qual é o significado de época em txid_current() no postgresql?


Epoch é usado para evitar que txid_current() se envolva e comece do zero (ou para ser exato de 3 porque os valores 0,1,2 são usados ​​internamente).

Então funciona lite isso:

O Postgres possui um contador xid interno de 32 bits que é diferente do valor retornado por txid_current(). O xid interno envolve e redefine sua contagem a cada volta.

O txid_current(), por outro lado, retorna 64 bits (bigint) em que os bits mais altos são um incremento de época que acontece uma vez por xid e não começa do zero.

Então, a cada volta, a época entra em ação e os bits altos de txid_current() são modificados para evitar que os txids sejam redefinidos e, em vez disso, os txids continuam aumentando até que o limite de 64 bits seja atingido (às vezes em um futuro muito distante, muito depois de todos morrermos).