Sobes.tech
Назад к вопросам
Middle+
3

При UPDATE что происходит с Xmin и Xmax?

Компании, где спрашивали
МВидеоМВидео

Ответ от нейросети

sobes.tech AI

В PostgreSQL при выполнении операции UPDATE происходит не простое изменение строки, а фактически создание новой версии строки (MVCC — многоверсионная конкуренция).

  • Xmin — это идентификатор транзакции, которая создала (вставила) текущую версию строки.
  • Xmax — это идентификатор транзакции, которая пометила строку как удалённую (например, при UPDATE или DELETE).

При UPDATE:

  1. Старая версия строки получает в поле Xmax идентификатор текущей транзакции, которая выполняет UPDATE — это означает, что эта версия теперь считается удалённой для новых транзакций.
  2. Создаётся новая версия строки с новым Xmin — идентификатором текущей транзакции, и пустым Xmax.

Таким образом, UPDATE — это по сути DELETE старой версии + INSERT новой версии, что позволяет обеспечивать изоляцию транзакций и согласованность данных.