前言
對(duì)于上述鎖其實(shí)是一個(gè)老生常談的話題了,但是我們是否能夠很明確的知道在什么情況下會(huì)存在上述各種鎖類型呢,本節(jié)作為SQL Server系列末篇我們 來(lái)詳細(xì)講解下。
Range-Lock
上述關(guān)于RangeS-U、RangeS-S、RnageX-X以及還有RangeI-N這四種鎖屬于范圍鎖(Range-Lock)范疇。那么在什么情況下會(huì)存在范圍鎖呢,當(dāng)在SERIAhttp://www.cnblogs.com/CreateMyself/p/6523342.htmlLIZABLE最高隔離級(jí)別時(shí)范圍鎖將會(huì)被用到,這也就意味著直到事務(wù)開啟到結(jié)束查詢出的結(jié)果集是一致的以此來(lái)防止幻影。在該隔離級(jí)別中鎖定的數(shù)據(jù)集合基于覆蓋了所查詢出的行的索引的鍵值范圍,以此來(lái)確保鎖定的范圍的值不會(huì)被修改或者其他并發(fā)事務(wù)不會(huì)為相同的值范圍插入新值,任何其他事務(wù)對(duì)范圍內(nèi)數(shù)據(jù)的修改、添加和刪除都需要修改索引,所以此時(shí)將會(huì)被阻塞,因?yàn)榉秶i覆蓋了索引條目。下面我們一個(gè)個(gè)來(lái)分析何時(shí)出現(xiàn)哪種類型的范圍鎖。
RangeS-S
首先我們創(chuàng)建測(cè)試表
CREATE TABLE RangeLock (RId int NOT NULL IDENTITY (1, 1) PRIMARY KEY, Rname nvarchar (20), SName nvarchar (20))
接下來(lái)插入測(cè)試數(shù)據(jù):
網(wǎng)友評(píng)論