数据库死锁阻塞

时间:2013-11-25 07:27:07

标签: database blocking database-deadlocks

数据库死锁主要是由数据库阻塞引起的吗?换句话说是阻止僵局的内在原因?多次阻塞资源是否是死锁的必要条件?如果在数据库中阻止阻止,那意味着我们可以避免数据库死锁吗?

检查了互联网上的不同资源并得出了相互矛盾的答案:

http://docs.oracle.com/cd/E17277_02/html/TransactionGettingStarted/blocking_deadlocks.html

从上述资源中,答案表示以下摘录

  

当两个或多个控制线程被阻塞时发生死锁,   每个等待其他线程持有的资源。当这个   碰巧,线程不可能向前发展   除非一些外部代理人采取行动打破僵局。

http://publib.boulder.ibm.com/tividd/td/BSM/SC32-9084-00/en_US/HTML/bsmd240.htm

从上述资源中,答案表示以下摘录

  

阻止与死锁不同。死锁是一个条件   当两个用户或会话对单独的对象具有锁定时发生   每个进程都试图获取另一个对象的锁定   过程有。 SQL Server会自动检测并解析   死锁。如果遇到死锁,则其中一个进程是   终止,允许其他进程继续。

2 个答案:

答案 0 :(得分:1)

我不认为这两个片段是冲突的。两者都具体,因为两个(或更多)进程/线程中的每一个都有另一个需要的资源。

阻塞和死锁不一样,但是由于阻塞会发生死锁 - 但这只是因为两个进程中的每一个都阻塞了对其他资源的请求。

所以 - 由于阻塞而发生死锁,但阻塞不会自动导致死锁。

答案 1 :(得分:0)

将读/写不一致视为一种疾病,阻断该疾病的药物和作为药物副作用的死锁。