Иногда несколько
SELECT должны работать с одной и той же версией данных, даже если параллельно идут изменения.BEGIN TRANSACTION ISOLATION LEVEL REPEATABLE READ;
В PostgreSQL это фиксирует
MVCC snapshot в момент первого statement внутри транзакции:SELECT COUNT(*) FROM orders;
Все последующие
SELECT читают один и тот же snapshot и не видят новые COMMIT из других сессий, при этом собственные изменения транзакции видны:SELECT SUM(amount) FROM orders;
Это гарантирует согласованность результатов между запросами без блокировки пишущих транзакций:
COMMIT;
🔥 После
COMMIT snapshot освобождается, транзакция завершается.➡️ SQL Ready | #совет
