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