Глава 14 из 28
14. Транзакции и уровни изоляции
Два перевода денег идут одновременно, и на счёте оказывается сумма, которой не должно быть. Дежурных врачей двое, каждый проверил, что второй на смене, оба ушли домой, и смена осталась пустой. Оба случая не ошибки в SQL: каждый запрос по отдельности верен. Проблема в том, как транзакции видят чужие изменения. В этой главе разберём, что гарантирует транзакция в PostgreSQL, чем отличаются уровни изоляции READ COMMITTED, REPEATABLE READ и SERIALIZABLE, какие аномалии каждый из них допускает и как писать код, который переживает ошибку сериализации. Разберём и точки сохранения (SAVEPOINT), на которых держится блок EXCEPTION в PL/pgSQL.
Откройте остальные главы
Ещё 20 глав: внутреннее устройство, оптимизация, администрирование. Покупка разовая, доступ навсегда.