欧美三区四区_av先锋影音资源站_亚洲第一论坛sis_影音先锋2020色资源网_亚洲精品社区_在线免费观看av网站_国产一区二区伦理_亚洲欧美视频一区二区_99视频精品全部免费在线_精精国产xxxx视频在线

基于SQL Server OS的任務調度機制詳解_Mssql數據庫教程

編輯Tag賺U幣

推薦:在SQL Server中實現最短路徑搜索的解決方法
本篇文章小編為大家介紹,在SQL Server中實現最短路徑搜索的解決方法。需要的朋友參考下

簡介

SQL Server OS是在Windows之上,用于服務SQL Server的一個用戶級別的操作系統層次。它將操作系統部分的功能從整個SQL Server引擎中抽象出來,單獨形成一層,以便為存儲引擎提供服務。SQL Server OS主要提供了任務調度、內存分配、死鎖檢測、資源檢測、鎖管理、Buffer Pool管理等多種功能。本篇文章主要是談一談SQL OS中所提供的任務調度機制。

搶占式(Preemptive)調度與非搶占式(non-Preemptive)調度

數據庫層面的任務調度的起源是ACM上的一篇名為“Operating System Support for Database Management”。但是對于Windows來說,在操作系統層面專門加入支持數據庫的任務調度,還不如在SQL Server中專門抽象出來一層進行調度,既然可以抽象出來一層進行數據庫層面的任務調度,那么何不在這個抽象層進行內存和IO等的管理呢?這個想法,就是SQL Server OS的起源。

在Windows NT4之后,Windows任務調度是搶占式的,也就是說Windows任務是根據任務的優先級和時間片來決定。如果一個任務的時間片用完,或是有更高優先級的任務正在等待,那么操作系統可以強制剝奪正在運行的線程(線程是任務調度的基本單位)所占用的CPU,將CPU資源讓給其它線程。

但是對于SQL Server來說,這種非合作式的、基于時間片的任務調度機制就不那么合適了。如果SQL Server使用Windows內的任務調度機制來進行任務調度的話,Windows不會根據SQL Server的調度機制進行優化,只是根據時間片和優先級來中斷線程,這會導致如下兩個缺陷:

Windows不會知道SQL Server中任務(也就是SQL OS中的Task,會在文章后面講到)的最佳中斷點,這勢必會造成更多的Context Switch(Context Switch代價非常非常高昂,需要線程字用戶態和核心態之間轉換),因為Windows調度不是線程本身決定是否該出讓CPU,而是由Windows決定。Windows并不會知道當前數據庫中對應的線程是否正在做關鍵任務,只會不分青紅皂白的奪取線程的CPU。 連入SQL Server的連接不可能一直在執行,每一個Batch之間會有大量空閑時間。如果每個連接都需要單獨占用一個線程,那么SQL Server維護這些線程就需要消耗額外的資源,這是很不明智的。

而對于SQL Server OS來說,線程調度采用的合作模式而不是搶占模式。這是因為這些數據庫內的任務都在SQL Server這個SandBox之內,SQL Server充分相信其內線程,所以除非線程主動放棄CPU,SQL Server OS不會強制剝奪線程的CPU。這樣一來,雖然Worker之間的切換依然是通過Windows的Context Switch進行,但這種合作模式會大大減少所需Context Switch的次數。

SQL Server決定哪一個時間點哪一個線程運行,是通過一個叫Scheduler的東西進行的,下面讓我們來看Scheduler。

Scheduler

SQL Server中每一個邏輯CPU都有一個與之對應的Scheduler,只有拿到Scheduler所有權的任務才允許被執行,Scheduler可以看做一個隊SQLOS來說的邏輯CPU。您可以通過sys.dm_os_schedulers這個DMV來看系統中所有的Scheduler,如圖1所示。

圖1.查看sys.dm_os_schedulers

我的筆記本是一個i7四核8線程的CPU,對應的,可以看到除了DAC和運行系統任務的HIDDEN Scheduler,剩下的Scheduler一共8個,每個對應一個邏輯CPU,用于處理內部Task。當然,您也可以通過設置Affinity來將某些Scheduler Offline,如圖2所示。注意,這個過程是在線的,無需重啟SQL Server就能實現。

圖2.設置Affinity

此時,無需重啟實例就能看到4個Scheduler被Offline,如圖3所示:

圖3.在線Offline 4個Scheduler

一般來說,除非您的服務器上運行其他實例或程序,否則不需要控制Affinity。

在圖1中,我們還注意到,除了Visible的Scheduler之外,還有一些特殊的Scheduler,這些Scheduler的ID都大于255,這類Scheduler都用于系統內部使用,比如說資源管理、DAC、備份還原操作等。另外,雖然Scheduler和邏輯CPU的個數一致,但這并不意味著Scheduler和固定的邏輯CPU相綁定,而是Scheduler可以在任何CPU上運行,只有您設置了Affinity Mask之后,Scheduler才會被固定在某個CPU上。這樣的一個好處是,當一個Scheduler非常繁忙時,可能不會導致只有一個物理CPU繁忙,因為Scheduler會在多個CPU之間移動,從而使得CPU的使用傾向于平均。

這意味著對于一個比較長的查詢,可以前半部分在CPU0上執行,而后半部分在CPU1上執行。

另外,在每一個Scheduler上,同一時間只能有一個Worker運行,所有的資源都就緒但沒有拿到Scheduler,那么這個Worker就處于Runnable狀態。下面讓我們來看一看Worker。

Worker

每一個Worker可以看做是對應一個線程(或纖程),Scheduler不會直接調度線程,而是調度Worker。Worker會隨著負載的增加而增加,換句話說,Worker是按需增加,直到增加到最大數字。在SQL Server中,默認的Worker最大數是由SQL Server進行管理的。根據32位還是64位,以及CPU的數量來設置最大Worker,具體的計算公式,您可以參閱BOL:。當然您也可以設置最大Worker數量,如圖4所示。

圖4.設置最大Worker數量

如果是自動配置,那么SQL Server的最大工作線程數量可以在sys.dm_os_sys_info中看到,如圖5所示。

圖5.查看自動配置的最大Worker數量

一般來說,這個值您都無需進行設置,但也有一些情況,需要設置這個值。那就是Worker線程用盡,此時除了DAC之外,您甚至無法連入SQL Server。

Worker實際上會對應Windows上的一個線程,并與某個特定Scheduler綁定,每一個Worker只要開始執行Task,除非Task完成,否則Worker永遠不會放棄這個Task,如果一個Task在運行過程由于鎖、IO等陷入等待,那么實際上Worker就會陷入等待。

此外,同一個連接內的多個Batch之間傾向于使用同一個Worker,比如第一個Batch使用了Worker 100,那么第二個Batch也同樣傾向于是用Worker 100,但這并不絕對。

正在運行的任務所是用的Worker,我們可以通過DMV sys.dm_exec_requests查看正在運行的任務,其中的Task_Address列可以看到正在運行的Task,再通過sys.dm_os_tasks的Worker_Address來查看對應的Worker。

SQL Server會為每一個Worker保留大約2M左右的內存,對于每一個Scheduler上所能有的Worker數量是服務器的最大Worker數量/在線的Scheduler,每一個Scheduler所綁定的Worker會形成Worker池,這意味著每一個Scheduler需要Worker時,首先在Worker池中中查找空閑的Worker,如果沒有空閑的Worker時,才會創建新的Worker。這個行為會和連接池類似。

那么當一個Scheduler空閑超過15分鐘,或是Windows面臨內存壓力時。SQL Server就會嘗試Trim這個Worker池來釋放被Worker所占用的內存。

Task

Task是Worker上運行的最小任務單元。只能拿到Worker的Task才能夠運行。我們可以看下面一個簡單的例子,如代碼1所示。

 @@VERSION  @@SPID 

代碼1.一個連接上的兩個Batch

代碼1中的兩個Batch屬于一個連接,每一個Batch中都是一個簡單的Task,如我們前面所說,這兩個Task更傾向于復用同一個Worker,因為他們屬于同一個連接。但也有可能,這兩個Task使用了不同的Worker,甚至是不同的Scheduler。

除了用戶所用的Task之外,還有一些永久的系統Task,這類Task會永遠占據Worker,這些Task包括死鎖檢測、Lazy Writer等。

Task在Scheduler上的平均分配

新的Task還會嘗試在Scheduler之間平均分配,可以通過sys.dm_os_schedulers來看到一個load_factor列,這列的值就是用于供Task向Scheduler進行分配時,用來參考。

每次一個新的Task進入Node時,會選擇負載最少的的Scheduler。但是,如果每次都來做一次選擇,那么就會在Task入隊時造成瓶頸(這個瓶頸類似于TempDB SGAM頁爭搶)。因此SQL OS對于每一個連接,都會記住上次運行的Scheduler ID,在新的Task進入時作為提示(Hint)。但如果一個Scheduler的負載大于所有Scheduler平均值的20%,則會忽略這個提示。負載可以通過上面提到的load_factor列來看,對于某個Task運行的時間比較長,則很有可能造成Scheduler上Task分配的不均勻。

Worker的Yield

由于SQL Server是非搶占式調度,那么就不能為了完成某個Task,讓Worker占據Scheduler一直運行。如果是這樣,那么處于Runnable的Worker將會饑餓,這不利于大量并發,也違背了SQL OS調度的初衷。

因此,在合適的時間點讓出Scheduler就是關鍵。Worker讓出CPU使得其它Worker可以運行的過程稱之為yield。yield大體可分為兩種,一種是所謂的“natural yield”,這種方式是Worker在運行過程中被鎖或是某些資源阻塞,此時,該Worker就會讓出Scheduler來讓其它Worker運行。另外一種情況是Worker沒有遇到阻塞,但在時間片到了之后,主動讓出Scheduler,這就是所謂的“voluntarily yield”,這也就是SOS_SCHEDULER_YIELD等待類型的由來,一個Worker由RUNNING狀態轉到WAITING狀態的過程被稱之為switching。SQL OS的一個基本思想就是,要多進行switching,來保證高并發。下面我們來看幾種常見的yield場景:

基于時間片的voluntarily yield大概使得Worker每4秒yield一次。這個值可以通過sys.dm_os_schedulers的quantum_length_us列看到。
每64K結果集排序,就做一次yield。
語句complie,會做yield。
讀取數據頁時
batch中每一句話做完,就會做一次yield。
如果客戶端不能及時取走數據,worker也會做yield。

SQL Server OS中的搶占式任務調度
對于一些代碼來說,SQL Server會存在一些搶占式代碼。如果您在等待類型中看到“PREEMPTIVE_*”類型的等待,說明這里面的代碼正在運行在搶占式任務調度模式。這類任務包括擴展存儲過程、調用Windows API、日志增長(日志填0)。我們知道,合作式的任務調度需要任務本身Yield,但這類代碼在SQL Server 之外,如果讓他們運行在合作式任務調度這個SandBox之內,這類代碼如果不yield,則會永遠占用Scheduler。這是非常危險的。

因此,在進入搶占式模式之前,首先需要將Scheduler的控制權交給在Runable隊列中的下一個Worker。此時,搶占式模式運行的代碼不再由SQL OS控制,轉而由Windows任務調度系統控制。因此一個Task的生命周期如果再加上轉到搶占式任務調度模式,則會如圖6所示


圖6.一個Task完整的生命周期

每一個Scheduler的任務調度

對于每一個Scheduler的調度,一個簡單的模型如圖7所示

圖7.一個Scheduler的調度周期模型

小結
SQL Server OS在Windows之上抽象出一套非搶占式的任務調度機制,從而減少了Context Switch。同時,又有一套線程自己的yield機制,相比Windows隨機搶占數據庫之內的線程而言,讓線程自己來yield則會大量減少Context Switch,從而提升了并發性。

分享:Sql學習第一天——SQL 練習題(建表/sql語句)
來自Madrid且訂單數少于3的消費者,針對這個要求作出以下:建表做題分析以及sql語句的寫法,感興趣的朋友可以參考下哈,希望可以幫助到你

來源:模板無憂//所屬分類:Mssql數據庫教程/更新時間:2013-04-25
相關Mssql數據庫教程
超碰男人的天堂| 国产亚洲精品久久飘花| 9久久婷婷国产综合精品性色| 波多野结衣在线电影| 亚洲第一偷拍| 午夜电影网一区| 日韩免费av在线| 亚洲一区二区福利视频| 性中国xxx极品hd| 性欧美videos另类喷潮| 欧美理论电影在线| 精品91免费| 国产传媒在线看| 精品国产午夜肉伦伦影院| 国产亚洲福利社区一区| 欧美日韩国产第一页| 免费在线激情视频| 国产成人三级在线播放| 久久国产欧美| 日韩一区二区三区精品视频| 欧美日韩综合网| 久操视频免费在线观看| 欧美色女视频| 欧美日韩国产中文字幕 | 人人妻人人澡人人爽欧美一区双| 国产精品免费av一区二区| 久久中文字幕av| 欧美午夜精品久久久久久久| 91麻豆国产语对白在线观看| 免费一级做a爰片久久毛片潮| 中文字幕日韩在线| 国产精品视频线看| 欧美在线视频播放| 久久久久无码国产精品一区李宗瑞| 成人看片网页| 91香蕉视频污| 欧美激情在线狂野欧美精品| 九九九九九九九九| 欧美视频在线视频精品| 久久综合视频网| 97超碰国产精品女人人人爽| 性鲍视频在线观看| 国产不卡精品| 国产精品久久久久aaaa樱花| 国产精品444| 全黄一级裸体片| 秋霞影院一区二区三区| 亚洲成人自拍网| 亚洲伊人第一页| 亚洲女人久久久| 成人嫩草影院| 欧美性一区二区| 欧美一区二视频在线免费观看| 欧美bbbbbbbbbbbb精品| 亚洲二区在线| 精品国产91洋老外米糕| 日本免费a视频| 性欧美8khd高清极品| 国产一级精品在线| 久久国产精品影片| 色诱av手机版| 国产精品视频3p| 五月婷婷激情综合网| 国产一区二区三区黄| 国产无遮挡又黄又爽又色| 亚洲国产电影| 亚洲国产成人精品久久| 欧美日韩成人免费视频| av女名字大全列表| 国产亚洲精品资源在线26u| 国产精品av在线播放| 短视频在线观看| jizzjizz欧美69巨大| 欧美性猛交一区二区三区精品| 亚洲bbw性色大片| 亚洲图片视频小说| 久久97超碰国产精品超碰| 日韩午夜在线视频| 亚洲午夜精品在线观看| 久久电影在线| 色又黄又爽网站www久久| 欧美精品与人动性物交免费看| 丁香社区五月天| 久久99精品久久久久久国产越南 | 99视频免费观看| 国产精品白浆一区二小说| 夜夜嗨网站十八久久| 亚洲嫩模很污视频| 尤物国产在线观看| 成人自拍在线| 欧美综合在线视频| 永久免费网站视频在线观看| 韩国av电影在线观看| 国产亚洲综合在线| 亚洲自拍欧美色图| 国内精品福利视频| 国产中文字幕一区| 欧美在线观看日本一区| 我要看黄色一级片| 欧美亚洲一区二区三区| 免费97视频在线精品国自产拍| 五十路六十路七十路熟婆| 日韩精品久久久久久久电影99爱| 日韩精品在线一区二区| 国产天堂在线播放| 9999久久久久| 欧美美女一区二区在线观看| 人妻少妇精品无码专区二区| 视频欧美精品| 日韩欧美在线免费| 欧美中文字幕在线观看视频| 成人av色网站| 同产精品九九九| 91社在线播放| 嫩草伊人久久精品少妇av杨幂| 亚洲午夜影视影院在线观看| 亚洲精品乱码久久久久久蜜桃91| 蜜臀av免费在线观看| 自拍av一区二区三区| 牛人盗摄一区二区三区视频| 国产黄a三级三级看三级| 国产亚洲欧美激情| 国产亚洲第一区| 99久久精品无免国产免费| 国产网站一区二区| 国产一级精品aaaaa看| 国产精品九九九九| 中文文精品字幕一区二区| 国产一区二区无遮挡| 国产伦一区二区| 国产精品毛片久久久久久久| 蜜桃91精品入口| 亚洲精品国偷拍自产在线观看蜜桃| 亚洲欧洲成人自拍| 亚洲 国产 日韩 综合一区| 欧美1级2级| 欧美性xxxxxxxxx| 草b视频在线观看| 亚洲高清999| 91.com在线观看| 亚洲精品第三页| 色综合久久一区二区三区| 一本色道久久88精品综合| 日韩精品无码一区二区三区久久久| 伊人天天综合| 国产+人+亚洲| 日本三级午夜理伦三级三| 菠萝蜜视频在线观看一区| 99久re热视频这里只有精品6| 国产精品毛片久久久久久久av| 国产欧美一区二区在线| 四虎一区二区| 亚洲伦理久久| 91精品麻豆日日躁夜夜躁| 久久婷婷中文字幕| 亚洲无中文字幕| 欧美成年人视频网站| 在线观看成人毛片| 粉嫩av亚洲一区二区图片| 国产区一区二区三区| 亚洲国产欧美日本视频| 日韩欧美在线视频日韩欧美在线视频 | 亚洲精品自拍网| 天天av综合| 久久国产精彩视频| 久草视频在线免费看| 成人不卡免费av| 蜜桃传媒视频麻豆一区| 日本综合视频| 777欧美精品| 少妇献身老头系列| 亚洲精品视频啊美女在线直播| 97香蕉超级碰碰久久免费的优势| 天堂网av手机版| 国产日本亚洲高清| 中文视频一区视频二区视频三区| 国产精品一区二区三区四区在线观看| 91精品国产91热久久久做人人| 成年人看片网站| 国产亚洲高清视频| 国产精品日本精品| 国产精品伦理一区| 福利视频一区二区| 久久久久久蜜桃一区二区| 亚洲精品一区二区妖精| 久久免费视频观看| 中文天堂在线资源| 亚洲一区国产视频| 色婷婷综合久久久久中文字幕| 亚洲电影在线一区二区三区| 亚州国产精品久久久| 欧美日韩 一区二区三区| 亚洲蜜臀av乱码久久精品蜜桃| 精品久久一二三| 四虎成人av| 国内免费久久久久久久久久久| 久久亚洲精品石原莉奈| 亚洲综合色网站| 中文字幕永久视频| 黄色av一区| 国产日韩在线视频| 香蕉视频成人在线| 制服视频三区第一页精品| 800av在线播放| 国产激情一区二区三区四区| 欧美日韩在线观看一区| 成人性生交大片免费看96| 综合网日日天干夜夜久久| 久久久精品视频免费| 国产精品成人一区二区艾草| 青草视频在线观看视频| 欧美成人激情| 欧美整片在线观看| 精品人妻午夜一区二区三区四区| 在线观看亚洲精品视频| 99精品一区二区三区无码吞精| 久久成人羞羞网站| 久久综合九九| 免费看成人人体视频| 久久深夜福利免费观看| 一级片视频在线观看| 亚洲不卡av一区二区三区| 国产成人美女视频| 日韩国产欧美三级| 精品久久久久久亚洲| 深夜激情久久| 日韩视频永久免费观看| 性高潮视频在线观看| 丁香五六月婷婷久久激情| 亚洲高清av一区二区三区| 另类的小说在线视频另类成人小视频在线 | 欧美日韩在线三级| 中文字字幕码一二三区| 99国内精品久久| 亚洲国产精品成人天堂| 好吊一区二区三区| 7777精品伊久久久大香线蕉语言 | 中文字幕五月欧美| 国产色视频在线播放| 石原莉奈在线亚洲三区| 久久久精品有限公司| 精品国产导航| 国产做受69高潮| 黄频在线免费观看| 亚洲精品v欧美精品v日韩精品| 欧美成欧美va| 一区二区不卡在线视频 午夜欧美不卡在| 亚洲一级免费观看| 蜜桃视频一区二区三区 | 青青视频在线播放| 老鸭窝91久久精品色噜噜导演| 精品国产乱码久久久久久丨区2区| 成人av婷婷| 午夜精品美女自拍福到在线| 免费观看国产精品| 亚洲精品国产欧美| √资源天堂中文在线| 色哟哟一区二区| 亚洲自拍偷拍图| 中文在线一区二区| 日韩成人av免费| 粉嫩高潮美女一区二区三区| 成人免费视频91| 欧美亚洲专区| 日韩视频在线观看国产| 国产精品久久久久久久免费观看| 国产这里只有精品| 天堂久久av| 91精品国产乱码久久久久久久久| 亚欧洲精品视频| 国产一区二区激情| 91在线视频国产| 精品国产凹凸成av人网站| 久久久精品免费看| 欧美私模裸体表演在线观看| 国产天堂av在线| 午夜精彩视频在线观看不卡| 伊人网伊人影院| 亚洲色图丝袜美腿| 波多野结衣一二三区| 亚洲国产精品av| 一级日本黄色片| 久久免费美女视频| 三年中文在线观看免费大全中国| 丰满亚洲少妇av| 天堂在线资源视频| 国产91精品在线观看| 成年人观看网站| 韩国理伦片一区二区三区在线播放 | 日日夜夜操视频| 欧美一区二区免费观在线| 国产无遮挡又黄又爽| 欧美视频一区二区| 久久久精品国产sm调教网站| 91久久香蕉国产日韩欧美9色| 欧美xxxooo| 欧美性色19p| 亚洲色婷婷一区二区三区| 欧美午夜久久久| 国产探花在线免费观看| 欧美性20hd另类| 久久久国产精品黄毛片| 91成人网在线| 九九精品在线观看视频| 在线欧美日韩国产| 国产真实乱偷精品视频| 欧美日韩午夜精品| 国产精品100| 欧美成人三级在线| 一区二区视频播放| 日韩国产高清污视频在线观看| 国产露脸无套对白在线播放| 欧美精品一区二区高清在线观看| 91成人国产综合久久精品| 精品亚洲夜色av98在线观看| 精品免费久久久| 日韩中文字幕av| 亚洲成人看片| 午夜精品久久久久久99热软件| 久久天堂久久| 国产在线播放91| 成人vr资源| 欧美日韩一区二区视频在线观看 | 精品国产一区二区三区四区四| 在线免费a视频| 亚洲最新在线视频| 色香欲www7777综合网| 91wwwcom在线观看| 成人动漫视频| 99九九视频| 欧美精品啪啪| 99亚洲国产精品| 国产毛片精品视频| 日本黄色福利视频| 国产精品久久久久久久浪潮网站| 日韩av在线看免费观看| 污片在线观看一区二区| 久久综合久久鬼| 欧美成人a视频| 午夜老司机福利| 久久露脸国产精品| 精品国产一区二区三区不卡蜜臂| 91精品国产高清久久久久久91裸体| 天天射—综合中文网| 亚洲第一在线综合在线| 男人的j进女人的j一区| 色哟哟精品视频| 国产精品萝li| 999福利视频| 欧美一区在线视频| 国内精品久久久久久久久久| 欧美另类69精品久久久久9999| 狂野欧美xxxx韩国少妇| 91超碰在线免费观看| 亚洲一级电影| 欧美成人高潮一二区在线看| 91丨九色丨尤物| 蜜桃精品一区二区| 在线观看av一区二区| 中文字幕天堂在线| 日韩在线欧美在线| 亚洲一区不卡在线| 韩国av一区二区三区| 午夜xxxxx| 亚洲最大的成人av| 日本三级欧美三级| 国产午夜精品免费一区二区三区| 四虎影视4hu4虎成人| 欧美精品中文| 成人18视频| 亚洲国产精品一区| 欧洲av无码放荡人妇网站| 国产女人18毛片水真多成人如厕| 免费看一级黄色| 精品不卡在线视频| 美女100%一区| 91麻豆国产语对白在线观看| 亚洲精品免费观看| 亚洲精品视频导航| 亚洲综合图片区| 黄色av网站免费观看| 久久视频在线看| 婷婷成人在线| 中日韩在线视频| 91视频免费观看| 免费91在线观看| 亚洲白虎美女被爆操| 国产 日韩 欧美一区| 亚洲一区二区在线| 天堂va蜜桃一区二区三区| 中日韩av在线播放| 精品久久久中文| 亚洲熟女乱色一区二区三区久久久| 久久久久久久久久久国产| 成人在线免费观看91| www.日本少妇| 亚洲欧美综合色| 免费的毛片视频| 久久久久久久999精品视频| 青青草国产成人a∨下载安卓|