婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 簡單介紹SQL Server里的閂鎖

簡單介紹SQL Server里的閂鎖

熱門標(biāo)簽:怎樣把地圖標(biāo)注導(dǎo)入公司地址 廣州人工電銷機(jī)器人費(fèi)用 地圖標(biāo)注一個圓圈怎么用 如何在地圖標(biāo)注自己店鋪 寧波人工外呼系統(tǒng)有效果嗎 洛陽外呼系統(tǒng)平臺 真人語音電銷機(jī)器人 電銷機(jī)器人被曝光 400外呼系統(tǒng)合法

在今天的文章里我想談下SQL Server使用的更高級的,輕量級的同步對象:閂鎖(Latch)。閂鎖是SQL Server存儲引擎使用輕量級同步對象,用來保護(hù)多線程訪問內(nèi)存內(nèi)結(jié)構(gòu)。文章的第1部分我會介紹SQL Server里為什么需要閂鎖,在第2部分我會給你介紹各個閂鎖類型,還有你如何能對它們進(jìn)行故障排除。

為什么我們需要閂鎖?
閂鎖首次在SQL Server 7.0里引入,同時微軟首次引入了行級別鎖(row-level locking)。對于行級別鎖引入閂鎖的概念是非常重要的,不然的話在內(nèi)存中會出現(xiàn)丟失更新(Lost Updates)的現(xiàn)象。如我所說的,閂鎖是存儲引擎使用的輕量級同步對象,是SQL Server用來保護(hù)內(nèi)存結(jié)構(gòu)的。閂鎖只不過是類似于多線程編程里的所謂的臨界區(qū)(Critcal Section)概念。

在傳統(tǒng)并發(fā)編程里,臨界區(qū)是同時只能一個線程運(yùn)行的代碼。閂鎖本身是個臨界區(qū)的特殊版本,因?yàn)樗试S多個并發(fā)讀操作。在SQL Server的上下文里這意味著多個線程可以并發(fā)讀取一個共享數(shù)據(jù)結(jié)構(gòu),例如內(nèi)存中的頁,但是寫入共享數(shù)據(jù)結(jié)構(gòu)必須是單個線程進(jìn)行。

閂鎖是用來協(xié)調(diào)數(shù)據(jù)庫里多個線程物理執(zhí)行,然而鎖是基于選擇的事務(wù)隔離級別,用來邏輯獲得需要的隔離級別。作為開發(fā)者或DBA的你,你可以用不同方式影響鎖——例如通過SQL Server里的隔離級別,或者通過各種可用鎖提示。另一方面閂鎖是不能以直接方式控制的。在SQL Server里沒有閂鎖提示,也沒有可用閂鎖隔離級別。下表是鎖和閂鎖之間的比較:

                 鎖(Locks)         閂鎖(Latches)

控制……             事務(wù)              線程
保護(hù)……              數(shù)據(jù)庫內(nèi)容          內(nèi)存中數(shù)據(jù)結(jié)構(gòu)
模式……             共享的(Shared),      保持(Keep),
                 更新(Update),         共享的(Shared),

                 排它的(Exclusive),     更新(Update),排它的(Exclusive),

                 意向的(Intension)      銷毀(Destroy)

死鎖……           檢測并解決(detectionresolution)  通過嚴(yán)謹(jǐn)代碼來避免
保持在……  鎖管理器的哈希表(Hashtable)   保護(hù)的數(shù)據(jù)結(jié)構(gòu)(Protected Data Structure)
從表里可以看到,閂鎖支持更細(xì)粒度保持(Keep)和銷毀(Destroy)模式。保持閂鎖主要用來引用計數(shù),例如當(dāng)你想知道在指定閂鎖上有多少其它閂鎖在等待。銷毀閂鎖是最有限制的一個(它甚至?xí)枞3珠V鎖),當(dāng)閂鎖被銷毀時會用到,例如當(dāng)惰性寫入器(Lazy Writer)想要釋放內(nèi)存中的頁時。我們先介紹下各種閂鎖模式,然后說下各個閂鎖模式的兼容性。

NL(空閂鎖):

                   內(nèi)部
                   未使用

KP(保持閂鎖):

                   可以由多個任務(wù)同時持有
                   只被一個DT模式的閂鎖阻塞

SH(共享閂鎖):

                  讀取數(shù)據(jù)頁的時候使用
                   可以由多個任務(wù)同事持有
                  阻塞EX模式和DT模式的閂鎖

UP(更新閂鎖):

                  寫入系統(tǒng)分配頁面和tempdb的行版本化頁面時使用
                 一個這種模式的閂鎖只能被一個單獨(dú)的任務(wù)持有

EX(排它閂鎖):

                   寫入數(shù)據(jù)頁的時候使用
                   一個這種模式的閂鎖只能被一個單獨(dú)的任務(wù)持有

DT(銷毀閂鎖):

                  很少使用
                  一個這種模式的閂鎖只能被一個單獨(dú)的任務(wù)持有

在SQL Server里,一致性不能只用鎖來獲得。SQL Server還是可以訪問沒被鎖管理器保護(hù)的共享數(shù)據(jù)結(jié)構(gòu),例如頁頭。還有SQL Server基于閂鎖基礎(chǔ)的其他組件也是,有單線程代碼路徑。好了,我們繼續(xù)講解SQL Server里的各種閂鎖類型,還有如何對它們進(jìn)行故障排除。

閂鎖類型與故障排除
SQL Server區(qū)分3個不同閂鎖類別

                   IO閂鎖
                 緩沖區(qū)閂鎖(BUF)
                 非緩沖區(qū)閂鎖(Non-BUF)

我們來詳細(xì)看下這3個不同類別。當(dāng)在緩沖池的頁讀寫操作未完成——即當(dāng)你讀自/寫入你的存儲子系統(tǒng)時(2者未同步),SQL Server會使用IO閂鎖(I/O Latches)。對于這些I/O閂鎖,SQL Server在統(tǒng)計信息里以PAGEIOLATCH_為前綴出現(xiàn)。你可以在DMV sys.dm_os_wait_stats 查看下這些閂鎖類型的等待。

復(fù)制代碼 代碼如下:
SELECT * FROM sys.dm_os_wait_stats WHERE wait_type LIKE 'PAGEIOLATCH_%'

使用這些閂鎖,SQL Server保證那些頁不會并發(fā)多次讀入緩存池,那些頁也不會從緩存池忽略,在那些頁需要被查詢訪問的時候。

除這些I/O閂鎖外,SQL Server也支持所謂的緩存區(qū)閂鎖(Buffer Latches),它用來保護(hù)緩沖池里頁不會被并發(fā)運(yùn)行的線程影響。這些閂鎖,SQL Server使用它們來阻止內(nèi)存中的丟失更新(Lost Updates)。沒有這類閂鎖,在緩存池里會有并發(fā)的讀寫頁,它們會引發(fā)主內(nèi)存里頁的損壞。對于這些緩存閂鎖,SQL Server在統(tǒng)計信息里以PAGELATCH_為前綴出現(xiàn)。你可以在DMV sys.dm_os_wait_stats 查看下這些閂鎖類型的等待。這里最重要的是你涉及了主內(nèi)存的競爭,因?yàn)樗麄兊牡却愋兔Q里不包含IO字樣。

復(fù)制代碼 代碼如下:
SELECT * FROM sys.dm_os_wait_stats WHERE wait_type LIKE 'PAGELATCH_%'

最后SQL Server內(nèi)部使用所謂的非緩存區(qū)閂鎖(Non-Buffer Latches)來保護(hù)除緩沖池外的共享數(shù)據(jù)結(jié)構(gòu)。對于這些非緩存閂鎖,SQL Server在統(tǒng)計信息里以LATCH_為前綴出現(xiàn)。你可以在DMV sys.dm_os_wait_stats 查看下這些閂鎖類型的等待。

復(fù)制代碼 代碼如下:
SELECT * FROM sys.dm_os_wait_stats WHERE wait_type LIKE 'LATCH_%'

但在這個DMV里這些對于非緩存區(qū)閂鎖的等待只是SQL Server內(nèi)部使用的各個閂鎖的概況信息,你可以在單獨(dú)的DMV sys.dm_os_latch_stats找到更詳細(xì)的信息。

復(fù)制代碼 代碼如下:
SELECT * FROM sys.dm_os_latch_stats

SQL Server 2014內(nèi)部使用163個閂鎖來同步共享數(shù)據(jù)結(jié)構(gòu)的訪問。其中一個著名的閂鎖是FGCB_ADD_REMOVE,它用來保護(hù)文件組的文件組控制阻塞( File Group Control Block (FGCB)),在以下特定操作期間:

        文件增長(手動或自動)
       增加/刪除文件組文件
       重新計算填充比重(Recalculating proportional fill weightings)
       在循環(huán)分配期間,通過文件組的文件回收。
當(dāng)你看到這個閂鎖排在前列是,你肯定有太多自動增長操作的問題,原因是你數(shù)據(jù)庫糟糕的默認(rèn)配置。當(dāng)查詢嘗試讀/寫保護(hù)的數(shù)據(jù)結(jié)構(gòu)且需要等待一個閂鎖時,查詢就會進(jìn)入掛起狀態(tài),直到閂鎖可以成功獲取。因此查詢經(jīng)過的整個查詢生命周期包括運(yùn)行(RUNNING),掛起(SUSPENDED),可運(yùn)行(RUNNABLE),最后再次運(yùn)行(RUNNING)。因此,當(dāng)查詢長時間把持閂鎖時,強(qiáng)制共享數(shù)據(jù)結(jié)構(gòu)保護(hù)才有意義。那是因?yàn)楦淖儾樵儬顟B(tài)也意味著進(jìn)行Windows系統(tǒng)里的上下文切換,依據(jù)引入的CPU周期是個很昂貴的操作。

因此對于讀寫頻繁或極短時間內(nèi)的共享數(shù)據(jù)結(jié)構(gòu)上放上閂鎖沒有意義。在這個情況下,需要的上下文切換會殺死SQL Server的整體性能,它需要花費(fèi)太多的時間來完成整個查詢生命周期(運(yùn)行(RUNNING),掛起(SUSPENDED),可運(yùn)行(RUNNABLE))。那就是是SQL Server引入的所謂自旋鎖(Spinlocks)。鎖管理器就是這樣數(shù)據(jù)結(jié)構(gòu)的好例子:當(dāng)鎖定或解鎖數(shù)據(jù)對象(例如記錄,頁等)時只需要單個線程訪問。但當(dāng)你查看sys.dm_os_latch_stats時,你會發(fā)現(xiàn)沒有閂鎖保護(hù)鎖管理器本身。鎖管理器使用的哈希表里對應(yīng)的哈希桶使用自旋鎖來保護(hù)——LOCK_HASH自旋鎖。通過鎖管理器執(zhí)行鎖定和解鎖操作前,必須獲得自旋鎖。

以上就是本文的全部內(nèi)容,希望大家可以喜歡。

您可能感興趣的文章:
  • 淺析Sql server鎖,獨(dú)占鎖,共享鎖,更新鎖,樂觀鎖,悲觀鎖

標(biāo)簽:煙臺 南昌 珠海 咸寧 北海 石家莊 晉中 東營

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《簡單介紹SQL Server里的閂鎖》,本文關(guān)鍵詞  簡單,介紹,SQL,Server,里,的,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《簡單介紹SQL Server里的閂鎖》相關(guān)的同類信息!
  • 本頁收集關(guān)于簡單介紹SQL Server里的閂鎖的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    韩国成人福利片在线播放| 琪琪久久久久日韩精品| 丝袜美腿一区二区三区| av不卡免费电影| 国产女人水真多18毛片18精品视频| 五月综合激情网| 欧美日韩精品一区二区| 亚洲免费观看在线观看| 成人午夜免费视频| 17c精品麻豆一区二区免费| 国模冰冰炮一区二区| 777奇米成人网| 日韩不卡在线观看日韩不卡视频| 欧美精品黑人性xxxx| 国产 日韩 欧美大片| 国产精品天干天干在观线| 成人精品在线视频观看| 亚洲精品精品亚洲| 欧洲人成人精品| 午夜电影一区二区| 777亚洲妇女| 久久精品国产秦先生| 久久久亚洲综合| 国产成人在线视频网址| 亚洲欧美国产高清| 91精品国产综合久久精品| 激情综合网最新| 中文一区一区三区高中清不卡| 成人手机电影网| 尤物av一区二区| 欧美一区二区久久久| 国产精品18久久久久久久久| 亚洲视频综合在线| 日韩亚洲欧美一区二区三区| 国产精品亚洲人在线观看| 亚洲色图清纯唯美| 欧美妇女性影城| 成人丝袜高跟foot| 免费一区二区视频| 亚洲精选视频在线| 欧美电视剧免费全集观看| 99久久久无码国产精品| 日本 国产 欧美色综合| 综合网在线视频| 久久人人超碰精品| 777亚洲妇女| 欧美性受极品xxxx喷水| 国产乱人伦偷精品视频免下载 | 成人高清av在线| 亚洲一区二区精品视频| 国产亚洲综合av| 欧美精品xxxxbbbb| 色婷婷激情一区二区三区| 国产大片一区二区| 日本视频中文字幕一区二区三区| 国产精品理论在线观看| 精品国产乱码久久久久久图片 | 91在线无精精品入口| 久久国产生活片100| 综合电影一区二区三区| 国产日产欧美精品一区二区三区| 欧美一区二区私人影院日本| 一本一道波多野结衣一区二区| 国产成人av自拍| 豆国产96在线|亚洲| 欧美日韩亚州综合| 日本精品裸体写真集在线观看| 国产精品天干天干在线综合| 久久综合999| 日韩欧美一区二区免费| 欧美一区二区三区视频免费播放| 欧美视频在线不卡| 欧美日韩免费不卡视频一区二区三区| 在线观看视频91| 欧美视频在线一区二区三区| 欧美日韩国产中文| 91精品一区二区三区久久久久久| 欧美大片在线观看一区二区| 久久日一线二线三线suv| 国产视频一区二区在线| 中文字幕在线播放不卡一区| 亚洲欧美一区二区久久| 亚洲综合色视频| 日韩精品91亚洲二区在线观看| 青草av.久久免费一区| 韩国成人福利片在线播放| 成人一区二区三区在线观看| av成人动漫在线观看| 在线观看成人免费视频| 欧美高清视频在线高清观看mv色露露十八 | 麻豆精品新av中文字幕| 精品一区二区在线看| 不卡一区在线观看| 欧美日韩精品系列| 久久久久97国产精华液好用吗| 亚洲精品一区二区三区香蕉| 综合激情网...| 蜜桃视频在线观看一区二区| 成人网在线播放| 欧美理论片在线| 久久精品人人做| 亚洲午夜成aⅴ人片| 国产一区二区精品在线观看| 99re8在线精品视频免费播放| 欧美日韩国产成人在线91| 久久久久国产精品免费免费搜索| 亚洲精品乱码久久久久| 韩国av一区二区三区在线观看 | 蜜臂av日日欢夜夜爽一区| 精品一区二区在线视频| 91麻豆6部合集magnet| 欧美裸体一区二区三区| 久久久久久黄色| 中文av一区特黄| 亚洲6080在线| 国内精品伊人久久久久av影院 | 高清国产一区二区三区| 91色婷婷久久久久合中文| 日本精品裸体写真集在线观看 | 亚洲欧洲日韩一区二区三区| 国模大尺度一区二区三区| 在线观看视频一区二区| 972aa.com艺术欧美| www.av亚洲| 99视频有精品| 91色综合久久久久婷婷| 一本大道久久a久久精二百| 99久精品国产| 偷拍日韩校园综合在线| 福利电影一区二区三区| 成人av在线一区二区| 成人午夜免费视频| 一本到不卡精品视频在线观看| 成人国产亚洲欧美成人综合网| 丰满少妇在线播放bd日韩电影| 成人免费视频视频在线观看免费| 日韩欧美亚洲一区二区| 久久五月婷婷丁香社区| 精品国产露脸精彩对白 | 久久久亚洲午夜电影| 青娱乐精品视频| 国内久久精品视频| 久久爱另类一区二区小说| 国内精品伊人久久久久影院对白| 国产成人免费视| 色哦色哦哦色天天综合| 欧美一区二区三区视频免费播放 | 中文字幕日本乱码精品影院| 亚洲女爱视频在线| 亚洲一卡二卡三卡四卡五卡| 日韩女优av电影在线观看| 欧美成人一区二区三区片免费 | 7777精品伊人久久久大香线蕉经典版下载 | 国产一区二区h| 国产成人亚洲综合色影视| 成人av午夜电影| 欧美精品自拍偷拍动漫精品| 精品av综合导航| 亚洲私人黄色宅男| 免费在线一区观看| 久久精品日产第一区二区三区高清版| 亚洲色欲色欲www在线观看| 亚洲第一主播视频| 九九视频精品免费| 一区二区三区丝袜| 亚洲国产精品精华液网站| 经典一区二区三区| 色综合久久88色综合天天免费| 欧美一级黄色大片| 日韩一区二区三区四区| 国产中文字幕一区| 99久久精品一区| 欧美性生活久久| 亚洲国产精品精华液2区45| 亚洲综合色成人| 国产精品理伦片| 亚洲日本在线a| 调教+趴+乳夹+国产+精品| 在线电影一区二区三区| 久久久激情视频| 亚洲综合另类小说| 国产成人av电影在线播放| 欧美v亚洲v综合ⅴ国产v| 亚洲激情一二三区| 国产经典欧美精品| 亚洲免费观看高清完整版在线观看 | 国产精品免费av| 久久电影网电视剧免费观看| 在线免费观看日本欧美| www..com久久爱| 国产一区二区精品在线观看| 91精品国产91久久久久久最新毛片| 亚洲欧美偷拍另类a∨色屁股| 寂寞少妇一区二区三区| 日韩欧美在线网站| 五月天视频一区| 麻豆精品国产传媒mv男同| 欧美男人的天堂一二区| 亚州成人在线电影| 69久久夜色精品国产69蝌蚪网|