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