sqlserver中意向鎖的作用是什么

本篇文章給大家分享的是有關(guān)sql server中意向鎖的作用是什么,小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說(shuō),跟著小編一起來(lái)看看吧。

成都創(chuàng)新互聯(lián)公司致力于互聯(lián)網(wǎng)網(wǎng)站建設(shè)與網(wǎng)站營(yíng)銷,提供成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站、網(wǎng)站開發(fā)、seo優(yōu)化、網(wǎng)站排名、互聯(lián)網(wǎng)營(yíng)銷、微信小程序定制開發(fā)、公眾號(hào)商城、等建站開發(fā),成都創(chuàng)新互聯(lián)公司網(wǎng)站建設(shè)策劃專家,為不同類型的客戶提供良好的互聯(lián)網(wǎng)應(yīng)用定制解決方案,幫助客戶在新的全球化互聯(lián)網(wǎng)環(huán)境中保持優(yōu)勢(shì)。

sql server中意向鎖是什么意思

數(shù)據(jù)庫(kù)引擎使用意向鎖來(lái)保護(hù)鎖層次結(jié)構(gòu)的底層資源,以防止其他事務(wù)對(duì)自己鎖住的資源造成傷害,提高鎖沖突檢測(cè)性能。例如,當(dāng)讀取表里的頁(yè)面時(shí),在請(qǐng)求頁(yè)共享鎖(S鎖)之前,事務(wù)在表級(jí)請(qǐng)求共享意向鎖。這樣可以防止其他事務(wù)隨后在表上獲取排他鎖(X鎖),修改整個(gè)表格。意向鎖可以提高性能,因?yàn)閿?shù)據(jù)庫(kù)引擎僅在表級(jí)檢查意向鎖,確定事務(wù)是否能安全地獲取該表上的鎖,而不需要檢查表中的每行或每頁(yè)上的鎖以確定事務(wù)是否可以鎖定整個(gè)表。

如何理解上面這句話的意思呢?我們以一個(gè)實(shí)際例子來(lái)說(shuō)明。

假如有一張Student,其中包含1000條數(shù)據(jù),測(cè)試數(shù)據(jù)如下:

create table Student

(

id int,

name char(30),

constraint pk_id primary key(id)

)

--3.插入1000條記錄

SET NOCOUNT ON;

GO

DECLARE @i int;

SET @i = 1;

WHILE @i <= 1000 BEGIN

INSERT INTO Student values(@i,'zhangsan'+cast(@i as char))

SET @i = @i + 1;

END;

GO

因?yàn)樵O(shè)置了id列為主鍵,那么sql server會(huì)自動(dòng)為其添加聚集索引。假如我們使用如下語(yǔ)句更新表中的數(shù)據(jù),

begin tran

UPDATE Student SET name ='zhangsan' WHERE id=1000;

然后再查詢當(dāng)前的鎖狀態(tài),執(zhí)行如下TSQL

--查看所狀態(tài)

SELECT request_session_id, resource_type, resource_associated_entity_id,

request_status, request_mode, resource_description

FROM sys.dm_tran_locks

sql server中意向鎖的作用

我們可以看到在Object和Page上面加了IX鎖,而在Key上面加了X鎖。

那么在表上加一個(gè)意向排它鎖(IX)有什么用呢?假如此時(shí)有另外一個(gè)事務(wù)要求對(duì)整張表加S鎖,它需要判定能夠?qū)@張表加這個(gè)S鎖。

如果不使用意向鎖的話,那么得遍歷Key查看是否有與S鎖沖突的鎖,而我們上面加鎖的那一條記錄剛好是最后一條,那么就得遍歷所有數(shù)據(jù)。現(xiàn)在只有1000條數(shù)據(jù)還好,數(shù)據(jù)量不大,如果是上千萬(wàn)或者過(guò)億的話,那么消耗會(huì)非常大。

如果使用意向鎖的話,我們就不需要遍歷數(shù)據(jù),我們發(fā)現(xiàn)Key上面有X鎖,那么會(huì)在表上面加一個(gè)IX鎖,而IX鎖與S鎖沖突,因此加S鎖失敗,這樣很快就得到了結(jié)果。

鎖兼容性控制多個(gè)事務(wù)能否同時(shí)獲取同一資源上的鎖。如果資源已被另一事務(wù)鎖定,則僅當(dāng)請(qǐng)求鎖的模式與現(xiàn)有鎖的模式相兼容時(shí),才會(huì)授予新的鎖請(qǐng)求。如果請(qǐng)求鎖的模式與現(xiàn)有鎖的模式不兼容,則請(qǐng)求新鎖的事務(wù)將被迫進(jìn)入等待狀態(tài),阻塞也就隨之產(chǎn)生。例如,如果一個(gè)事務(wù)申請(qǐng)了在某個(gè)資源上的排他鎖(X鎖),則在它釋放排他鎖(X鎖)之前,其他事務(wù)均無(wú)法獲取該資源的任何類型(共享、更新或排他)的鎖。另一種情況是,如果一個(gè)事務(wù)已經(jīng)獲得了某個(gè)資源上的共享鎖(S鎖),則即使第一個(gè)事務(wù)尚未完成,其他事務(wù)也可以獲取該項(xiàng)的共享鎖或更新鎖(U鎖)。但是,在第一個(gè)事務(wù)釋放共享鎖之前,其他事務(wù)無(wú)法獲取排他鎖。

鎖的模式和兼容性是SQL Server預(yù)先定義好的,沒有任何參數(shù)或配置能夠去修改它們。但是可以通過(guò)隔離級(jí)別來(lái)控制申請(qǐng)鎖和釋放鎖的時(shí)機(jī),四個(gè)隔離級(jí)別中申請(qǐng)與釋放S鎖時(shí)機(jī)可以參考:數(shù)據(jù)庫(kù)弱一致性四個(gè)隔離級(jí)別。但是申請(qǐng)鎖的粒度,是數(shù)據(jù)庫(kù)設(shè)計(jì)能夠影響的。如果應(yīng)用申請(qǐng)的鎖粒度都比較小,產(chǎn)生阻塞的幾率就會(huì)比較小。如果一個(gè)連接會(huì)經(jīng)常申請(qǐng)頁(yè)面級(jí)、表級(jí),甚至是數(shù)據(jù)庫(kù)一級(jí)的鎖資源,程序產(chǎn)生阻塞的可能性就會(huì)很大。

以上就是sql server中意向鎖的作用是什么,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見到或用到的。希望你能通過(guò)這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

網(wǎng)頁(yè)名稱:sqlserver中意向鎖的作用是什么
本文來(lái)源:http://m.kartarina.com/article0/jedjoo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站網(wǎng)站策劃企業(yè)網(wǎng)站制作網(wǎng)站營(yíng)銷微信公眾號(hào)品牌網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作
主站蜘蛛池模板: 亚洲av无码天堂一区二区三区 | 亚洲精品天堂无码中文字幕| 免费a级毛片无码a∨免费软件| 免费人妻av无码专区| 日韩人妻无码一区二区三区久久99 | 久久无码中文字幕东京热| 18禁超污无遮挡无码免费网站国产| 国产成人无码精品一区在线观看 | 无码精品不卡一区二区三区 | 人妻中文字幕无码专区| 成人h动漫精品一区二区无码| 午夜不卡无码中文字幕影院| 日韩精品无码永久免费网站| AV无码免费永久在线观看| 亚洲国产精品无码专区在线观看| 国产精品无码久久av不卡| 久久精品无码一区二区WWW| 亚洲熟妇无码八AV在线播放| 日韩精品人妻系列无码av东京| 色爱无码AV综合区| 国产成人精品无码播放| 国产精品无码不卡一区二区三区| 亚洲AV成人无码天堂| 在线看无码的免费网站| 亚洲AV日韩AV永久无码免下载| 久久亚洲国产成人精品无码区| 国产精品爽爽va在线观看无码| 欧美性生交xxxxx无码影院∵| 精品久久亚洲中文无码| 久久无码高潮喷水| 精品久久亚洲中文无码| 6080YYY午夜理论片中无码| 精品无码AV一区二区三区不卡| 无码无套少妇毛多18p| 亚洲AV日韩AV永久无码下载| 亚洲av永久无码精品三区在线4| 亚洲av无码不卡久久| 日韩av无码成人无码免费| 无码视频一区二区三区| 五月天无码在线观看| 亚洲真人无码永久在线|