Sobes.tech
Middle+

¿Qué sucede con Xmin y Xmax durante una actualización?

sobes.tech AI

Respuesta de la IA

En PostgreSQL, al realizar una operación de UPDATE, no se modifica simplemente la fila, sino que en realidad se crea una nueva versión de la fila (MVCC — control de concurrencia multiversión).

  • Xmin es el identificador de la transacción que creó (insertó) la versión actual de la fila.
  • Xmax es el identificador de la transacción que marcó la fila como eliminada (por ejemplo, en un UPDATE o DELETE).

En un UPDATE:

  1. La versión antigua de la fila recibe en el campo Xmax el identificador de la transacción actual que realiza el UPDATE — esto significa que esta versión ahora se considera eliminada para las nuevas transacciones.
  2. Se crea una nueva versión de la fila con un nuevo Xmin — el identificador de la transacción actual, y un Xmax vacío.

De esta manera, un UPDATE es básicamente un DELETE de la versión antigua + un INSERT de la nueva versión, lo que permite garantizar el aislamiento de transacciones y la coherencia de los datos.