Что такое MVCC в PostgreSQL?
Ответ от нейросети
sobes.tech AI
MVCC (Multiversion Concurrency Control) в PostgreSQL — это механизм управления конкурентным доступом к данным, который позволяет нескольким транзакциям работать с базой параллельно без блокировок чтения.
Основная идея MVCC — хранить несколько версий строк данных с разными временными метками (Transaction ID). Каждая транзакция видит только те версии строк, которые были актуальны на момент её начала, что обеспечивает:
- Непрерывное чтение без блокировок — чтение не блокирует запись и наоборот.
- Изоляцию транзакций — каждая транзакция работает с консистентным снимком данных.
В PostgreSQL при обновлении строки создаётся новая версия, а старая помечается как устаревшая, но остаётся до тех пор, пока все транзакции, которые могли её видеть, не завершатся. Для очистки старых версий используется процесс VACUUM.
Пример: если транзакция A начала работу, а транзакция B обновила строку после этого, транзакция A всё равно увидит старую версию строки, а транзакция B — новую.