你能纠正我它是如何工作的吗?用事务注释标记的方法。数据库事务在被拦截时是否与 spring 事务一起打开和提交。在这种方法未完成时,数据库中的所有相关资源也会保持锁定状态。例如,在事务方法中,我从数据库中获取了一些实体,然后多次更新或删除了其中的一些。这一切都发生在 spring 事务中,而 DB 事务仅发生在带有必要锁的事务方法结束时???如果方法会挂起,例如死锁,锁定的资源是否会为数据库中的其他资源保持锁定状态?如我所见是的..
DB (postgresql) state:
30179 | username | 00:23:05.688157 | IDLE in transaction
6739 | username | 00:23:13.02717 | IDLE in transaction
6748 | username | 00:23:15.266922 | IDLE in transaction
25595 | username | 00:23:22.382349 | IDLE in transaction
25595 | username | 00:23:22.382349 | IDLE in transaction
他们都持有锁(23、21、20、5、6)。这怎么可能发生?我没有长时间的手术。只有死锁 :D 但这不应该发生!所以当我看到一些事务方法挂起,但资源保持锁定,这导致其他或下一个事务停止,等待锁定的资源和所有系统在某个时刻停止工作......