亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > SQL Server > 正文

Sql Server之旅——終點站 nolock引發的三級事件的一些思考

2024-08-31 00:54:46
字體:
來源:轉載
供稿:網友
Sql Server之旅——終點站 nolock引發的三級事件的一些思考

  曾今有件事情讓我記憶猶新,那年剛來攜程不久,馬上就被安排寫一個接口,供企鵝公司調用他們員工的差旅信息,然后我就三下五除二的給寫好

了,上線之后,大概過了一個月。。。DBA那邊報告數據庫出現大量鎖超時,并且及時根據sql的來源將email發到了我們部門,指出sql讀取時間過長,

并且缺少nolock,影響了大量機票訂單入庫,然后我就拿著sql去生產環境跑了下,22s。。。花擦。。。項目上線時間太久,版本已經不存在了,無法

回滾。。。原本準備撤下接口。。。看了下撤下接口跟加上nolock時間相差不多,最后決定先加上nolock,發布緊急單。。。然后再優化,DBA那邊暫

時做手工解鎖,發上去后,最后就是損失XXXX訂單。。。定級為三級事件。然后就是追責,當然這個責任只能有老大們去承擔了,出了這次由我引發的

事件,我得思考了,出了事情對我不見得全是壞事,起碼這次會讓我銘記如心,想想也搓,來攜程之前根本就不會關注要不要給select指定nolock,這其

中也包括自己沒遇到過大數據吧,也包括自己的能力有限,只知道有鎖這個玩意,細說的話就啥也不知道了,后來才知道攜程有個規則,就是很多業務產

線所寫的select都必須指定nolock,懂一點的人可能會說nolock可以提升性能,如果你這樣說,確實是這樣,因為數據庫的鎖是有96字節開銷的,沒了

鎖,也就沒有你在PRofile中看到accquired和released痙攣了,當你看完我的事件之后,你可能會意識到,性能提升不是最關心的,最關心就是不要出現

死鎖,鎖等待。。。好了,言歸正傳,下面我們看看到底在數據庫中可以指定多少個鎖???

一:到底可以指定多少個鎖

  這個問題有意思,我們不需要記,只要你裝一個SQL Prompt,有了這個神器,你就知道到底有多少個?如下圖:

1 DROP TABLE dbo.Person2 CREATE TABLE Person(ID INT IDENTITY,NAME CHAR(4000) DEFAULT 'xxxxx')3 INSERT INTO dbo.Person DEFAULT VALUES4 go 6

一眼掃下去,還是蠻多的,不過你要注意了,那些所謂的XXXLock才是我們需要關注的,根據上面的圖,我們大概把鎖分個類。。。

粒度鎖:PAGLOCK,TABLOCK,TABLOCKX,ROWLOCK,NOLOCK

模式鎖:HOLDLOCK, UPDLOCK, XLOCK

接下來我從粒度鎖說起:

1.NOLOCK

  都說nolock是無鎖模式的,那到底是怎樣的無鎖呢???到這篇為止,你應該知道,如果不加nolock,我們的表,數據頁是附加IS鎖的,那接

下來我用profile看下兩者有什么區別?!?/p>

 

從上圖中,你會看到加上nolock之后,object上面附加了Sch-S鎖,這個鎖叫做“架構穩定鎖”,很簡單就是sql編譯時附加的一把鎖,目的就是

防止在編譯時,有其他連接修改表結構,而這個鎖只與Sch-M鎖沖突,與其他鎖都兼容,這說明什么?說明其他連接鎖住了記錄也沒關系,我的

nolock不跟他們打交道,這樣的話,就可能會讀到臟數據,不過沒關系,攜程的很多業務是容許臟數據的,畢竟比鎖等待,死鎖要強得多,再說

nolock讀到了其他連接未修改或者未提交的數據,這個概率也比較低,就算遇到了也沒關系,一般不會招來客訴的,客人或許再刷下頁面,數據

或許就正確了,對不對。。。

2.TABLOCK

  這個還是比較見名識義的,就是附加在table上的鎖,也就是表鎖了,很恐怖的。。。下面我舉個Update的例子,看看前后對比。

在上面你有沒有看到,X鎖已經附加到OBJECT上面去了。。。這樣的話,其他連接就動不了這個Object了,只能等待。。。

3. PAGLOCK

  看了名字你應該也知道,就是附加到頁面這個級別的鎖,我也舉一個Update的例子。

1 BEGIN TRAN2 UPDATE dbo.Person SET NAME='aaaaa' WHERE ID=63 4 BEGIN TRAN5 UPDATE dbo.Person WITH(PAGLOCK) SET NAME='bbbbb' WHERE ID=4

從上面兩個圖中,你應該可以看到,原來附加到RID上面的U鎖,由于PagLock的提升,現在要附加到Page上面了,這個就是所謂的數據頁鎖。

4.TABLOCKX,ROWLOCK

這兩個我就不細說了,TABLOCKX就是直接附加在table上的X鎖,你可以通過select看一下。

ROWLOCK的話,默認情況下就是ROWLOCK,比如默認的Update,你會發現RID上被附加的U鎖,這個就是行鎖。

5.UPDLOCK

 這個鎖還是蠻有意思的,它就是update鎖,如果你select下,它會呈現update的鎖痙攣效果。

  

6.XLOCK

  知道了UPDLOCK鎖,我想XLOCK你也應該明白了。。。它就是delete鎖,即排他鎖,我可以讓select帶上排他鎖。

7.HOLDLOCK

  最后一個我也沒鬧明白,據說是讓語句在整個事務中持有鎖,然后我就用select和update調試一下。

1 SELECT * FROM dbo.Person(HOLDLOCK)2 UPDATE dbo.Person WITH(HOLDLOCK) SET NAME='bbbbb' WHERE ID=4

從圖中可以看到,HOLDLOCK不管是在select還是Update中,都是對表持有鎖,沒心情研究了,明天可以回家了。。。留給大家觀察吧。

最后祝大家新年愉快,闔家歡樂,我也終于在年前完成了這個系列,也祝賀祝賀自己。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91精品视频网站| 国产91在线播放九色快色| 欧美日韩亚洲国产一区| 欧美噜噜久久久xxx| 欧美极品在线播放| 亚洲国产成人精品久久| 亚洲 日韩 国产第一| 亚洲精品国产成人| 国产一区二区日韩精品欧美精品| 欧美大肥婆大肥bbbbb| 欧美资源在线观看| 日韩精品免费观看| 国产成人精品免高潮费视频| 久久久精品美女| 日韩在线免费视频观看| 国产精品人人做人人爽| 精品亚洲一区二区三区| 欧美体内谢she精2性欧美| 国产一区二区在线免费| 日韩三级影视基地| 欧美日韩国产区| 精品福利在线视频| 欧美性感美女h网站在线观看免费| 久久精品国产亚洲精品2020| 亚洲欧美综合另类中字| 久久成人精品视频| 成人有码在线视频| 欧美在线欧美在线| 欧美丝袜一区二区| 亚洲午夜色婷婷在线| 尤物99国产成人精品视频| 精品国模在线视频| 日韩免费观看在线观看| 欧美大秀在线观看| 日韩精品999| 免费91在线视频| 亚洲精品成人免费| 色狠狠久久aa北条麻妃| 日韩精品高清视频| 亚洲国产精品99久久| 国产精品电影网站| 日本最新高清不卡中文字幕| 美女久久久久久久| 最近2019中文免费高清视频观看www99| 欧美性猛交xxxx乱大交蜜桃| 午夜精品久久久久久久男人的天堂| 日本中文字幕不卡免费| 黑人与娇小精品av专区| 国内外成人免费激情在线视频| 国产欧美一区二区三区四区| 国产亚洲一区二区在线| 国产精品一区二区在线| 日韩精品极品在线观看播放免费视频| 欧美激情国产日韩精品一区18| 国产亚洲一区二区精品| 久久999免费视频| 欧美激情按摩在线| 一区二区欧美日韩视频| 日韩免费在线观看视频| 91天堂在线视频| 国产一区二区三区欧美| 热re91久久精品国99热蜜臀| 欧美视频在线视频| 欧美亚洲国产日本| 欧美黑人性猛交| 亚洲xxxx3d| 国产精品男女猛烈高潮激情| 欧美极品在线播放| 国产午夜精品一区理论片飘花| 国产精品视频内| 国产成人精品免高潮费视频| 久久久噜噜噜久久久| 国产99久久精品一区二区| 国产欧美亚洲精品| 国产一区二区三区三区在线观看| 日本亚洲欧美成人| 久久成人精品电影| 亚洲激情视频在线| 中文字幕国产精品| 成人福利网站在线观看11| 日韩精品一区二区视频| 91久久久久久久久久久久久| 午夜精品久久17c| 91高潮精品免费porn| 日韩亚洲精品视频| 亚洲精品乱码久久久久久金桔影视| 国产一区二区视频在线观看| 性欧美在线看片a免费观看| 欧美性生交xxxxx久久久| 午夜精品久久久久久久白皮肤| 日韩精品一区二区视频| 亚洲欧洲中文天堂| 国产亚洲一区精品| 91亚洲国产成人久久精品网站| 欧美日韩国产精品一区二区不卡中文| 亚洲人午夜精品免费| 亚洲天堂开心观看| 国产日韩在线视频| 91免费精品国偷自产在线| 亚洲第一色中文字幕| 亚洲性线免费观看视频成熟| 国产精品99导航| 国产精品自拍偷拍视频| 亚洲色图欧美制服丝袜另类第一页| 成人欧美在线观看| 亚洲国产精品视频在线观看| 国产精品亚洲激情| 国产xxx69麻豆国语对白| 亚洲欧美日韩直播| 亚洲成人aaa| 久久久久久国产三级电影| www.美女亚洲精品| 久久手机免费视频| 一区二区三区亚洲| 欧美专区在线播放| 庆余年2免费日韩剧观看大牛| 国产精品免费一区| 热草久综合在线| 亚洲福利小视频| 亚洲a成v人在线观看| 丰满岳妇乱一区二区三区| 国产美女91呻吟求| 日本久久久a级免费| 欧美精品激情在线观看| 中国人与牲禽动交精品| 日韩av影院在线观看| 国产欧美日韩中文字幕在线| 日韩在线欧美在线国产在线| 亚洲精品456在线播放狼人| 亚洲国产第一页| 欧美亚洲日本网站| 日韩电影在线观看永久视频免费网站| 国产精品一区二区三区成人| 麻豆国产va免费精品高清在线| 精品久久久久久久久久久久| 亚洲精品www久久久| 91久久久在线| 久久精品国产亚洲| 国产成人a亚洲精品| 欧美激情aaaa| 欧美成aaa人片在线观看蜜臀| 亚洲自拍偷拍第一页| 最近中文字幕2019免费| 成人免费视频xnxx.com| 亚洲精品久久久久国产| 日韩一区二区精品视频| 亚洲免费视频一区二区| 中文字幕视频一区二区在线有码| 日韩精品亚洲元码| 国产精品黄色影片导航在线观看| 亚洲国产精品yw在线观看| 色综合五月天导航| 欧美夜福利tv在线| 久久久伊人欧美| 日韩电影在线观看中文字幕| …久久精品99久久香蕉国产| 国产亚洲精品久久久久久| 亚洲另类xxxx| 日本成熟性欧美| 亚洲欧美日韩图片| 欧美成人在线免费视频| 欧美精品在线极品| 黑人巨大精品欧美一区二区| 欧美日韩亚洲视频一区|