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

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