什么原因引起的,比如ORACLE或INFOMIX

解决方案 »

  1.   

    大凡“死锁”,差不多都是这个样子的:两个人,一个人占着资源 A,然后申请资源 B,另一个人占着资源 B,然后申请资源 A,于是,两个人都傻在那里了。这就是死锁。在不同的系统里,“资源”代表的东西不一样,“申请”的方式也不一样。在数据库里,大概 TABLE 就可以算是一种“资源”,“向 TABLE 中插入记录”或者“对 TABLE 进行查询”就算是“申请资源”……
      

  2.   

    死锁,根本原因在于对共享存储区的访问。在数据库中也一样,如果需要“修改”一条数据,首先数据库管理系统会在上面加锁,以保证在同一时间只有一个事务能进行修改操作。锁有多种实现方式,比如意向锁,共享-排他锁,锁表,树形协议,时间戳协议等等。锁还有多种粒度,比如可以在表上加锁,也可以在记录上加锁。在并发控制中,锁是非常重要的。
    至于在Oracle还是别的数据库管理系统中,死锁产生的原因没有不同,不同的顶多是锁的实现或者死锁的恢复等罢了