Sobes.tech
Middle+

Čo sa deje s Xmin a Xmax počas UPDATE?

sobes.tech AI

Odpoveď od AI

V PostgreSQL pri vykonávaní operácie UPDATE nedochádza k jednoduchému zmene riadku, ale v skutočnosti sa vytvára nová verzia riadku (MVCC — viacverziové riadenie konkurencie).

  • Xmin je identifikátor transakcie, ktorá vytvorila (vložená) aktuálnu verziu riadku.
  • Xmax je identifikátor transakcie, ktorá označila riadok ako vymazaný (napríklad pri UPDATE alebo DELETE).

Pri UPDATE:

  1. Staršia verzia riadku dostane v poli Xmax identifikátor aktuálnej transakcie, ktorá vykonáva UPDATE — čo znamená, že táto verzia je teraz považovaná za vymazanú pre nové transakcie.
  2. Vytvorí sa nová verzia riadku s novým Xmin — identifikátorom aktuálnej transakcie, a prázdnym Xmax.

Týmto spôsobom je UPDATE v podstate DELETE starej verzie + INSERT novej verzie, čo zabezpečuje izoláciu transakcií a konzistentnosť dát.