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

  1. 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.
  2. 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.