SQL Server三種鎖定模式的知識(shí)講解
sql server 鎖定模式有三種:共享( S鎖),更新(U鎖),排他(X鎖);
S鎖是共享鎖,如果事務(wù)T對(duì)數(shù)據(jù)A加上共享鎖后,則其他事務(wù)只能對(duì)A再加共享鎖,不能加排他鎖。獲準(zhǔn)共享鎖的事務(wù)只能讀數(shù)據(jù),不能修改數(shù)據(jù)。
個(gè)人理解為,對(duì)數(shù)據(jù)A的操作就只能是SELECT ,(聯(lián)想下,S鎖,不就是Select的首字母么),其他事務(wù)對(duì)A數(shù)據(jù)的UPDATE ,DELETE都不能進(jìn)行;
U鎖是更新鎖。用于可更新的資源中。防止當(dāng)多個(gè)會(huì)話在讀取、鎖定以及隨后可能進(jìn)行的資源更新時(shí)發(fā)生常見(jiàn)形式的死鎖。
原理解釋:
更新鎖
更新 (U) 鎖可以防止通常形式的死鎖。一般更新模式由一個(gè)事務(wù)組成,此事務(wù)讀取記錄,獲取資源(頁(yè)或行)的共享 (S) 鎖,然后修改行,此操作要求鎖轉(zhuǎn)換為排它 (X) 鎖。
如果兩個(gè)事務(wù)獲得了資源上的共享模式鎖,然后試圖同時(shí)更新數(shù)據(jù),則一個(gè)事務(wù)嘗試將鎖轉(zhuǎn)換為排它 (X) 鎖。
共享模式到排它鎖的轉(zhuǎn)換必須等待一段時(shí)間,因?yàn)橐粋€(gè)事務(wù)的排它鎖與其它事務(wù)的共享模式鎖不兼容;發(fā)生鎖等待。
第二個(gè)事務(wù)試圖獲取排它 (X) 鎖以進(jìn)行更新。
由于兩個(gè)事務(wù)都要轉(zhuǎn)換為排它 (X) 鎖,并且每個(gè)事務(wù)都等待另一個(gè)事務(wù)釋放共享模式鎖,因此發(fā)生死鎖。
若要避免這種潛在的死鎖問(wèn)題,請(qǐng)使用更新 (U) 鎖。一次只有一個(gè)事務(wù)可以獲得資源的更新 (U) 鎖。
如果事務(wù)修改資源,則更新 (U) 鎖轉(zhuǎn)換為排它 (X) 鎖。否則,鎖轉(zhuǎn)換為共享鎖。
個(gè)人理解,打個(gè)比方,A,B都拿把槍指著對(duì)方說(shuō):”我等你放下槍我就放下槍“,大家都等對(duì)方放下槍,于是就這么死僵持著......
X鎖是排他鎖,也叫獨(dú)占鎖,事務(wù)對(duì)A資源的insert ,update ,delete要用獨(dú)占,不然的話亂套了;這是為了保護(hù)數(shù)據(jù)再一次操作中的準(zhǔn)確性;
個(gè)人理解就是,一次一個(gè)....
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接
相關(guān)文章
在IDEA上面連接Sql?Server數(shù)據(jù)庫(kù)教程(親測(cè)有用)
這篇文章主要給大家介紹了關(guān)于在IDEA上面連接Sql?Server數(shù)據(jù)庫(kù)的相關(guān)資料,Idea的還有個(gè)強(qiáng)大之處就是連接數(shù)據(jù)庫(kù),就可以少開(kāi)一個(gè)數(shù)據(jù)庫(kù)工具,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-11-11
數(shù)據(jù)庫(kù)常用的sql語(yǔ)句匯總
這篇文章主要介紹了數(shù)據(jù)庫(kù)常用的sql語(yǔ)句匯總,需要的朋友可以參考下2020-02-02
sql2005 存儲(chǔ)過(guò)程分頁(yè)示例代碼
sql2005分頁(yè)存儲(chǔ)過(guò)程示例2010-03-03
一步步教你建立SQL數(shù)據(jù)庫(kù)的表分區(qū)
分區(qū)存儲(chǔ)提高了數(shù)據(jù)庫(kù)的性能,被分區(qū)存儲(chǔ)的數(shù)據(jù)物理上是多個(gè)文件,但邏輯上任然是一個(gè)表,對(duì)表的任何操作都跟沒(méi)分區(qū)之前一樣。插入、刪除、查詢、更新等操作的時(shí)候,數(shù)據(jù)庫(kù)會(huì)自動(dòng)為你找到對(duì)應(yīng)的分區(qū),然后執(zhí)行操作。2015-09-09
CentOS 9 Stream 上如何安裝 SQL Server&nb
在CentOS9Stream上安裝SQLServer2019,首先需要添加Microsoft的SQLServer存儲(chǔ)庫(kù),然后使用yum命令安裝SQLServer軟件包,安裝完成后,通過(guò)運(yùn)行特定命令配置SQLServer實(shí)例,本文給大家CentOS9 Stream如何安裝 SQL Server 2019,感興趣的朋友一起看看吧2024-11-11
Windows開(kāi)啟SQL?Server服務(wù)及1433端口詳細(xì)教程
這篇文章主要給大家介紹了關(guān)于Windows開(kāi)啟SQL?Server服務(wù)及1433端口的相關(guān)資料,通常端口值是1433,因?yàn)?433是sql server 2000的對(duì)于Tcp/IP的默認(rèn)偵聽(tīng)端口,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2024-05-05
使用FORFILES命令來(lái)刪除SQLServer備份的批處理
利用這些參數(shù)可以構(gòu)造下面的例子來(lái)解決你刪除備份腳本文件的難題。你可以基于更改時(shí)間/日期或者備份類型來(lái)創(chuàng)建腳本。你甚至可以構(gòu)造能夠同時(shí)參照兩種標(biāo)準(zhǔn)的腳本2012-05-05
SQL語(yǔ)句 操作全集 學(xué)習(xí)mssql的朋友一定要看
SQL操作全集 下列語(yǔ)句部分是Mssql語(yǔ)句,不可以在access中使用。2009-03-03

