Продвинутый
Что такое аномалия Lost Update (Потерянное обновление)?
Lost Update возникает, когда две транзакции одновременно читают одну строку, изменяют ее и записывают обратно. Вторая транзакция затирает изменения первой.
Пример: На складе 10 айфонов. Транзакция А и Б одновременно читают "10". А продает 1 айфон и пишет "9". Б продает 2 айфона и пишет "8". Итог: 8 айфонов, хотя продали 3 (должно быть 7).
✅ Как избежать:
1. Пессимистичная блокировка: SELECT * FROM items WHERE id=1 FOR UPDATE; (Транзакция Б будет ждать).
2. Оптимистичная блокировка: Добавить колонку version и делать UPDATE ... WHERE version = X.