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