sql >> Databasteknik >  >> RDS >> PostgreSQL

Vad betyder epok i txid_current() i postgresql?

Epok används för att förhindra att txid_current() lindas runt och börjar från noll (eller för att vara exakt från 3 eftersom värdena 0,1,2 återanvänds internt).

Så det fungerar lite så här:

Postgres har en intern 32-bitars xid-räknare som skiljer sig från värdet som returneras av txid_current(). Den interna xid sveper runt och nollställer sin räkning vid varje wraparound.

txid_current(), å andra sidan, returnerar 64 bitar (bigint) där de höga bitarna är en epokökning som sker en gång per xid omslag och inte börjar från noll.

Så vid varje wraparound börjar epoken och de höga bitarna av txid_current() modifieras för att förhindra att txids återställs, och istället fortsätter txids att öka tills gränsen på 64 bitar nås (ibland inom en mycket lång framtid långt efter att vi alla dör).




  1. Hur använder man GRANT med variabler?

  2. INSERT SELECT-fråga när en kolumn är unik

  3. Hur man uppdaterar SQL Server-statistik för stora tabeller

  4. PostgreSQL-grupperingsfel