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

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