Middle+
Co się dzieje z Xmin i Xmax podczas aktualizacji?
sobes.tech AI
Odpowiedź od AI
W PostgreSQL, podczas wykonywania operacji UPDATE, nie dochodzi do prostego zmieniania wiersza, lecz faktycznie tworzone jest nowa wersja wiersza (MVCC — wielowersyjna kontrola współbieżności).
- Xmin to identyfikator transakcji, która utworzyła (wstawiła) obecną wersję wiersza.
- Xmax to identyfikator transakcji, która oznaczyła wiersz jako usunięty (np. podczas UPDATE lub DELETE).
Przy UPDATE:
- Stara wersja wiersza otrzymuje w polu Xmax identyfikator bieżącej transakcji wykonującej UPDATE — co oznacza, że ta wersja jest teraz uważana za usuniętą dla nowych transakcji.
- Tworzona jest nowa wersja wiersza z nowym Xmin — identyfikatorem bieżącej transakcji, i pustym Xmax.
W ten sposób, UPDATE to w istocie DELETE starej wersji + INSERT nowej wersji, co zapewnia izolację transakcji i spójność danych.