Middle+
Kas notiek ar Xmin un Xmax atjaunināšanas laikā?
sobes.tech AI
Atbilde no AI
PostgreSQL, veicot UPDATE operāciju, ne tikai mainās rinda, bet faktiski tiek izveidota jauna rindas versija (MVCC — daudzversiju konkurences kontrole).
- Xmin ir identifikators, ko izveidoja (ievietoja) pašreizējā transakcija, kas izveidoja (ievietoja) pašreizējo rindas versiju.
- Xmax ir identifikators, ko norādījusi transakcija, kas atzīmēja rindu kā dzēstu (piemēram, UPDATE vai DELETE laikā).
Veicot UPDATE:
- Vecā rinda saņem Xmax lauka identifikatoru — pašreizējās transakcijas, kas veic UPDATE, identifikatoru — tas nozīmē, ka šī versija tagad tiek uzskatīta par dzēstu jaunajās transakcijās.
- Tiek izveidota jauna rindas versija ar jaunu Xmin — pašreizējās transakcijas identifikatoru, un tukšu Xmax.
Tādējādi UPDATE būtībā ir vecās versijas DELETE + jaunas versijas INSERT, kas nodrošina transakciju izolāciju un datu konsekvenci.