数据库死锁:
锁分类:
S 共享锁
U 更新锁
X 排它锁
锁兼容性:
锁 S U X
S Y Y N
U Y N N
X N N N
死锁场景:
单表:
场景1: T1, T2 X锁都加不上.
T1 T2
S S
X X
场景2: T1 X锁加不上, T2 U锁加不上.
T1 T2
U S
X U
多表(A,B):
场景3: T1, T2 X锁都加不上.
T1 T2
S(A) S(B)
X(B) X(A)
场景4: T1, T2 S锁都加不上.
T1 T2
X(A) X(B)
S(B) S(A)
场景5: T1, T2 U锁都加不上.
T1 T2
U(A) U(B)
U(B) U(A)
场景6: T1 S锁加不上,T2 U锁加不上.
T1 T2
U(A) X(B)
S(B) U(A)
场景7: T1 S锁加不上,T2 X锁加不上.
T1 T2
S(A) X(B)
S(B) X(A)
场景8: T1 U锁加不上,T2 X锁加不上.
T1 T2
S(A) U(B)
U(B) X(A)
..............
乐观锁:
..............
http://ajava.org/course/open/5391.html
乐观锁是解决并发更新丢失问题,较悲观锁而言性能更好.
关于乐观锁如何进行版本控制, Hibernate 应该是更新时同步了缓存的, 因此在提交之前,做个切点判断实体的版本号是否大于当前数据库的版本号, 就可以抛出异常了. 没看源码,瞎猜的.
在看了代码后,发现是执行更新后,根据返回影响的行数来决定是否抛出异常的,与缓存没关系.
分享到:
相关推荐
关于Oracle数据库死锁问题的研究与讨论
HIS系统SQL Server数据库死锁问题的分析与解决 SQL Server数据库是HIS系统中非常重要的一部分,负责存储和管理大量的医疗数据。然而,在实际应用中,SQL Server数据库可能会出现死锁问题,导致系统性能下降, thậm...
Oracle数据库死锁问题研究.pdf
"Sybase数据库死锁问题" 在Sybase数据库中,死锁的问题对系统的性能和吞吐量都有重要影响。经检测发现,管理信息系统的死锁主要是因为两个或多个线程(登录)抢占同一表数据资源。如果不解决死锁问题,将会对系统的...
总之,解决数据库死锁问题的三种方法各有优缺点,实际应用中应根据具体情况和需求选择最适合的策略。预防死锁虽能有效避免死锁的发生,但可能限制了资源的利用率;检测死锁虽然灵活性较高,但可能会增加系统的复杂性...
Oracle数据库死锁问题研究 (1).pdf
关于Oracle数据库死锁问题的研究与讨论.pdf
数据库死锁问题解决方案 在实际开发中,数据库死锁问题是一个常见的问题,会对系统的性能和吞吐量产生明显的影响。为了解决这个问题,需要从多方面进行考虑。本文将从数据库死锁的定义、类型、解决方案等方面进行...
为了更好地理解和解决数据库死锁问题,下面将详细介绍几种优化策略及实际应用场景。 1. **统一锁定顺序:** 保证在所有事务中按相同顺序锁定资源是预防死锁的有效手段之一。例如,在编写存储过程时,可以明确指定...
本文将深入探讨“sql数据库死锁查询工具”及其在解决数据库死锁和阻塞过程中的作用。 **1. SQL死锁** SQL死锁是指两个或多个事务在执行过程中,因争夺资源而造成的一种相互等待的现象,若无外力干涉,它们都将无法...
Oracle数据库解决死锁 Oracle数据库解决死锁是指在Oracle...解决Oracle数据库死锁问题需要具备一定的数据库管理知识和PL/SQL编程技能。同时,也需要了解Oracle数据库的工作原理和死锁机理,以便更好地解决死锁问题。
标题所提及的"查看数据库死锁信息"是一个至关重要的任务,因为死锁可能导致数据库性能下降,甚至影响到服务的正常运行。当出现"Deadlock found when trying to get to lock; try restarting transaction"这样的错误...
SQLServer数据库死锁介绍,以及使用独立的事务模拟死锁的产生。
一个经典的获取SQLSERVEr数据库死锁及引起锁定的进程的存储过程。执行时,必须具有数据库超级管理员权限。
《InnoDB数据库死锁问题详解及解决策略》 在MySQL数据库中,InnoDB存储引擎以其事务安全性和行级锁定机制而备受青睐。然而,这种高级别的并发控制也带来了一种可能的问题——数据库死锁。本文将深入探讨InnoDB在...
分布式课堂上分享讲的ppt,简要介绍了死锁检测的基本概念,以及分布式数据库几种常见的死锁检测算法。
### ORACLE数据库死锁查杀方法详解 #### 一、引言 在Oracle数据库系统中,当两个或多个事务在等待对方释放资源时,就会出现死锁现象。死锁不仅会降低系统的整体性能,还可能导致某些重要事务长时间无法完成,严重...
数据库死锁,导致其他更新操作无法进行 此时需要查询出该死锁的进程,将其杀死
数据库死锁监控,自动刷新,右键杀死进程,查看存储历史执行时间等信息。