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:
- 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.
- 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.