Sobes.tech
Back to questions
Senior
2

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

Companies where asked
А7

Answer from AI

sobes.tech AI

MVCC (Multiversion Concurrency Control) в PostgreSQL — это механизм управления конкурентным доступом к данным, который позволяет нескольким транзакциям работать с базой параллельно без блокировок чтения.

Основная идея MVCC — хранить несколько версий строк данных с разными временными метками (Transaction ID). Каждая транзакция видит только те версии строк, которые были актуальны на момент её начала, что обеспечивает:

  • Непрерывное чтение без блокировок — чтение не блокирует запись и наоборот.
  • Изоляцию транзакций — каждая транзакция работает с консистентным снимком данных.

В PostgreSQL при обновлении строки создаётся новая версия, а старая помечается как устаревшая, но остаётся до тех пор, пока все транзакции, которые могли её видеть, не завершатся. Для очистки старых версий используется процесс VACUUM.

Пример: если транзакция A начала работу, а транзакция B обновила строку после этого, транзакция A всё равно увидит старую версию строки, а транзакция B — новую.