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

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

Основные проблемы параллельных транзакций:

  1. Lost Update - когда две транзакции читают одни данные, изменяют их и записывают, последняя запись перезаписывает изменения первой.
    Пример:
java
// Транзакция 1: SELECT balance (100) → UPDATE balance = 100 + 50
// Транзакция 2: SELECT balance (100) → UPDATE balance = 100 + 30
// Итог: balance = 130 (потеряно +50)
  1. Dirty Read - чтение незафиксированных данных, которые могут быть отменены.
java
// Транзакция 1: UPDATE balance = 200 (не commit)
// Транзакция 2: SELECT balance → видит 200 (но Транзакция 1 делает rollback)
  1. Non-Repeatable Read - разные значения при повторном чтении в одной транзакции.
java
// Транзакция 1: SELECT balance → 100
// Транзакция 2: UPDATE balance = 200 и commit
// Транзакция 1: SELECT balance → 200 (значение изменилось)
  1. Phantom Read - появление новых строк при повторном чтении.
java
// Транзакция 1: SELECT COUNT(*) FROM users → 10
// Транзакция 2: INSERT INTO users → commit
// Транзакция 1: SELECT COUNT(*) → 11 (появилась "фантомная" запись)

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

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

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

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

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