Вопрос проверяет понимание транзакций и того, как СУБД управляет параллельным доступом к данным.
Уровень изоляции определяет, насколько транзакции изолированы друг от друга. Он влияет на то, какие изменения одной транзакции видны другой. Чем выше уровень изоляции, тем меньше побочных эффектов, но ниже производительность. Стандарт SQL описывает несколько уровней изоляции. СУБД выбирает баланс между корректностью и скоростью.
Уровень изоляции транзакций — это набор правил, определяющих, какие эффекты параллельного выполнения транзакций допустимы.
Изоляция нужна, чтобы управлять конкурентным доступом и предотвращать аномалии:
Dirty read — чтение неподтвержденных данных
Non-repeatable read — повторное чтение дает разные данные
Phantom read — появление новых строк
Стандарт SQL определяет:
Read Uncommitted
Read Committed
Repeatable Read
Serializable
Каждый следующий уровень строже предыдущего.
Повышение уровня изоляции:
уменьшает количество аномалий
увеличивает блокировки и накладные расходы
На практике:
чаще всего используют Read Committed
более строгие уровни включают только при необходимости
Уровень изоляции — это инструмент управления балансом между корректностью данных и производительностью при параллельной работе транзакций.