Sobes.tech
Назад к вопросам
Middle+
1

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

Компании, где спрашивали
Magnit Tech

Ответ от нейросети

sobes.tech AI

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

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

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

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

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