查詢鎖的表含義(sp_lock)上一篇 / 下一篇 2008-11-05 17:06:47 / 個(gè)人分類:數(shù)據(jù)庫(kù) SP_LOCK 其顯示信息為: Spid:進(jìn)程ID號(hào)(要發(fā)現(xiàn)哪些用戶和該spid相連,你就要執(zhí)行存儲(chǔ)過程sp_who) Dbid:數(shù)據(jù)庫(kù)ID號(hào)(可以在主數(shù)據(jù)庫(kù)中的sysdatabases表格中找到它) Objid:對(duì)象ID號(hào)(要查看這個(gè)對(duì)象,你可以在主數(shù)據(jù)庫(kù)中的sysobjects表格中查詢指定的objid) Indid:索引ID號(hào) Type:縮寫的對(duì)象類型(DB:數(shù)據(jù)庫(kù)、TAB:表、PG:頁(yè)、EXT:簇、RID:行標(biāo)等) Resource:鎖資源 Mode:鎖模式(S:共享鎖、U:修改鎖、X:排它鎖、IS共享意圖鎖、IX排它意圖鎖) Status:當(dāng)前該鎖的狀態(tài)(GRANT獲得狀態(tài)、WAIT被其它進(jìn)程阻塞、CVNT當(dāng)前鎖正在轉(zhuǎn)化)。 當(dāng)你發(fā)現(xiàn)一個(gè)spid 獲得了大量的數(shù)據(jù)庫(kù)鎖定時(shí),這將有助于確定什么存儲(chǔ)過程或語(yǔ)句正在運(yùn)行。為了達(dá)到這個(gè)目的,運(yùn)行以下 DBCC 命令:
DBCC INPUTBUFFER(spid)
這個(gè)DBCC命令將返回正在EventInfo字段中運(yùn)行的語(yǔ)句的相關(guān)信息。 類型列 "類型"列顯示當(dāng)前鎖定的資源類型。 資源類型 描述 RID 用于鎖定表中的一行的行標(biāo)識(shí)符。 KEY 索引中的行鎖。用于保護(hù)可串行事務(wù)中的鍵范圍。 PAG 數(shù)據(jù)或索引頁(yè)。 EXT 相鄰的八個(gè)數(shù)據(jù)頁(yè)或索引頁(yè)構(gòu)成的一組。 TAB 包括所有數(shù)據(jù)和索引在內(nèi)的整個(gè)表。 DB 數(shù)據(jù)庫(kù)。 資源列 "資源"列提供有關(guān)正被鎖定資源的信息。 資源類型 描述 RID 表內(nèi)已鎖定行的行標(biāo)識(shí)符。行由 fileid:page:rid 組合進(jìn)行標(biāo)識(shí),其中,rid 是頁(yè)中的行標(biāo)識(shí)符。 KEY SQL Server 內(nèi)部使用的十六進(jìn)制數(shù)字。 PAG 頁(yè)碼。頁(yè)由 fileid:page 組合進(jìn)行標(biāo)識(shí),其中,fileid 是 sysfiles 表中的 fileid,而 page 是該文件內(nèi)的邏輯頁(yè)碼。 EXT 正被鎖定的擴(kuò)展盤區(qū)中的第一個(gè)頁(yè)碼。頁(yè)由 fileid:page 組合進(jìn)行標(biāo)識(shí)。 TAB 由于 ObjId 列已包含表的對(duì)象 ID,所以沒有提供任何信息。 DB 由于 dbid 列已包含數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù) ID,所以沒有提供任何信息。 在sp_lock的結(jié)果集內(nèi),鎖定的RID資源類型中的資源描述為1:1225:2。這表明在fileid1內(nèi)、頁(yè)碼為1225的頁(yè)中、行標(biāo)識(shí)符為2的行上應(yīng)用了鎖。有關(guān)更多信息,請(qǐng)參見有關(guān)死鎖的疑難解答。 模式列 "模式"列描述正應(yīng)用于資源的鎖類型。鎖類型包括任何多粒鎖。 狀態(tài)列 "狀態(tài)"列顯示鎖是已經(jīng)獲取(GRANT)、正在另一個(gè)進(jìn)程中被阻塞(WAIT)、還是正在轉(zhuǎn)換為另一個(gè)鎖(CNVT)。正轉(zhuǎn)換為另一種鎖的鎖會(huì)保持在一種模式中,但等待獲取更強(qiáng)的鎖模式(例如,從更新模式變?yōu)榕潘J剑?。?dāng)遇到診斷阻塞問題時(shí),會(huì)認(rèn)為CNVT與WAIT類似。 監(jiān)視鎖定活動(dòng)的其它工具 當(dāng)持有和釋放鎖的速度比sp_lock顯示的速度快時(shí),使用sp_lock來顯示鎖定信息并不一定始終可行。在這種情況下,可以使用SQL事件探查器監(jiān)視和記錄鎖定信息。此外,可以使用Windows性能監(jiān)視器監(jiān)視使用SQL Server鎖對(duì)象計(jì)數(shù)器的鎖活動(dòng)。 (1)共享 (S) 用于不更改或不更新數(shù)據(jù)的操作(只讀操作),如 SELECT 語(yǔ)句。 (2)更新 (U) 用于可更新的資源中。防止當(dāng)多個(gè)會(huì)話在讀取、鎖定以及隨后可能進(jìn)行的資源更新時(shí)發(fā)生常見形式的死鎖。 (3)排它 (X) 用于數(shù)據(jù)修改操作,例如 INSERT、UPDATE 或 DELETE。確保不會(huì)同時(shí)對(duì)同一資源進(jìn)行多重更新。 (4)意向 用于建立鎖的層次結(jié)構(gòu)。意向鎖的類型為:意向共享 (IS)、意向排它 (IX) 以及與意向排它共享 (SIX)。 (5)架構(gòu) 在執(zhí)行依賴于表架構(gòu)的操作時(shí)使用。架構(gòu)鎖的類型為:架構(gòu)修改 (Sch-M) 和架構(gòu)穩(wěn)定性 (Sch-S)。 (6)大容量更新 (BU) 向表中大容量復(fù)制數(shù)據(jù)并指定了 TABLOCK 提示時(shí)使用。
|