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

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