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:
- Senas įrašas gauna Xmax laukelyje dabartinės transakcijos identifikatorių — tai reiškia, kad ši versija dabar laikoma ištrinta naujoms transakcijoms.
- 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ą.