Sobes.tech
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:

  1. 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.
  2. 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.