淺析Sql server鎖,獨(dú)占鎖,共享鎖,更新鎖,樂(lè)觀鎖,悲觀鎖
鎖有兩種分類(lèi)方法。
(1) 從數(shù)據(jù)庫(kù)系統(tǒng)的角度來(lái)看
鎖分為以下三種類(lèi)型:
•獨(dú)占鎖(Exclusive Lock)
獨(dú)占鎖鎖定的資源只允許進(jìn)行鎖定操作的程序使用,其它任何對(duì)它的操作均不會(huì)被接受。執(zhí)行數(shù)據(jù)更新命令,即INSERT、 UPDATE 或DELETE 命令時(shí),SQL Server 會(huì)自動(dòng)使用獨(dú)占鎖。但當(dāng)對(duì)象上有其它鎖存在時(shí),無(wú)法對(duì)其加獨(dú)占鎖。獨(dú)占鎖一直到事務(wù)結(jié)束才能被釋放。
•共享鎖(Shared Lock)
共享鎖鎖定的資源可以被其它用戶讀取,但其它用戶不能修改它。在SELECT 命令執(zhí)行時(shí),SQL Server 通常會(huì)對(duì)對(duì)象進(jìn)行共享鎖鎖定。通常加共享鎖的數(shù)據(jù)頁(yè)被讀取完畢后,共享鎖就會(huì)立即被釋放。
•更新鎖(Update Lock)
更新鎖是為了防止死鎖而設(shè)立的。當(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ì)其作更新鎖鎖定。
(2)從程序員的角度看
鎖分為以下兩種類(lèi)型:
•樂(lè)觀鎖(Optimistic Lock)
樂(lè)觀鎖假定在處理數(shù)據(jù)時(shí),不需要在應(yīng)用程序的代碼中做任何事情就可以直接在記錄上加鎖、即完全依靠數(shù)據(jù)庫(kù)來(lái)管理鎖的工作。一般情況下,當(dāng)執(zhí)行事務(wù)處理時(shí)SQL Server會(huì)自動(dòng)對(duì)事務(wù)處理范圍內(nèi)更新到的表做鎖定。
•悲觀鎖(Pessimistic Lock)
悲觀鎖對(duì)數(shù)據(jù)庫(kù)系統(tǒng)的自動(dòng)管理不感冒,需要程序員直接管理數(shù)據(jù)或?qū)ο笊系募渔i處理,并負(fù)責(zé)獲取、共享和放棄正在使用的數(shù)據(jù)上的任何鎖。
- mysql 悲觀鎖與樂(lè)觀鎖的理解及應(yīng)用分析
- Mysql悲觀鎖和樂(lè)觀鎖的使用示例
- thinkPHP框架樂(lè)觀鎖和悲觀鎖實(shí)例分析
- SpringBoot整合MyBatis實(shí)現(xiàn)樂(lè)觀鎖和悲觀鎖的示例
- 基于Django的樂(lè)觀鎖與悲觀鎖解決訂單并發(fā)問(wèn)題詳解
- 實(shí)例講解MySQL中樂(lè)觀鎖和悲觀鎖
- Hibernate悲觀鎖和樂(lè)觀鎖實(shí)例詳解
- Java并發(fā)問(wèn)題之樂(lè)觀鎖與悲觀鎖
- Hibernate實(shí)現(xiàn)悲觀鎖和樂(lè)觀鎖代碼介紹
- Java中數(shù)據(jù)庫(kù)常用的兩把鎖之樂(lè)觀鎖和悲觀鎖
相關(guān)文章
文本、Excel、Access數(shù)據(jù)導(dǎo)入SQL Server2000的方法
昨天參加一個(gè)項(xiàng)目的維護(hù),因?yàn)楦鞣N原因,數(shù)據(jù)在不同服務(wù)器上不一致,所以需要重新將數(shù)據(jù)庫(kù)清空一次,并將整理后的數(shù)據(jù)重新導(dǎo)入。需導(dǎo)入的數(shù)據(jù)源為文本文件,記錄以行存儲(chǔ),“,”逗號(hào)分割各字段,每個(gè)字段值用“”雙引號(hào)封閉。2008-10-10SQL語(yǔ)句查詢數(shù)據(jù)庫(kù)中重復(fù)記錄的個(gè)數(shù)
一個(gè)sql語(yǔ)句:一個(gè)表test有四個(gè)字段id,a,b,c,如果表中的記錄有三個(gè)字段a,b,c都相等,則說(shuō)明這條記錄是相同的,求相同的記錄的個(gè)數(shù) 。2009-11-11MSSQL 檢查所使用的語(yǔ)句是否符合標(biāo)準(zhǔn)
標(biāo)準(zhǔn)SQL和T-SQL之間有很多區(qū)別——太多了,這里就不說(shuō)了。還有,如果你在SQL Server上工作, 那么使用這些私有的擴(kuò)展是有好處的。2009-11-11SqlServer數(shù)據(jù)庫(kù)備份與還原的實(shí)現(xiàn)步驟
這篇文章主要介紹了SqlServer數(shù)據(jù)庫(kù)備份與還原的實(shí)現(xiàn)步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03SQL語(yǔ)言查詢基礎(chǔ):連接查詢 聯(lián)合查詢 代碼
SQL語(yǔ)言查詢基礎(chǔ):連接查詢 聯(lián)合查詢 代碼...2007-03-03