Что такое MVCC в PostgreSQL

Python Senior Без компании
Что такое MVCC в PostgreSQL
Ответы
MVCC (Multi-Version Concurrency Control) — это механизм управления параллельным доступом к данным в PostgreSQL, позволяющий избегать блокировок при чтении. **Как работает:** - Каждая транзакция видит "снимок" (snapshot) данных на момент своего начала. - При изменении строки создается ее новая версия, а старая сохраняется для других транзакций. - Неиспользуемые версии очищаются автоматически (VACUUM). **Пример:** ``` -- Транзакция 1 (началась первой) BEGIN; SELECT * FROM users WHERE id = 1; -- Видит версию X -- Транзакция 2 (параллельно) BEGIN; UPDATE users SET name = 'Alice' WHERE id = 1; COMMIT; -- Транзакция 1 продолжает видеть старую версию X SELECT * FROM users WHERE id = 1; -- Данные не изменились COMMIT; ``` **Плюсы:** - Чтение не блокирует запись и наоборот. - Высокая производительность при параллельной работе. **Минусы:** - Возможность "раздувания" БД из-за хранения старых версий (решается VACUUM).