互斥條件(Mutual e " /> 免费精品在线视频,亚洲精品久久99蜜芽尤物TV,性xxx免费视频

天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

SQL Server死鎖總結(jié)

  1. 死鎖原理

    根據(jù)操作系統(tǒng)中的定義:死鎖是指在一組進程中的各個進程均占有不會釋放的資源,但因互相申請被其他進程所站用不會釋放的資源而處于的一種永久等待狀態(tài)。

    死鎖的四個必要條件:
互斥條件(Mutual exclusion):資源不能被共享,只能由一個進程使用。
請求與保持條件(Hold and wait):已經(jīng)得到資源的進程可以再次申請新的資源。
非剝奪條件(No pre-emption):已經(jīng)分配的資源不能從相應的進程中被強制地剝奪。
循環(huán)等待條件(Circular wait):系統(tǒng)中若干進程組成環(huán)路,該環(huán)路中每個進程都在等待相鄰進程正占用的資源。

對應到SQL Server中,當在兩個或多個任務中,如果每個任務鎖定了其他任務試圖鎖定的資源,此時會造成這些任務永久阻塞,從而出現(xiàn)死鎖;這些資源可能是:單行(RID,堆中的單行)、索引中的鍵(KEY,行鎖)、頁(PAG8KB)、區(qū)結(jié)構(gòu)(EXT,連續(xù)的8)、堆或B(HOBT) 、表(TAB,包括數(shù)據(jù)和索引)、文件(File,數(shù)據(jù)庫文件)應用程序?qū)S觅Y源(APP)、元數(shù)據(jù)(METADATA)、分配單元(Allocation_Unit)、整個數(shù)據(jù)庫(DB)一個死鎖示例如下圖所示:

 


    說明:
T1T2表示兩個任務;R1R2表示兩個資源;由資源指向任務的箭頭(R1->T1R2->T2)表示該資源被改任務所持有;由任務指向資源的箭頭(T1->S2T2->S1)表示該任務正在請求對應目標資源;
    其滿足上面死鎖的四個必要條件:
(1).互斥:資源S1S2不能被共享,同一時間只能由一個任務使用;
(2).請求與保持條件:T1持有S1的同時,請求S2T2持有S2的同時請求S1
(3).非剝奪條件:T1無法從T2上剝奪S2T2也無法從T1上剝奪S1
(4).循環(huán)等待條件:上圖中的箭頭構(gòu)成環(huán)路,存在循環(huán)等待。

 

2. 死鎖排查

(1). 使用SQL Server的系統(tǒng)存儲過程sp_whosp_lock,可以查看當前數(shù)據(jù)庫中的鎖情況;進而根據(jù)objectID(@objID)(SQL Server 2005)/ object_name(@objID)(Sql Server 2000)可以查看哪個資源被鎖,用dbcc ld(@blk),可以查看最后一條發(fā)生給SQL ServerSql語句;

CREATE Table #Who(spid int,
    ecid 
int,
    status 
nvarchar(50),
    loginname 
nvarchar(50),
    hostname 
nvarchar(50),
    blk 
int,
    dbname 
nvarchar(50),
    cmd 
nvarchar(50),
    request_ID 
int);

CREATE Table #Lock(spid int,
    dpid 
int,
    objid 
int,
    indld 
int,
    
[Type] nvarchar(20),
    Resource 
nvarchar(50),
    Mode 
nvarchar(10),
    Status 
nvarchar(10)
);

INSERT INTO #Who
    
EXEC sp_who active  --看哪個引起的阻塞,blk 
INSERT INTO #Lock
    
EXEC sp_lock  --看鎖住了那個資源id,objid 

DECLARE @DBName nvarchar(20);
SET @DBName='NameOfDataBase'

SELECT #Who.* FROM #Who WHERE dbname=@DBName
SELECT #Lock.* FROM #Lock
    
JOIN #Who
        
ON #Who.spid=#Lock.spid
            
AND dbname=@DBName;

--最后發(fā)送到SQL Server的語句
DECLARE crsr Cursor FOR
    
SELECT blk FROM #Who WHERE dbname=@DBName AND blk<>0;
DECLARE @blk int;
open crsr;
FETCH NEXT FROM crsr INTO @blk;
WHILE (@@FETCH_STATUS = 0)
BEGIN;
    
dbcc inputbuffer(@blk);
    
FETCH NEXT FROM crsr INTO @blk;
END;
close crsr;
DEALLOCATE crsr;

--鎖定的資源
SELECT #Who.spid,hostname,objid,[type],mode,object_name(objid) as objName FROM #Lock
    
JOIN #Who
        
ON #Who.spid=#Lock.spid
            
AND dbname=@DBName
    
WHERE objid<>0;

DROP Table #Who;
DROP Table #Lock;

it知識庫SQL Server死鎖總結(jié),轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 午夜精品久久久久久久99蜜桃 | 7m凹凸国产刺激在线视频 | 国产网站免费观看 | 国产成人免费高清激情视频 | 熟女理发厅 | 亚洲AV噜噜狠狠网址蜜桃尤物 | 国产亚洲精品久久久久久白晶晶 | 一级毛片免费播放 | 美女扒开腿让男人桶个爽 | 撕开美女的衣服2 | GAY东北澡堂激情2022 | 强奷乱码欧妇女中文字幕熟女 | 欧美日韩精品一区二区三区四区 | 国产精品视频第一区二区三区 | 亚洲精品成人AV在线观看爽翻 | 60岁老年熟妇在线无码 | 性女传奇快播 | 色精品极品国产在线视频 | 影音先锋亚洲AV少妇熟女 | 97国产揄拍国产精品人妻 | 久久视频在线视频观看天天看视频 | 变态露出野外调教 | 亚洲色婷婷久久精品AV蜜桃 | 99久久999久久久综合精品涩 | 精品日韩视频 | 欧美又粗又长又大AAAA片 | 野花视频在线观看免费最新动漫 | 窝窝色资源站 | 张开腿我尝尝你的草莓 | 男女无遮挡吃奶gift动态图 | 中文字幕A片视频一区二区 中文字幕AV在线一二三区 | 国产成人欧美日韩在线电影 | 亚洲中文字幕永久在线全国 | 亚洲国产中文在线视频 | 在线观看国产高清免费不卡 | 日韩午夜中文字幕电影 | 国产成人在线播放 | xxx暴力xxx| 好紧好湿太硬了我太爽了小说 | 国产中文字幕免费观看 | 第一次处破女18分钟免费 |