SQL Server 2008資源調控器概念

iSQlServer發表於2008-12-18

下面的三個概念是瞭解和使用資源調控器的基礎:

資源池。安裝 SQL Server 2008 時,會建立兩個資源池(內部資源池和預設資源池)。資源調控器還支援使用者定義的資源池。

工作負荷組。安裝 SQL Server 2008 時,會建立兩個工作負荷組(內部工作負荷組和預設工作負荷組)並將其對映到對應的資源池。資源調控器還支援使用者定義的工作負荷組。

分類。存在用於對傳入請求進行分類並將它們路由到工作負荷組的內部規則。資源調控器還支援用於實現分類規則的分類器使用者定義的函式。

注意:
資源調控器不向專用管理員連線 (DAC) 施加任何控制。無需對在內部工作負荷組和資源池中執行的 DAC 查詢進行分類。
 


在資源調控器的上下文中,您可以將前面的概念視為元件。下圖顯示了這些元件及其在資料庫引擎環境中相互之間的關係。從處理的角度,簡化的流程如下所示:

會話有傳入的連線(Session 1,共 n 個)。

會話已分類(分類)。

會話工作負荷將路由到工作負荷組,例如,Group 4。

工作負荷組使用與其關聯的資源池,例如,Pool 2。

資源池提供並限制應用程式所需的資源,例如,Application 3。


 資源池
資源池或池表示伺服器的物理資源。您可以將池看作 SQL Server 例項內部的一個虛擬 SQL Server 例項。

池有兩個部分。一部分不與其他池重疊,這使得資源預留最少。另一部分與其他池共享,支援最大可能的資源消耗。在此版本的資源調控器中,通過為每個資源指定下列項之一來設定池資源:

CPU 的 MIN 或 MAX

記憶體的 MIN 或 MAX

對於每個這種資源,MIN 表示池的最少保證可用資源,MAX 表示池的最大大小。

所有池的 MIN 值之和不能超過伺服器資源的 100%。MAX 值可以設定為 MIN 和 100% 之間(包括 100%)的範圍內的任何值。

如果為某池定義了非零 MIN,則其他池的有效 MAX 值將重新調整為以下兩者中的最小值:為該池配置的 MAX 值;從 100% 中減去其他池的 MIN 值之和。

下表說明了上述概念。該表顯示了內部池、預設池和兩個使用者定義池的設定。下面的公式用於計算有效 MAX 百分比和共享百分比。

Min(X,Y) 表示 X 和 Y 中的較小值。

Sum(X) 表示所有池的 X 值之和。

總計共享百分比 = 100 - sum(MIN %)。

有效 MAX 百分比 = min(X,Y)。

共享百分比 = 有效 MAX 百分比 - MIN 百分比。

池名稱  MIN 百分比設定  MAX 百分比設定  計算的有效 MAX 百分比  計算的共享百分比  註釋 
內部
 0
 100
 100
 0
 有效 MAX 百分比和共享百分比不適用於內部池。
 
預設
 0
 100
 30
 30
 有效 MAX 值計算如下:min(100,100-(20+50)) = 30。計算的共享百分比為有效 MAX - MIN = 30。
 
池 1
 20
 100
 50
 30
 有效 MAX 值計算如下:min(100,100-50) = 50。計算的共享百分比為有效 MAX - MIN = 30。
 
池 2
 50
 70
 70
 20
 有效 MAX 值計算如下:min(70,100-20) = 70。計算的共享百分比為有效 MAX - MIN = 20。
 

以上表為示例,我們可以進一步說明建立其他池時進行的調整。此池為池 3,MIN 百分比設定為 5。

池名稱  MIN 百分比設定  MAX 百分比設定  計算的有效 MAX 百分比  計算的共享百分比  註釋 
內部
 0
 100
 100
 0
 有效 MAX 百分比和共享百分比不適用於內部池。
 
預設
 0
 100
 25
 30
 有效 MAX 值計算如下:min(100,100-(20+50+5)) = 25。計算的共享百分比為有效 MAX - MIN = 25。
 
池 1
 20
 100
 45
 25
 有效 MAX 值計算如下:min (100,100-55) = 45。計算的共享百分比為有效 MAX - MIN = 25。
 
池 2
 50
 70
 70
 20
 有效 MAX 值計算如下:min(70,100-25) = 70。計算的共享百分比為有效 MAX - MIN = 20。
 
池 3
 5
 100
 30
 25
 有效 MAX 值計算如下:min(100,100-70) = 30。計算的共享百分比為有效 MAX - MIN = 25。
 

池的共享部分用於指示在有可用資源時,可用資源的流向。但是,在消耗資源時,資源流向指定的池,不能共享。這在給定池中沒有請求並且為該池指定的資源可以釋放到其他池時,能夠提高資源使用率。

池配置的某些極特殊情況是:

所有池定義的最小值的總計表示 100% 的伺服器資源。在這種情況下,有效最大值等於最小值。這等於將伺服器資源劃分為無重疊部分,而不考慮任何指定池內的資源消耗情況。

所有池的最小值為零。所有池競爭使用可用資源,其最終大小基於各個池消耗的資源。其他因素(如策略)也對調整最終池大小起作用。

資源調控器預定義兩個資源池:內部池和預設池。

內部池

內部池表示由 SQL Server 自身消耗的資源。這個池始終只包含內部組,在任何情況下都不允許更改池。不限制內部池的資源消耗。池中的所有工作負荷均視為伺服器函式的關鍵內容,資源調控器允許內部池在與其他池的限制發生衝突時爭用資源。

注意:
不從總體資源使用情況中減去內部池和內部組資源使用情況。使用可用的總體資源計算百分比。
 


預設池

預設的池是第一個預定義的使用者池。在進行任何配置之前,預設池只包含預設組。不能建立或刪除預設池,但可以更改。預設池除了包含預設組,還可以包含使用者定義的組。

注意:
可以更改預設組,但不能從預設池中移出。
 


使用者定義的資源池

資源調控器提供用於建立、更改和刪除資源池的 DDL 語句。有關詳細資訊,請參閱資源調控器 DDL 和系統檢視。

 工作負荷組
工作負荷組是會話請求的容器,根據應用於每個請求的分類標準這些會話被認為是相似的。利用工作負荷組可對資源佔用進行聚合監視並可將統一策略應用至組中的所有請求。組為其成員定義策略。

注意:
使用者定義的工作負荷組可以從一個資源池移動到另一個資源池。
 


資源調控器預定義了兩個工作負荷組:內部組和預設組。使用者無法更改任何已歸入內部組類的請求,但可以對其進行監視。當滿足下列條件時,請求會被歸入預設組類:

沒有用於對請求進行分類的標準。

曾經嘗試將請求歸入不存在的組類。

存在常規性的分類錯誤。

資源調控器還提供了用於建立、更改和刪除工作負荷組的 DDL 語句。有關詳細資訊,請參閱資源調控器 DDL 和系統檢視。

 分類
資源調控器支援對傳入會話的分類。分類基於函式中包含的一組使用者編寫的條件。函式邏輯的結果使資源調控器可以將會話歸入現有工作負荷組類。

注意:
內部工作負荷組中填入的是僅供內部使用的請求。您不能更改用於路由這些請求的標準,也不能將請求歸入內部工作負荷組類。
 


您可以編寫一個標量函式,在其中包含用於將傳入會話分配給工作負荷組的邏輯。必須先完成下列操作,才能使用此函式:

使用 ALTER RESOURCE GOVERNOR 語句建立並註冊此函式。有關詳細資訊,請參閱 ALTER RESOURCE GOVERNOR (Transact-SQL)。

使用帶 RECONFIGURE 引數的 ALTER RESOURCE GOVERNOR 語句更新資源調控器配置。

建立此函式並應用配置更改後,資源調控器分類器將使用此函式返回的工作負荷組名稱將新請求傳送到相應的工作負荷組。

重要提示:
如果分類函式沒有在指定的登入超時內完成,則客戶端會話將超時。登入超時是客戶端屬性,因此伺服器意識不到超時。長時間執行的分類器函式可使伺服器長期保留孤立連線。建立在連線超時之前完成其執行的分類器函式非常重要。
 


使用者定義的函式具有以下特徵和行為:

將針對每個新會話評估使用者定義函式,即使在啟用了連線池的情況下也會這樣做。

使用者定義的函式為會話提供工作負荷組上下文。確定組成員身份後,此會話將在會話的整個生存期內一直繫結到工作負荷組。

如果使用者定義的函式返回預設值 NULL 或不存在的組名稱,則會話將擁有預設工作負荷組上下文。如果由於任何原因而導致函式失敗,則會話也將擁有預設上下文。

函式應在伺服器範圍(master 資料庫)內定義。

分類器使用者定義的函式的指定只在執行 ALTER RESOURCE GOVERNOR RECONFIGURE 時生效。

一次只能將一個使用者定義的函式指定為分類器。

除非刪除分類器使用者定義函式的分類器狀態,否則不能刪除或更改分類器使用者定義的函式。

如果缺少分類器使用者定義的函式,則將所有會話歸入預設組類。

分類器函式返回的工作負荷組位於架構繫結限制的作用域之外。例如,不能刪除表,但可以刪除工作負荷組。

重要提示:
建議在伺服器上啟用專用管理員連線 (DAC)。DAC 不進行資源調控器分類,因此可用於監視分類器函式並排除其故障。有關詳細資訊,請參閱使用專用管理員連線。如果沒有 DAC 可用來進行故障排除,則另一個選擇是在單使用者模式下重新啟動系統。雖然單使用者模式不進行分類,但是它使您無法在資源調控器分類執行時對它進行診斷。
 


分類過程
在資源調控器上下文中,會話的登入過程包含下列步驟:

登入身份驗證

LOGON 觸發器執行

分類

分類啟動時,資源調控器執行分類器函式,並使用函式返回的值將請求傳送到相應的工作負荷組。有關詳細資訊,請參閱編寫分類器函式的注意事項。

注意:
在 sys.dm_exec_sessions 和 sys.dm_exec_requests 中顯示有關分類器函式和 LOGON 觸發器的執行的資訊。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16436858/viewspace-515838/,如需轉載,請註明出處,否則將追究法律責任。

相關文章