PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Какво е значението на епоха в txid_current() в postgresql?

Епохата се използва, за да се предотврати txid_current() от обвиване и започване от нула (или по-точно от 3, тъй като стойностите 0,1,2 се използват вътрешно).

Така че работи лесно следното:

Postgres има вътрешен 32-битов xid брояч, който е различен от стойността, върната от txid_current(). Вътрешният xid се обвива и нулира отброяването си при всяко обвиване.

От друга страна, txid_current() връща 64 бита (bigint), в които високите битове са нарастване на епоха, което се случва веднъж на обвиване на xid и не започва от нула.

Така че при всяко завъртане епохата започва и високите битове на txid_current() се модифицират, за да предотвратят нулирането на txids, и вместо това txids продължават да се увеличават, докато се достигне 64-битовото ограничение (понякога в много далечно бъдеще дълго след като всички умрем).




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да създадете уникален индекс, където редът на колоните не се взема предвид (задава?)

  2. PostgreSQL:Създаване на индекс за булева колона

  3. LATERAL JOIN не използва индекс на триграма

  4. Основно наблюдение на PostgreSQL – част 3

  5. Не може да влезе в системния потребител postgres