Sobes.tech
Middle+

O que acontece com Xmin e Xmax durante uma atualização?

sobes.tech IA

Resposta da IA

No PostgreSQL, ao realizar uma operação de UPDATE, não ocorre apenas uma alteração na linha, mas na verdade a criação de uma nova versão da linha (MVCC — controlo de concorrência multiversão).

  • Xmin é o identificador da transação que criou (inseriu) a versão atual da linha.
  • Xmax é o identificador da transação que marcou a linha como eliminada (por exemplo, em um UPDATE ou DELETE).

No UPDATE:

  1. A antiga versão da linha recebe no campo Xmax o identificador da transação atual que realiza o UPDATE — isso significa que essa versão agora é considerada eliminada para novas transações.
  2. Uma nova versão da linha é criada com um novo Xmin — o identificador da transação atual, e um Xmax vazio.

Assim, o UPDATE é basicamente um DELETE da versão antiga + um INSERT da nova versão, o que permite garantir o isolamento das transações e a consistência dos dados.