Что такое 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).