sql >> Base de Datos >  >> RDS >> PostgreSQL

¿Cuál es el significado de época en txid_current() en postgresql?

Epoch se usa para evitar que txid_current() se ajuste y comience desde cero (o para ser exactos desde 3 porque los valores 0,1,2 se reutilizan internamente).

Entonces funciona con esto:

Postgres tiene un contador xid interno de 32 bits que es diferente al valor devuelto por txid_current(). El xid interno se reinicia y restablece su conteo en cada reinicio.

El txid_current(), por otro lado, devuelve 64 bits (bigint) en el que los bits altos son un incremento de época que ocurre una vez por vuelta de xid y no comienza desde cero.

Entonces, en cada vuelta, la época se activa y los bits altos de txid_current() se modifican para evitar que los txid se restablezcan y, en cambio, los txid siguen aumentando hasta que se alcanza el límite de 64 bits (a veces en un futuro muy lejano mucho después de que todos muramos).