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

首頁 > 開發 > 綜合 > 正文

鎖升級

2024-07-21 02:46:30
字體:
來源:轉載
供稿:網友
鎖升級

在今天的文章里,我想談下SQL Server里鎖升級(Lock Escalations)。鎖升級是SQL Server使用的優化技術,用來控制在SQL Server鎖管理里把持鎖的數量。我們首先用SQL Server里所謂的鎖層級(Lock Hierarchy)開始,因為那是在像SQL Server的關系數據庫里,為什么有鎖升級概念存在的原因。

鎖層級(Lock Hierarchy)

下圖展示了SQL Server使用的鎖層級:

從圖里可以看到,鎖層級開始于數據庫層級,向下至行層級。在數據庫本身層級,你一直有一個共享鎖(Shared Lock (S))。當你的查詢連接到一個數據庫(例如USE MyDatabase),共享鎖會阻止數據庫刪除,或者在那個數據庫上還原備份。當你進行一個操作時,在數據庫層級下,在表上,在頁上,在記錄上都會有鎖。

當你執行一個SELECT語句,在表和頁上會有一個意向共享鎖(Intent Shared Lock (IS)),在記錄本身上有共享鎖(Shared Lock (S))。當你進行數據修改語句(INSERT,UPDATE,DELETE),在表和頁上會有一個意向排它或更新鎖(Intent Exclusive or Update Lock (IX or IU)),在改變的記錄上有排它或更新鎖(Exclusive or Update Lock (X or U))。當多個線程嘗試在鎖層級里并發獲取鎖時,SQL Server會一直獲取從頭到腳的鎖來阻止所謂的競爭危害。當你對表進行20000條記錄的刪除操作時,現在想象下這個鎖層級會是什么樣的?我們來假定記錄是400 bytes長,這就意味這在8kb的頁里剛好有20條記錄:

在數據庫上你有1個共享鎖(S),在表上有1個意向排它鎖(IX),在頁上有1000個意向排它鎖(IX)(20000條記錄散布在1000個頁上),最后在記錄本身你有20000個排它鎖(X)。對于DELETE操作總計你獲取了21002個鎖。在SQL Server里每個鎖需要96 bytes的內存,因此對這個簡單的查詢需要1.9MB的鎖。當你并行執行多個查詢時,這個不會無限擴展。因此,SQL Server現在用所謂的鎖升級(Lock Escalation)實現。

鎖升級(Lock Escalations)

在你的鎖層級里一旦有超過5000個鎖,SQL Server會升級這么多的精細粒度(fine-granularity)的鎖為簡單的粗粒度(coarse-granularity)的鎖。默認情況下,SQL Server“總是”升級到表層級。這意味著你的鎖層級從剛才例子的樣子,在鎖升級成功執行后,變成如下的樣子:

如你所見,在表本身上你只有一個大鎖。在DELETE操作的情況下,在表層級你有一個排它鎖(X)。這會以負面傷及你數據庫的并發。在表層級把持一個排它鎖(X)意味者沒有其他回話可以訪問那個表——每個其它查詢會阻塞。當你在可重讀隔離級別(Repeatable Read Isolation Level)運行你的SELECT語句,你也在把持你的共享鎖(S)直到事務結束,這也就是說只要你讀超過5000條記錄就會發生鎖升級。這里的結果是一個共享鎖(S)在表本身!你的表只是暫時只讀,因為在表上每個其它數據修改都會阻塞!

這里還有個誤解——SQL Server會鎖升級從行層級到頁層級,最后到表層級。錯了!在SQL Server里沒有這樣的代碼路徑存在!默認情況下,SQL Server總是會直接升級到表層級。到頁層級的升級策略不存在。如果你的表被分區了(只針對企業版本的SQL Server),那樣的話,你可以配置升級到分區層級。但這里你必須非常仔細測試你的數據訪問模式,因為鎖升級到分區層級會引起死鎖。因此這個選項默認是沒啟用的。

自SQL Server 2008開始,你可以控制SQL Server如何進行鎖升級——通過ALTER TABLE語句和LOCK_ESCALTATION屬性。有3個可用選項:

  • TABLE
  • AUTO
  • DISABLE
1 -- Controllling Lock Escalation2 ALTER TABLE Person.Person3 SET4 (5     LOCK_ESCALATION = AUTO -- or TABLE or DISABLE6 )7 GO

默認選項是TABLE,意味著SQL Server總是執行鎖升級到表層級——即使這個表已被分區。如果你的表已被分區,你想設置分區層級的鎖升級(因為你已經測試了你的數據訪問模式,用它你不會引起死鎖),那么你可以修改選項為AUTOAUTO意味著你的鎖升級會執行到分區層級,如果表被分區的話,否則就到表層級。使用DISABLE選項你可以完全禁用那個表的鎖升級。但是禁用鎖升級并不是最好的選項,因為SQL Server的鎖管理器會消耗大量的內存,如果你對你的查詢和索引設計不深思熟慮的話。

小結

在SQL Server里鎖升級基本是個噩夢。你如何才能從表里刪除5000行記錄而不產生鎖升級?你可以臨時禁用鎖升級,但這里你要非常仔細。另外一個方法(我推薦的)是讓你的DELETE/UPDATE語句在一個循環里,作為不同,獨立的事務:DELETE/UPDATE少于5000行記錄,這樣的話你可以阻止鎖升級。這樣做的好處,你龐大的事務會分解為多個小事務,但也會讓你的事務日志更多,帶來自動增長問題。

感謝關注!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
成人精品在线观看| 丁香五六月婷婷久久激情| 4444欧美成人kkkk| 欧美视频在线观看免费网址| 国产亚洲激情视频在线| 91久久国产精品91久久性色| 久久免费视频在线观看| 91国产在线精品| 欧美黄色成人网| 亚洲字幕一区二区| 精品色蜜蜜精品视频在线观看| 不卡伊人av在线播放| 欧美成人午夜激情视频| 久久九九有精品国产23| 亚洲男人天堂手机在线| 久久精品国产亚洲精品| 亚洲精选中文字幕| 欧美另类暴力丝袜| 久久躁日日躁aaaaxxxx| 欧美一区三区三区高中清蜜桃| 国产视频精品在线| 久久精品久久久久电影| 韩国19禁主播vip福利视频| 久久精品免费电影| 国产精品成av人在线视午夜片| 久久久在线免费观看| 中文字幕亚洲欧美日韩高清| 亚洲影院色在线观看免费| 国产成人精品视频在线观看| 国产精品视频播放| 久久久爽爽爽美女图片| 日韩中文字幕视频在线| 久久精品国产一区| 国产精品99久久久久久人| 亚洲成人黄色在线| 欧洲亚洲免费在线| 国产精品电影网| 国产精品久久久久77777| 97精品久久久中文字幕免费| 国产xxx69麻豆国语对白| 亚洲色图日韩av| 精品色蜜蜜精品视频在线观看| 日韩福利视频在线观看| 国产一区玩具在线观看| 2019中文字幕全在线观看| 97碰碰碰免费色视频| 亚洲最大福利视频| 精品中文字幕在线| 亚洲最大成人网色| 国产欧美中文字幕| 黄色精品在线看| 欧美黄色性视频| 亚洲国语精品自产拍在线观看| 国产一区二区三区在线观看视频| 欧美在线观看网址综合| 久久久久久久亚洲精品| 亚洲精品日产aⅴ| 国产精品久久久久久久久久尿| 亚洲男女自偷自拍图片另类| 97国产一区二区精品久久呦| 欧美大片va欧美在线播放| 日韩视频欧美视频| 午夜精品久久久久久久男人的天堂| 欧美午夜宅男影院在线观看| 欧美日韩中文字幕在线| 国产精品678| 欧美精品激情在线观看| 亚洲欧美自拍一区| 全球成人中文在线| 亚洲片在线资源| 久久人人爽人人爽爽久久| 91产国在线观看动作片喷水| 伊人久久精品视频| 欧美最猛性xxxxx免费| 国产精品6699| 欧美激情a∨在线视频播放| 大胆人体色综合| 国产精品福利观看| 亚洲电影免费观看高清完整版在线观看| 精品性高朝久久久久久久| 成人a在线视频| 欧美激情中文字幕在线| 日韩小视频网址| 国产成人在线一区| 亚洲xxx视频| 亚洲free性xxxx护士hd| 欧美激情亚洲激情| 亚洲色图第一页| 国产欧美精品久久久| 日韩成人在线视频网站| 亚洲成av人乱码色午夜| 亚洲精品在线91| 综合网中文字幕| 国内精品久久久久久影视8| 国产精品国产亚洲伊人久久| 亚洲欧美中文另类| 亚洲精品自产拍| 国产精品伦子伦免费视频| 欧美亚州一区二区三区| 影音先锋欧美在线资源| 操91在线视频| 久久久国产精品x99av| 午夜精品福利在线观看| 久久久女人电视剧免费播放下载| 亚洲精品免费一区二区三区| 国内精品久久久久久久| 91po在线观看91精品国产性色| 91精品啪在线观看麻豆免费| 亚洲成人xxx| 欧美日韩激情小视频| 欧美中文字幕在线视频| 中文字幕亚洲第一| 91色精品视频在线| 久久精品国产2020观看福利| 成人久久久久久久| 国产成人在线一区二区| 精品中文视频在线| 精品一区二区亚洲| 成人免费视频在线观看超级碰| 美女性感视频久久久| 精品久久久91| 欧美日韩ab片| 精品自拍视频在线观看| 丝袜亚洲另类欧美重口| 国产午夜精品全部视频播放| 粉嫩av一区二区三区免费野| 国产精品极品美女在线观看免费| 欧美激情综合色| 成人福利网站在线观看11| 91九色国产社区在线观看| 国产精品视频播放| 亚洲第一福利视频| 91久久久久久久久久久久久| 韩国福利视频一区| 成人信息集中地欧美| 不卡伊人av在线播放| 亚洲国产天堂久久国产91| 欧美日韩国产一区二区| 国产精品精品一区二区三区午夜版| 中文字幕亚洲欧美日韩高清| 国产精品69av| 国产精品成人va在线观看| 91精品久久久久久综合乱菊| 欧美日在线观看| 久久不射电影网| 日韩中文第一页| 亚洲一区二区日本| 色婷婷综合成人av| 亚洲欧美制服丝袜| 亚洲人成在线观看| 日韩中文字幕欧美| 国产精品嫩草影院一区二区| 国产精品青草久久久久福利99| 中文字幕在线亚洲| 日韩免费高清在线观看| 日韩精品小视频| 91精品国产91久久久久久久久| 亚洲老头老太hd| 欧美日韩第一页| 亚洲午夜av久久乱码| 色黄久久久久久| 亚洲综合色av| 日韩精品在线免费观看| 日韩欧美在线看|