Sobes.tech
Middle+

Kas vyksta su Xmin ir Xmax atnaujinimo metu?

sobes.tech AI

Atsakymas iš AI

PostgreSQL'e, vykdant UPDATE operaciją, ne tik pakeičiamas įrašas, bet iš tikrųjų sukuriama nauja įrašo versija (MVCC — daugiaversinė konkurencijos kontrolė).

  • Xmin yra identifikatorius, kurį sukūrė (įdėjo) dabartinė transakcija, sukūrusi (įterpusi) dabartinę įrašo versiją.
  • Xmax yra identifikatorius, kuris pažymėjo įrašą kaip ištrintą (pavyzdžiui, UPDATE ar DELETE metu).

Vykdant UPDATE:

  1. Senas įrašas gauna Xmax laukelyje dabartinės transakcijos identifikatorių — tai reiškia, kad ši versija dabar laikoma ištrinta naujoms transakcijoms.
  2. Sukuriama nauja įrašo versija su nauju Xmin — dabartinės transakcijos identifikatoriumi, ir tuščiu Xmax.

Taigi, UPDATE iš esmės yra seno įrašo DELETE + naujo įrašo INSERT, kas užtikrina transakcijų izoliaciją ir duomenų nuoseklumą.