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