Middle+
Ce se întâmplă cu Xmin și Xmax în timpul unui UPDATE?
sobes.tech AI
Răspuns de la AI
În PostgreSQL, atunci când se efectuează o operație UPDATE, nu se modifică pur și simplu linia, ci se creează de fapt o nouă versiune a liniei (MVCC — controlul concurenței multi-versiune).
- Xmin este identificatorul tranzacției care a creat (a inserat) versiunea actuală a liniei.
- Xmax este identificatorul tranzacției care a marcat linia ca fiind ștearsă (de exemplu, în timpul unui UPDATE sau DELETE).
La un UPDATE:
- Versiunea veche a liniei primește în câmpul Xmax identificatorul tranzacției curente care efectuează UPDATE-ul — ceea ce înseamnă că această versiune este acum considerată ștearsă pentru noile tranzacții.
- Se creează o nouă versiune a liniei cu un nou Xmin — identificatorul tranzacției curente, și un Xmax gol.
Astfel, un UPDATE este în esență un DELETE al versiunii vechi + un INSERT al noii versiuni, ceea ce asigură izolarea tranzacțiilor și coerența datelor.