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

Что нужно учитывать при использовании пессимистичных блокировок

Пессимистичные блокировки (pessimistic locking) предполагают, что конфликты при доступе к данным вероятны, поэтому ресурс блокируется заранее. Основные моменты:

  1. Производительность – блокировка снижает параллелизм, что может стать узким местом в высоконагруженных системах.

  2. Deadlocks – возможны взаимоблокировки, если транзакции блокируют ресурсы в разном порядке. Нужно соблюдать единый порядок блокировок.

  1. Таймауты – важно задавать разумные таймауты, чтобы избежать зависаний при долгих блокировках.

  2. Уровни изоляции – обычно используется SERIALIZABLE или REPEATABLE_READ.

Пример с JPA:

java
EntityManager em = ...;
EntityTransaction tx = em.getTransaction();
tx.begin();
// Блокируем сущность для изменения
Product product = em.find(Product.class, 1L, LockModeType.PESSIMISTIC_WRITE);
product.setStock(product.getStock() - 1);
tx.commit(); // Блокировка снимается

Лучше использовать для коротких операций с высокой конкуренцией, где оптимистичные блокировки приводят к частым откатам.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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