Назад к вопросам
МВидео
Middle+
3
При UPDATE что происходит с Xmin и Xmax?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
В PostgreSQL при выполнении операции UPDATE происходит не простое изменение строки, а фактически создание новой версии строки (MVCC — многоверсионная конкуренция).
- Xmin — это идентификатор транзакции, которая создала (вставила) текущую версию строки.
- Xmax — это идентификатор транзакции, которая пометила строку как удалённую (например, при UPDATE или DELETE).
При UPDATE:
- Старая версия строки получает в поле Xmax идентификатор текущей транзакции, которая выполняет UPDATE — это означает, что эта версия теперь считается удалённой для новых транзакций.
- Создаётся новая версия строки с новым Xmin — идентификатором текущей транзакции, и пустым Xmax.
Таким образом, UPDATE — это по сути DELETE старой версии + INSERT новой версии, что позволяет обеспечивать изоляцию транзакций и согласованность данных.