淺析Sql server鎖,獨(dú)占鎖,共享鎖,更新鎖,樂觀鎖,悲觀鎖
鎖有兩種分類方法。
(1) 從數(shù)據(jù)庫系統(tǒng)的角度來看
鎖分為以下三種類型:
•獨(dú)占鎖(Exclusive Lock)
獨(dú)占鎖鎖定的資源只允許進(jìn)行鎖定操作的程序使用,其它任何對它的操作均不會被接受。執(zhí)行數(shù)據(jù)更新命令,即INSERT、 UPDATE 或DELETE 命令時(shí),SQL Server 會自動(dòng)使用獨(dú)占鎖。但當(dāng)對象上有其它鎖存在時(shí),無法對其加獨(dú)占鎖。獨(dú)占鎖一直到事務(wù)結(jié)束才能被釋放。
•共享鎖(Shared Lock)
共享鎖鎖定的資源可以被其它用戶讀取,但其它用戶不能修改它。在SELECT 命令執(zhí)行時(shí),SQL Server 通常會對對象進(jìn)行共享鎖鎖定。通常加共享鎖的數(shù)據(jù)頁被讀取完畢后,共享鎖就會立即被釋放。
•更新鎖(Update Lock)
更新鎖是為了防止死鎖而設(shè)立的。當(dāng)SQL Server 準(zhǔn)備更新數(shù)據(jù)時(shí),它首先對數(shù)據(jù)對象作更新鎖鎖定,這樣數(shù)據(jù)將不能被修改,但可以讀取。等到SQL Server 確定要進(jìn)行更新數(shù)據(jù)操作時(shí),它會自動(dòng)將更新鎖換為獨(dú)占鎖。但當(dāng)對象上有其它鎖存在時(shí),無法對其作更新鎖鎖定。
(2)從程序員的角度看
鎖分為以下兩種類型:
•樂觀鎖(Optimistic Lock)
樂觀鎖假定在處理數(shù)據(jù)時(shí),不需要在應(yīng)用程序的代碼中做任何事情就可以直接在記錄上加鎖、即完全依靠數(shù)據(jù)庫來管理鎖的工作。一般情況下,當(dāng)執(zhí)行事務(wù)處理時(shí)SQL Server會自動(dòng)對事務(wù)處理范圍內(nèi)更新到的表做鎖定。
•悲觀鎖(Pessimistic Lock)
悲觀鎖對數(shù)據(jù)庫系統(tǒng)的自動(dòng)管理不感冒,需要程序員直接管理數(shù)據(jù)或?qū)ο笊系募渔i處理,并負(fù)責(zé)獲取、共享和放棄正在使用的數(shù)據(jù)上的任何鎖。
相關(guān)文章
sqlserver索引的原理及索引建立的注意事項(xiàng)小結(jié)
本文起點(diǎn)可能會相對高點(diǎn),首先你的很熟悉索引以及他們的存儲結(jié)構(gòu) 有很多地方你可能覺得有異議,歡迎一起討論2012-07-07
一個(gè)完整的SQL SERVER數(shù)據(jù)庫全文索引的示例介紹
以下是介紹SQL SERVER數(shù)據(jù)庫全文索引的示例,以pubs數(shù)據(jù)庫為例。需要的朋友參考下2013-07-07
SQLServer只賦予創(chuàng)建表權(quán)限的全過程
在SQL Server中進(jìn)行各種操作是非常常見的操作,下面這篇文章主要給大家介紹了關(guān)于SQLServer只賦予創(chuàng)建表權(quán)限的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-04-04
sql where 1=1的優(yōu)缺點(diǎn)分析
where 1=1; 這個(gè)條件始終為True,在不定數(shù)量查詢條件情況下,1=1可以很方便的規(guī)范語句2013-04-04
SQL server 2019數(shù)據(jù)庫安裝教程詳解
SQL Server 是Microsoft?公司推出的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),具有使用方便可伸縮性好與相關(guān)軟件集成程度高等優(yōu)點(diǎn),Microsoft SQL Server?數(shù)據(jù)庫引擎為關(guān)系型數(shù)據(jù)和結(jié)構(gòu)化數(shù)據(jù)提供了更安全可靠的存儲功能,本章教程,介紹一下SQL Server 2019的安裝過程2024-09-09
insert into select和select into的使用和區(qū)別介紹
insert into ... select 和 select ... into的使用上有哪些區(qū)別呢?在本文將為大家下詳細(xì)介紹下,不知道的朋友可以了解下2013-09-09

