1

Я использую Spring-Data-Jpa и использую аннотацию @Lock (PESSIMISTIC_WRITE) для блокировки базы данных (Oracle). Мне нужна помощь в понимании того, может ли следующий сценарий привести к блокировке базы данных.Spring Database Lock: нужна помощь в понимании состояния тупика базы данных

  1. Транзакция 1 (PROPAGATION_REQUIRES_NEW, ISOLATION_DEFAULT) один берет блокировку базы данных через сказать Преподаватель таблицы (говорят, блокировка берется по строке с идентификатором = 1). Он пытается вставить новую запись в дочернюю таблицу say Meeting. В таблице «Учитель» обновление не производится
  2. Пока выполняется транзакция 1. Транзакция 2 (PROPAGATION_REQUIRED, ISOLATION_DEFAULT) пытается обновить таблицу Учителя (строка с id = 1). Он не использует блокировку базы данных.
  3. Поскольку блокировка берется по строке с идентификатором 1. Транзакция 2 должна дождаться завершения транзакции 1.

Может ли это состояние привести к блокировке базы данных?

+0

какой сделка распродажа вы используете? –

+0

Сделка 1 (PROPAGATION_REQUIRES_NEW, ISOLATION_DEFAULT). Транзакция 2 (PROPAGATION_REQUIRED, ISOLATION_DEFAULT) – Suchit

+0

С оракулом по умолчанию изоляция READ COMMITTED. –

ответ

0

Я думаю, что ваше дело приведет к блокировке базы данных, да, но никакой тупик не будет запущен. И блокировка базы данных - это то, что мы ожидаем от реализации транзакции ACID.