SQL SERVER中的两种常见死锁及解决思路

sql server中,死锁都与一种锁有关,那就是排它锁(x锁)。由于在同一时间对同一个数据库资源只能有一个数据库进程可以拥有排它锁。因此,一旦多个进程都需要获取某个或者同一个数据库资源的排它访问权,而又被对方所阻止的时候,死锁就会出现。

 

第一种就是最经典的race condition思路,两个数据库进程,ab,则a进程中修改数据表t1(假设id=100),再修改数据表t2(假设id=200);而在进程b中修改数据表t2id=200),然后再修改数据库表t1id=100),当两个进程在并发的情况下,就会出现a尝试获取t2的排他锁或意向排他锁,b尝试获取t1的排他锁或意向排他锁的情况,由于a已经占有了t1的排他锁,b占有了t2

你可能感兴趣的:(数据库)