❓ Что такое optimistic и pessimistic locking?
Optimistic locking — подход, при котором предполагается, что конфликты редки. Обновление данных проверяется через версионное поле (например, @Version в JPA). Если два потока изменяют одну запись, тот, кто сохраняет изменения вторым, получит ошибку OptimisticLockException. Это дешево по ресурсам, но требует обработки ошибок при конфликте.
Pessimistic locking — «жесткая блокировка»: при чтении или изменении данных сразу ставится блокировка на строку или таблицу (SELECT ... FOR UPDATE). Другие транзакции ждут, пока блокировка не освободится. Это надежнее в сценариях с высокой конкуренцией, но дороже по производительности и может приводить к дедлокам.
👉 На практике выбор зависит от нагрузки: при редких конфликтах лучше optimistic, при частых — pessimistic.
🐸 Библиотека собеса по Java
Post #1065
1.59K
- ❤ 6
- 👍 4
- 🔥 2