PostgreSQL обеспечивает согласованность данных при параллельных транзакциях с помощью многоверсионного управления параллельностью (MVCC). 14
Некоторые принципы работы MVCC:
- Поддержание нескольких версий каждой строки в базе данных. 1 Когда транзакция считывает или изменяет строку, она делает это в отношении определённой версии этой строки. 1 Другие транзакции продолжают видеть свой собственный согласованный снимок базы данных, на который не влияют операции параллельных транзакций. 1
- Создание новой версии строки при выполнении транзакции. 4 Старая версия строки остаётся неизменной, что позволяет другим транзакциям продолжать работать с оригинальными данными без блокировок. 4
- Использование уровней изоляции транзакций для контроля видимости данных. 4 По умолчанию используется уровень Read Committed, который гарантирует, что транзакция видит только подтверждённые изменения. 4
- Использование системных колонок xmin, xmax, cmin и cmax. 4 Они содержат информацию о транзакциях, создавших и удаливших строки, что позволяет определять видимость строк для текущей транзакции. 4
Таким образом, MVCC позволяет множественным транзакциям работать параллельно без конфликтов, обеспечивая высокую производительность и согласованность данных. 4