MVCC хранит несколько версий строк и выбирает видимые для снимка транзакции. Благодаря этому обычное чтение не должно блокировать каждое конкурентное изменение той же строки.
Что такое MVCC в PostgreSQL?
MVCC хранит несколько версий строк и выбирает видимые для снимка транзакции. Благодаря этому обычное чтение не должно блокировать каждое конкурентное изменение той же строки.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
MVCC хранит несколько версий строк и выбирает видимые для снимка транзакции. Благодаря этому обычное чтение не должно блокировать каждое конкурентное изменение той же строки.
Обновление создаёт новую версию, а старая может оставаться видимой другим транзакциям. Видимость зависит от статуса транзакций и уровня изоляции. VACUUM удаляет версии, которые больше никому не нужны; долгие транзакции могут этому мешать. MVCC не отменяет блокировки writers и не гарантирует отсутствие всех аномалий согласованности.