Sobes.tech
Back to questions
Middle+
2

Что такое MVCC в PostgreSQL и как работают уровни изоляции?

Companies where asked
Magnit Tech

Answer from AI

sobes.tech AI

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

PostgreSQL хранит несколько версий строк с разными xmin/xmax (идентификаторами транзакций), чтобы определить, какие версии видимы текущей транзакции.

Уровни изоляции в PostgreSQL:

  • Read Committed (по умолчанию) — транзакция видит только те изменения, которые были зафиксированы до начала каждого отдельного запроса.
  • Repeatable Read — транзакция видит один и тот же снимок данных на протяжении всего её выполнения, даже если другие транзакции изменяют данные.
  • Serializable — самый строгий уровень, обеспечивает полную изоляцию, предотвращая аномалии конкурентного доступа, иногда с помощью отката транзакций.

Пример: при уровне Repeatable Read, если вы прочитали строку, а другая транзакция её изменила и зафиксировала, вы не увидите эти изменения до завершения вашей транзакции.