Spring Database Lock:需要帮助来理解数据库死锁的条件

时间:2016-11-11 05:34:59

标签: spring oracle spring-data-jpa spring-transactions pessimistic-locking

我正在使用Spring-Data-Jpa并使用@Lock批注(PESSIMISTIC_WRITE)来获取数据库(Oracle)锁。我需要帮助以了解以下方案是否会导致数据库死锁。

  1. 事务1(PROPAGATION_REQUIRES_NEW,ISOLATION_DEFAULT)一个数据库锁定,比如说教师表(比如说锁定在id = 1的行上)。它尝试在子表中插入一条新记录,例如Meeting。没有对教师表进行更新
  2. 正在进行交易1。事务2(PROPAGATION_REQUIRED,ISOLATION_DEFAULT)尝试更新Teacher表(id = 1的行)。它不需要数据库锁定。
  3. 由于锁定在id为1的行上。事务2必须等待事务1结束。
  4. 这种情况会导致数据库死锁吗?

1 个答案:

答案 0 :(得分:0)

我认为您的情况会导致数据库锁定,是的,但不会触发死锁。数据库锁定是我们期望实现ACID事务的目的。