Middle+
Co se děje s Xmin a Xmax při UPDATE?
sobes.tech AI
Odpověď od AI
V PostgreSQL při provádění operace UPDATE nedochází pouze ke změně řádku, ale ve skutečnosti se vytváří nová verze řádku (MVCC — víceverzní řízení konkurence).
- Xmin je identifikátor transakce, která vytvořila (vložená) aktuální verzi řádku.
- Xmax je identifikátor transakce, která označila řádek jako smazaný (například při UPDATE nebo DELETE).
Při UPDATE:
- Stará verze řádku obdrží v poli Xmax identifikátor aktuální transakce, která provádí UPDATE — což znamená, že tato verze je nyní považována za smazanou pro nové transakce.
- Vytvoří se nová verze řádku s novým Xmin — identifikátorem aktuální transakce, a prázdným Xmax.
Tímto způsobem je UPDATE v podstatě DELETE staré verze + INSERT nové verze, což umožňuje zajištění izolace transakcí a konzistence dat.