Sobes.tech
Middle+

Cosa succede con Xmin e Xmax durante un aggiornamento?

sobes.tech AI

Risposta dell'AI

In PostgreSQL, durante l'esecuzione di un'operazione di UPDATE, non si modifica semplicemente la riga, ma si crea effettivamente una nuova versione della riga (MVCC — controllo concorrente multiversione).

  • Xmin è l'identificatore della transazione che ha creato (inserito) l'attuale versione della riga.
  • Xmax è l'identificatore della transazione che ha contrassegnato la riga come eliminata (ad esempio, durante un UPDATE o DELETE).

Durante un UPDATE:

  1. La vecchia versione della riga riceve nel campo Xmax l'identificatore della transazione corrente che esegue l'UPDATE — ciò significa che questa versione è ora considerata eliminata per le nuove transazioni.
  2. Viene creata una nuova versione della riga con un nuovo Xmin — l'identificatore della transazione corrente, e un Xmax vuoto.

Pertanto, un UPDATE è sostanzialmente un DELETE della vecchia versione + un INSERT della nuova versione, il che garantisce l'isolamento delle transazioni e la coerenza dei dati.