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