日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

SQL Server 2005查询处理结构-用户模式计划(UMS)

發(fā)布時(shí)間:2025/3/14 数据库 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SQL Server 2005查询处理结构-用户模式计划(UMS) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

SQL Server 2005查詢處理結(jié)構(gòu)-用戶模式計(jì)劃(UMS

?

?? 在對(duì)數(shù)據(jù)庫(kù)進(jìn)行性能調(diào)優(yōu)時(shí),必須全面的考慮各種可能造成系統(tǒng)性能瓶頸的各種因素,因此深入了解SQL Server 2005的查詢處理機(jī)構(gòu)是非常有必要的。下面,我就重點(diǎn)介紹一下用戶模式計(jì)劃(UMS)。

?? SQL Server 使用協(xié)同多處理器模式取代了對(duì)稱多處理器模式。這兩種處理模式之間最大的區(qū)別在于處理器處理計(jì)劃方式不同。在協(xié)同模式下,同一時(shí)間在一個(gè)處理器上只能運(yùn)行一個(gè)線程,并且當(dāng)這個(gè)線程沒(méi)有任務(wù)要運(yùn)行時(shí),就會(huì)放棄對(duì)處理器的控制權(quán)。在這種方式下,可以允許多個(gè)線程相互協(xié)同使實(shí)際執(zhí)行的任務(wù)數(shù)量最大化。

???控制這個(gè)協(xié)同行為是用戶模式計(jì)劃(User Mode Scheduler UMS)的任務(wù)。SQL Server啟動(dòng)時(shí),會(huì)為每個(gè)邏輯的或物理的處理器創(chuàng)建一個(gè)UMS,并且這個(gè)UMS可以在系統(tǒng)中使用。這樣,SQL Server就可以通過(guò)UMS執(zhí)行自己的計(jì)劃,而不是將線程發(fā)送到操作系統(tǒng),由操作系統(tǒng)按計(jì)劃在處理器上執(zhí)行,認(rèn)識(shí)到這一點(diǎn)是非常重要的。

??創(chuàng)建一個(gè)SQL Server的連接時(shí),它對(duì)應(yīng)的SPID就會(huì)分配到UMS。這個(gè)分配的進(jìn)程就會(huì)采用一個(gè)基本的平衡算法,以實(shí)現(xiàn)盡可能的將進(jìn)程平均的分散在多個(gè)UMS中。盡管一個(gè)連接請(qǐng)求通常會(huì)在同一個(gè)UMS中執(zhí)行,但是這個(gè)請(qǐng)求通常會(huì)在同一UMS中執(zhí)行,但是這個(gè)請(qǐng)求還是有可能在任何可用的UMS中處理。

??每個(gè)UMS都使用三個(gè)隊(duì)列來(lái)處理查詢:可執(zhí)行的、正在執(zhí)行的和等待中的。隊(duì)列中的線程遵循先進(jìn)先出的原則。當(dāng)一個(gè)查詢執(zhí)行時(shí),會(huì)為它分配一個(gè)線程并將這個(gè)線程放入到可執(zhí)行的隊(duì)列中,可執(zhí)行隊(duì)列中的線程會(huì)占用處理器。如果線程需要等待I/O、網(wǎng)絡(luò)或內(nèi)存等資源的配置時(shí),它就會(huì)停止處理器的占用,并移入等待中的隊(duì)列。

??等待分配資源的線程會(huì)一直保存在等待的隊(duì)列中。這是,SQL Server會(huì)跟蹤這個(gè)線程等待的時(shí)間量,并用等待時(shí)間表示,當(dāng)分配的資源得到時(shí),就用等待的類型表示。一旦得到分配的資源,這個(gè)線程就會(huì)從等待隊(duì)列中轉(zhuǎn)入可執(zhí)行的隊(duì)列的底部。一個(gè)進(jìn)程從可執(zhí)行的隊(duì)列到轉(zhuǎn)入處理器上之前所花費(fèi)的時(shí)間叫一次等待。?

??處理器計(jì)劃的內(nèi)部執(zhí)行步驟:

?1)查詢首先必須被編譯,需要內(nèi)存和處理器資源;

?2)編譯過(guò)的計(jì)劃必須保存在查詢緩存中, 需要內(nèi)存和處理器資源;

?3)執(zhí)行計(jì)劃會(huì)轉(zhuǎn)入到處理器中以執(zhí)行這個(gè)查詢,需要內(nèi)存、處理器資源和潛在的磁盤I/O

?4)當(dāng)查詢讀/寫數(shù)據(jù)時(shí),必須建立鎖,可能需要更多的內(nèi)存、處理器資源和磁盤I/O

?5)查詢的結(jié)果必須打包并傳送回客戶端,需要內(nèi)存、處理器資源和網(wǎng)絡(luò)I/O

?

?由以上步驟可看,內(nèi)存必須至少被分配5次。如果系統(tǒng)內(nèi)存緊張,這個(gè)進(jìn)程就不得不每次都要等待所需要的內(nèi)存分配,這也就導(dǎo)致了需要5次轉(zhuǎn)入到等待的隊(duì)列中,然后又需要5次轉(zhuǎn)回到可執(zhí)行隊(duì)列。如果發(fā)生這樣的情況,每次資源的分配都會(huì)增加查詢的持續(xù)時(shí)間,查詢效率就會(huì)降低,形成內(nèi)存瓶頸。同樣道理,CPU、磁盤I/O、內(nèi)存、鎖都會(huì)出現(xiàn)這樣的情況。

轉(zhuǎn)載于:https://www.cnblogs.com/dbasys/archive/2009/01/08/1371784.html

總結(jié)

以上是生活随笔為你收集整理的SQL Server 2005查询处理结构-用户模式计划(UMS)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。