Sobes.tech
Back to questions
Senior
5

Как работает MVCC в PostgreSQL? Зачем нужно версионирование?

Companies where asked
Позитив Технолоджис

Answer from AI

sobes.tech AI

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

Как это работает:

  • При изменении данных создаётся новая версия строки с новым идентификатором транзакции (XID).
  • Транзакции видят только те версии строк, которые были зафиксированы до начала их работы, обеспечивая консистентность чтения.
  • Старые версии строк сохраняются до тех пор, пока не станут ненужными (их удаляет процесс VACUUM).

Зачем нужно версионирование:

  • Позволяет реализовать изоляцию уровнем "повторяющееся чтение" (Repeatable Read) и "сериализуемость" без блокировок.
  • Уменьшает конкуренцию между транзакциями, повышая производительность.
  • Обеспечивает консистентное чтение данных на момент начала транзакции.

Пример: если одна транзакция читает данные, а другая параллельно их изменяет, первая увидит старую версию, а вторая — новую, что предотвращает конфликты и блокировки.