日期:2014-05-20  浏览次数:20586 次

什么是数据库的死锁?
什么原因引起的,比如ORACLE或INFOMIX

------解决方案--------------------
大凡“死锁”,差不多都是这个样子的:

两个人,一个人占着资源 A,然后申请资源 B,另一个人占着资源 B,然后申请资源 A,于是,两个人都傻在那里了。这就是死锁。

在不同的系统里,“资源”代表的东西不一样,“申请”的方式也不一样。

在数据库里,大概 TABLE 就可以算是一种“资源”,“向 TABLE 中插入记录”或者“对 TABLE 进行查询”就算是“申请资源”……
------解决方案--------------------
打个比方,把吃饭的筷子比作数据库中的数据。
现有两个人一人一根快吃,两个都不肯放下在自己手中的筷子
,都梦想着,对象能放下筷子。
这就是死锁。
------解决方案--------------------
死锁,根本原因在于对共享存储区的访问。在数据库中也一样,如果需要“修改”一条数据,首先数据库管理系统会在上面加锁,以保证在同一时间只有一个事务能进行修改操作。锁有多种实现方式,比如意向锁,共享-排他锁,锁表,树形协议,时间戳协议等等。锁还有多种粒度,比如可以在表上加锁,也可以在记录上加锁。

在并发控制中,锁是非常重要的。
至于在Oracle还是别的数据库管理系统中,死锁产生的原因没有不同,不同的顶多是锁的实现或者死锁的恢复等罢了
------解决方案--------------------
死锁一般数据库都可以自己去解决的!在并发事物中会出现一些问题,所以数据库采取了一些机制来解决并发问题,但是这样的话可能引起死锁,但是一般数据库都可以自己解决,解决的办法是找一个级别低的事物给搞掉。