SQL Server 幾種鎖的區別

2022-01-21 14:02:03 字數 913 閱讀 8044

nolock(不加鎖)    

此選項被選中時,sql  server  在讀取或修改資料時不加任何鎖。  在這種情況下,使用者有可能讀取到未完成事務(uncommited  transaction)或回滾(roll  back)中的資料,  即所謂的「髒資料」。    

holdlock(保持鎖)    

此選項被選中時,sql  server  會將此共享鎖保持至整個事務結束,而不會在途中釋放。    例如,「 select * from my_table holdlock」就要求在整個查詢過程中,保持對錶的鎖定,直到查詢完成才釋放鎖定。

updlock(修改鎖)    

此選項被選中時,sql  server  在讀取資料時使用修改鎖來代替共享鎖,並將此鎖保持至整個事務或命令結束。使用此選項能夠保證多個程序能同時讀取資料但只有該程序能修改資料。    

tablock(表鎖)    

此選項被選中時,sql  server  將在整個表上置共享鎖直至該命令結束。  這個選項保證其他程序只能讀取而不能修改資料。    

paglock(頁鎖)    

此選項為預設選項,  當被選中時,sql  server  使用共享頁鎖。    

tablockx(排它表鎖)    

此選項被選中時,sql  server  將在整個表上置排它鎖直至該命令或事務結束。這將防止其他程序讀取或修改表中的資料。

鎖衝突及其防止辦法 

在資料庫系統中,死鎖是指多個使用者(程序)分別鎖定了乙個資源,並又試圖請求鎖定對方已經鎖定的資源,這就產生了乙個鎖定請求環,導致多個使用者(程序)都處於等待對方釋放所鎖定資源的狀態。 

在sql server中,系統能夠自動定期搜尋和處理死鎖問題。系統在每次搜尋中標識所有等待鎖定請求的程序會話,如果在下一次搜尋中該被標識的程序仍處於等待狀態,sql server就開始遞迴死鎖搜尋。

Mysql幾種鎖的區別

mysql幾種鎖的區別 1 表級鎖 開銷小,加鎖快 不會出現死鎖 鎖定粒度大,發生鎖衝突的概率最高,併發度最低。2 行級鎖 開銷大,加鎖慢 會出現死鎖 鎖定粒度最小,發生鎖衝突的概率最低,併發度也最高。3 頁面鎖 開銷和加鎖時間界於表鎖和行鎖之間 會出現死鎖 鎖定粒度界於表鎖和行鎖之間,併發度一般。...

SQL server鎖的機制

sql server 的所有活動都會產生鎖。鎖定的單元越小,就越能越能提高併發處理能力,但是管理鎖的開銷越大。如何找到平衡點,使併發性和效能都可接受是 sql server 的難點。sql server 有如下幾種瑣 1 共享鎖用於唯讀操作 select 鎖定共享的資源。共享鎖不會阻止其他使用者讀,...

mybatis的幾種鎖

由於對於mysql的鎖機制了解的並不深入,所以翻閱了資料,整理一下自己所理解的鎖。以mysql資料庫的innodb引擎為例,因為innodb支援事務 行鎖 表鎖 且現在大部分公司使用的都是innodb。mysql鎖的使用離不開事務的,所以我們先上點簡單的理論,了解一下事務。事務的基本要素 acid ...