Middle+
Wat gebeurt er met Xmin en Xmax tijdens een UPDATE?
sobes.tech AI
Antwoord van AI
In PostgreSQL, bij het uitvoeren van een UPDATE-operatie wordt niet eenvoudigweg de rij gewijzigd, maar wordt in feite een nieuwe versie van de rij gecreëerd (MVCC — multi-versie concurrency control).
- Xmin is de transactie-ID die de huidige versie van de rij heeft gemaakt (ingevoegd).
- Xmax is de transactie-ID die de rij als verwijderd heeft gemarkeerd (bijvoorbeeld tijdens een UPDATE of DELETE).
Bij een UPDATE:
- Ontvangt de oude versie van de rij in het veld Xmax de ID van de huidige transactie die de UPDATE uitvoert — dit betekent dat deze versie nu wordt beschouwd als verwijderd voor nieuwe transacties.
- Er wordt een nieuwe versie van de rij gemaakt met een nieuwe Xmin — de ID van de huidige transactie, en een lege Xmax.
Zo is een UPDATE in wezen een DELETE van de oude versie + een INSERT van de nieuwe versie, wat zorgt voor transactie-isolatie en gegevensconsistentie.