Middle+
Was passiert bei einem UPDATE mit Xmin und Xmax?
sobes.tech KI
Antwort von AI
In PostgreSQL wird bei einer UPDATE-Operation nicht einfach die Zeile geändert, sondern tatsächlich eine neue Version der Zeile erstellt (MVCC — Multi-Version Concurrency Control).
- Xmin ist die Transaktions-ID, die die aktuelle Version der Zeile erstellt (eingefügt) hat.
- Xmax ist die Transaktions-ID, die die Zeile als gelöscht markiert hat (z.B. bei UPDATE oder DELETE).
Bei einem UPDATE:
- Die alte Version der Zeile erhält im Feld Xmax die ID der aktuellen Transaktion, die das UPDATE durchführt — das bedeutet, dass diese Version jetzt für neue Transaktionen als gelöscht gilt.
- Es wird eine neue Version der Zeile mit einem neuen Xmin — der ID der aktuellen Transaktion, und einem leeren Xmax — erstellt.
Daher ist ein UPDATE im Wesentlichen ein DELETE der alten Version + ein INSERT der neuen Version, was die Transaktionsisolierung und Datenkonsistenz gewährleistet.