现在的位置: 首页 > 综合 > 正文

死锁总结

2013年10月18日 ⁄ 综合 ⁄ 共 849字 ⁄ 字号 评论关闭

1. 原理 

    根据操作系中的定:死是指在一组进程中的各个程均占有不会放的源,但因互相申被其他程所站用不会放的源而于的一永久等待状

    的四个必要条件:
互斥条件(Mutual exclusion)
源不能被共享,只能由一个程使用。
求与保持条件(Hold and wait):已得到源的程可以再次申新的源。
非剥
条件(No pre-emption):已分配的源不能从相程中被制地剥
等待条件(Circular wait):系中若干路,该环路中程都在等待相邻进程正占用的源。

对应SQL Server中,当在两个或多个任中,如果个任务锁定了其他任务试图锁定的源,此会造成些任永久阻塞,从而出源可能是:(RID,堆中的)、索引中的(KEY,行)(PAG8KB)、区(EXT连续8)、堆或B(HOBT) 、表(TAB,包括数据和索引)、文件(File,数据文件)用程序(APP)、元数据(METADATA)、分配(Allocation_Unit)、整个数据(DB)。一个死示例如下所示:


    
明:T1T2表示两个任R1R2表示两个源;由源指向任的箭(R1->T1R2->T2)表示该资源被改任所持有;由任指向源的箭(T1->S2T2->S1)表示正在对应标资源;
    
足上面死的四个必要条件:
(1).
互斥:S1S2不能被共享,同一时间只能由一个任使用;
(2).
求与保持条件:T1持有S1的同S2T2持有S2的同时请S1
(3).
非剥条件:T1无法从T2上剥S2T2也无法从T1上剥S1
(4).
等待条件:上中的箭构成路,存在循等待。

2.

(1). 使用SQL Server的系储过sp_whosp_lock,可以看当前数据中的情况;

【上篇】
【下篇】

抱歉!评论已关闭.