對(duì)SQL Server鎖模式的描述
以下的文章主要描述的是SQL Server鎖模式的描述,其意向共享 (IS) 通過(guò)在各資源上放置 S 鎖,表明事務(wù)的意向主要是讀取層次結(jié)構(gòu)中的部分(而不是全部)底層資源。意向排它 (IX) 通過(guò)在各資源上放置 X 鎖。
表明事務(wù)的意向是修改層次結(jié)構(gòu)中的部分(而不是全部)底層資源。IX 是 IS 的超集。
與意向排它共享 (SIX) 通過(guò)在各資源上放置 IX 鎖,表明事務(wù)的意向是讀取層次結(jié)構(gòu)中的全部底層資源并修改部分(而不是全部)底層資源。允許頂層資源上的并發(fā) IS 鎖。例如,表的 SIX 鎖在表上放置一個(gè) SIX 鎖(允許并發(fā) IS 鎖),在當(dāng)前所修改頁(yè)上放置 IX 鎖(在已修改行上放置 X 鎖)。
雖然每個(gè)資源在一段時(shí)間內(nèi)只能有一個(gè) SIX 鎖,以防止其它事務(wù)對(duì)資源進(jìn)行更新,但是其它事務(wù)可以通過(guò)獲取表級(jí)的 IS 鎖來(lái)讀取層次結(jié)構(gòu)中的底層資源。
獨(dú)占鎖:
只允許進(jìn)行鎖定操作的程序使用,其他任何對(duì)他的操作均不會(huì)被接受。執(zhí)行數(shù)據(jù)更新命令時(shí),SQL Server會(huì)自動(dòng)使用獨(dú)占鎖。當(dāng)對(duì)象上有其他鎖存在時(shí),無(wú)法對(duì)其加獨(dú)占鎖。
共享鎖:共享鎖鎖定的資源可以被其他用戶(hù)讀取,但其他用戶(hù)無(wú)法修改它,在執(zhí)行Select時(shí),SQL Server會(huì)對(duì)對(duì)象加共享鎖。
更新鎖:
當(dāng)SQL Server準(zhǔn)備更新數(shù)據(jù)時(shí),它首先對(duì)數(shù)據(jù)對(duì)象作更新鎖鎖定,這樣數(shù)據(jù)將不能被修改,但可以讀取。等到SQL Server確定要進(jìn)行更新數(shù)據(jù)操作時(shí),他會(huì)自動(dòng)將更新鎖換為獨(dú)占鎖,當(dāng)對(duì)象上有其他鎖存在時(shí),無(wú)法對(duì)其加更新鎖。
從程序員的角度看:分為樂(lè)觀鎖和悲觀鎖。
樂(lè)觀鎖:完全依靠數(shù)據(jù)庫(kù)來(lái)管理鎖的工作。
悲觀鎖:程序員自己管理數(shù)據(jù)或?qū)ο笊系逆i處理。
MS-SQLSERVER 使用鎖在多個(gè)同時(shí)在數(shù)據(jù)庫(kù)內(nèi)執(zhí)行修改的用戶(hù)間實(shí)現(xiàn)悲觀并發(fā)控制
以上的相關(guān)內(nèi)容就是對(duì)SQL Server鎖模式的描述的介紹,望你能有所收獲。
上述的相關(guān)內(nèi)容就是對(duì)SQL Server鎖模式描述的描述,希望會(huì)給你帶來(lái)一些幫助在此方面。
【編輯推薦】