SERIALIZABLE усиливает изоляцию, но может увеличивать конфликты, ожидания и число откатов. Приложению нужно корректно повторять транзакции, а пропускная способность может снизиться.
Почему не используют SERIALIZABLE всегда?
SERIALIZABLE усиливает изоляцию, но может увеличивать конфликты, ожидания и число откатов. Приложению нужно корректно повторять транзакции, а пропускная способность может снизиться.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
SERIALIZABLE усиливает изоляцию, но может увеличивать конфликты, ожидания и число откатов. Приложению нужно корректно повторять транзакции, а пропускная способность может снизиться.
Точная цена зависит от реализации СУБД: используются блокировки, обнаружение конфликтов или их сочетание. Для многих операций достаточно меньшей изоляции вместе с ограничениями уникальности и точечными locks. Уровень выбирают по инвариантам данных. При этом более слабую изоляцию нельзя считать безопасной только потому, что ошибки пока не замечены.