Middle+
Mi történik az Xmin és Xmax értékekkel az UPDATE során?
sobes.tech MI
Válasz az MI-től
A PostgreSQL-ben az UPDATE művelet során nem egyszerűen a sor módosul, hanem valójában egy új verzió jön létre a sorból (MVCC — többverziós párhuzamosság-ellenőrzés).
- Xmin az azonosítója annak a tranzakciónak, amely létrehozta (beszúrta) az aktuális sorverziót.
- Xmax az azonosítója annak a tranzakciónak, amely a sort töröltként jelölte (például UPDATE vagy DELETE során).
UPDATE esetén:
- A régi sorverzió kapja az Xmax mezőbe a végrehajtó tranzakció azonosítóját — ez azt jelenti, hogy ez a verzió mostantól töröltnek számít az új tranzakciók számára.
- Létrejön egy új sorverzió az új Xmin értékkel — a végrehajtó tranzakció azonosítójával, és üres Xmax-szal.
Így az UPDATE lényegében a régi verzió DELETE-je + az új verzió INSERT-je, ami biztosítja a tranzakciók izolációját és az adatok konzisztenciáját.