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

Что такое потерянное обновление в БД

Потерянное обновление (lost update) — это ситуация, когда изменения, внесенные одной транзакцией, перезаписываются другой транзакцией без учета предыдущих изменений.

Пример:

java
// Транзакция 1: Читает баланс (100)
int balance1 = account.getBalance(); // 100
// Транзакция 2: Читает баланс (100)
int balance2 = account.getBalance(); // 100

// Транзакция 1: Увеличивает на 50 (100 + 50 = 150)
account.setBalance(balance1 + 50);
// Транзакция 2: Уменьшает на 20 (100 - 20 = 80)
account.setBalance(balance2 - 20);

// Итог: баланс = 80 (изменение транзакции 1 потеряно)

text

**Как избежать:**
- Использовать `SELECT FOR UPDATE` (пессимистичная блокировка)
- Оптимистичная блокировка через версии/таймстампы
- Уровни изоляции `REPEATABLE READ` или `SERIALIZABLE`
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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