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

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