前言

對于上述鎖其實是一個老生常談的話題了,但是我們是否能夠很明確的知道在什么情況下會存在上述各種鎖類型呢,本節(jié)作為SQL Server系列末篇我們 來詳細(xì)講解下。

Range-Lock

上述關(guān)于RangeS-U、RangeS-S、RnageX-X以及還有RangeI-N這四種鎖屬于范圍鎖(Range-Lock)范疇。那么在什么情況下會存在范圍鎖呢,當(dāng)在SERIAhttp://www.cnblogs.com/CreateMyself/p/6523342.htmlLIZABLE最高隔離級別時范圍鎖將會被用到,這也就意味著直到事務(wù)開啟到結(jié)束查詢出的結(jié)果集是一致的以此來防止幻影。在該隔離級別中鎖定的數(shù)據(jù)集合基于覆蓋了所查詢出的行的索引的鍵值范圍,以此來確保鎖定的范圍的值不會被修改或者其他并發(fā)事務(wù)不會為相同的值范圍插入新值,任何其他事務(wù)對范圍內(nèi)數(shù)據(jù)的修改、添加和刪除都需要修改索引,所以此時將會被阻塞,因為范圍鎖覆蓋了索引條目。下面我們一個個來分析何時出現(xiàn)哪種類型的范圍鎖。

RangeS-S

首先我們創(chuàng)建測試表

CREATE TABLE RangeLock 
(RId int NOT NULL IDENTITY (1, 1) PRIMARY KEY,
Rname nvarchar (20),
SName nvarchar (20))

接下來插入測試數(shù)據(jù):

大學(xué)生就業(yè)培訓(xùn),高中生培訓(xùn),在職人員轉(zhuǎn)行培訓(xùn),企業(yè)團(tuán)訓(xùn)

        		

網(wǎng)友評論