Что такое MVCC в PostgreSQL?

Ответ

Каждая строка: xmin (создавшая транзакция), xmax (удалившая). Читатели не блокируют писателей. Старые версии чистит VACUUM. Проблема: table bloat.

Разбор: MVCC хранит несколько версий каждой строки прямо в таблице: xmin помечает создавшую транзакцию, xmax — удалившую/обновившую, поэтому читатели видят согласованный snapshot и не блокируют писателей. Ловушка в том, что PostgreSQL не использует отдельный UNDO-сегмент (как Oracle/InnoDB) — мёртвые версии копятся в самой таблице и приводят к bloat, который вычищает VACUUM; грязного чтения незакоммиченных версий тоже не происходит.

Хочешь так же по своей компании — с вопросами по грейдам и задачами? Закажи гайд или забери свежее в Telegram.

Заказать гайд Пройти тест
новые гайды и свежие вопросы с собесов — первыми в Telegram Смотреть гайды Подписаться