Встречается на собеседованиях • сегодня

Какие возникают аномалии при параллельных транзакциях

При параллельном выполнении транзакций могут возникать следующие аномалии:

  1. Потерянное обновление (Lost Update) – две транзакции читают одни данные, затем обе изменяют их, но сохраняется только результат последней.

    java
    // Транзакция 1: balance = 100 → 150
    // Транзакция 2: balance = 100 → 120 → сохраняется 120 (потеряно +50)
  2. Грязное чтение (Dirty Read) – чтение незафиксированных данных, которые могут быть откачены.

    java
    // Транзакция 1: update balance = 200 (не commit)
    // Транзакция 2: read balance = 200 (но транзакция 1 откатилась)
  1. Неповторяющееся чтение (Non-Repeatable Read) – повторное чтение в одной транзакции возвращает разные данные из-за изменений другой транзакции.

    java
    // Транзакция 1: read balance = 100
    // Транзакция 2: update balance = 150 и commit
    // Транзакция 1: read balance = 150 (значение изменилось)
  2. Фантомное чтение (Phantom Read) – появление новых строк при повторном чтении диапазона.

    java
    // Транзакция 1: SELECT * FROM users WHERE age > 30 → 2 записи
    // Транзакция 2: INSERT INTO users ... age=35 и commit
    // Транзакция 1: повторный SELECT → 3 записи

Решаются настройкой уровня изоляции (READ_COMMITTED, REPEATABLE_READ и т.д.) или пессимистичными/оптимистичными блокировками.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы