sql >> Database >  >> RDS >> PostgreSQL

Wat is de betekenis van epoche in txid_current() in postgresql?

Epoch wordt gebruikt om te voorkomen dat txid_current() omwikkelt en begint bij nul (of om precies te zijn vanaf 3 omdat waarden 0,1,2 intern worden gebruikt).

Dus het werkt als volgt:

Postgres heeft een interne 32bit xid-teller die anders is dan de waarde die wordt geretourneerd door txid_current(). De interne xid wikkelt zich om en stelt zijn telling bij elke omhulling opnieuw in.

De txid_current(), aan de andere kant, retourneert 64-bits (bigint) waarin de hoge bits een epoche-increment zijn dat eenmaal per xid-omslag plaatsvindt en niet vanaf nul begint.

Dus bij elke omhulling begint het tijdperk en worden de hoge bits van txid_current() gewijzigd om te voorkomen dat txids opnieuw worden ingesteld, en in plaats daarvan blijven txids toenemen totdat de 64-bits limiet is bereikt (soms in een zeer verre toekomst, lang nadat we allemaal dood zijn). /P>


  1. Fout:PLS-00428:er wordt een into-clausule verwacht in deze select-instructie

  2. MySQL:gebruik CASE/ELSE-waarde als join-parameter

  3. Postgres - update-instructie als trigger

  4. php:hoe SQL-injectie van $_POST te voorkomen