MVCC (Multi-Version Concurrency Control) — это механизм управления параллельным доступом к данным в базе данных, который используется в PostgreSQL для поддержки одновременных транзакций. 2
Некоторые аспекты работы MVCC в PostgreSQL:
- Создание версий данных. 2 Когда транзакция вносит изменения в базу данных, PostgreSQL не изменяет существующие строки, а создаёт новые версии строк с обновлёнными данными. 2 Это позволяет другим транзакциям видеть старые версии данных, пока изменения не будут окончательно зафиксированы. 2
- Версионирование по времени. 2 Каждая версия строки имеет информацию о времени начала и окончания её действия. 2 Это позволяет транзакциям видеть данные в соответствии с моментом времени начала транзакции, что обеспечивает изоляцию. 2
- Уровни изоляции. 2 MVCC позволяет разным транзакциям работать на разных уровнях изоляции, таких как «читать некоммитированные данные», «повторяемое чтение», «снимок» и «сериализуемость». 2 Это определяет, какие версии данных транзакция может видеть, и какие блокировки должны быть установлены. 2
- Удаление устаревших данных. 2 PostgreSQL автоматически удаляет устаревшие версии данных, когда транзакция, которая их создала, успешно завершается (коммитится). 2 Это помогает предотвратить накопление большого объёма старых данных. 2
MVCC обеспечивает высокую производительность и согласованность данных, позволяя множественным транзакциям работать параллельно без конфликтов. 3