mik*_*ika 1 mysql postgresql concurrency jpa pessimistic-locking
根据 JPA 2.1 规范...
锁定模式
PESSIMISTIC_READ、PESSIMISTIC_WRITE、 和PESSIMISTIC_FORCE_INCREMENT用于立即获取长期数据库锁定。
我假设悲观锁总是会SELECT ... FOR UPDATE在数据库上触发 SQL,无论使用什么锁模式。现在三个问题:
SELECT ... FOR UPDATE锁定的行。除了锁定行的事务之外,任何其他事务都不能更新锁定的行吗?对于问题1和2,你的假设是正确的:
是的 - 通常使用悲观锁SELECT ... FOR UPDATE,因为大多数数据库和 JPA 实现仅支持这种类型的锁。在这种情况下,READ 和 WRITE 块之间没有区别,只要两者都表现为 WRITE 锁,JPA 规范就允许这样做。
是 - 锁定的行不能被任何其他事务修改。如果是写锁(大多数情况下也适用于读锁 - 答案为 1),则在释放锁之前也无法读取锁定的行。请注意,同一表中的其他未锁定行可以自由读取和修改。
同时回答问题3:
| 归档时间: |
|
| 查看次数: |
1909 次 |
| 最近记录: |