Проверяет понимание механизмов защиты данных от гонок.
Optimistic locking предполагает, что конфликты редки: обновление проходит только если версия строки не изменилась. Pessimistic locking блокирует строку заранее. Оптимистичный лучше, когда число конфликтов низкое и блокировки вредны.
Использует версионность:
UPDATE users SET balance = ... WHERE id = 1 AND version = 10Если version изменилась — UPDATE ничего не изменит → конфликт.
Плюсы:
нет долгих блокировок
масштабируется
безопасно при редких конфликтах
Использует:
SELECT ... FOR UPDATE;Блокирует строку до конца транзакции.
Плюсы:
нет конфликтов
подходит для банковских операций
Минусы:
возможны deadlock
слабая масштабируемость
Вывод:
optimistic — для high-load;
pessimistic — для критичных финансовых операций.