Встречается на собеседованиях • сегодня
Что такое потерянное обновление в БД
Потерянное обновление (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`
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы