資源管理員概念

下列三個概念是了解和使用資源管理員的基礎:

  • 資源集區: 安裝 SQL Server 2008 時,系統會建立兩個資源集區 (內部和預設)。資源管理員也可支援使用者定義的資源集區。

  • 工作負載群組: 安裝 SQL Server 2008 時,系統會建立兩個工作負載群組 (內部和預設) 並將它們對應至對應的資源集區。資源管理員也可支援使用者定義的工作負載群組。

  • 分類: 系統具有一些分類內送要求並將它們路由傳送至工作負載群組的內部規則。資源管理員也可支援實作分類規則的使用者定義分類函數。

[!附註]

資源管理員不會對專用管理員連接 (DAC) 進行任何控制,因為根本不需要分類在內部工作負載群組和資源集區中執行的 DAC 查詢。

在資源管理員的內容中,您可以將上述概念視為元件。下圖將顯示這些元件以及它們在 Database Engine 環境中存在時,彼此的關聯性。從處理的觀點而言,簡化的流程如下所示:

  • 工作階段 (工作階段 1,共 n 個) 的內送連接已存在。

  • 工作階段進行分類 (分類)。

  • 工作階段工作負載路由傳送至某個工作負載群組 (例如,群組 4)。

  • 工作負載群組使用與它相關聯的資源集區 (例如,集區 2)

  • 資源集區提供並限制應用程式 (例如,應用程式 3) 所需的資源。

資源管理員功能性元件

資源集區

資源集區 (或集區) 代表伺服器的實體資源。您可以將集區視為 SQL Server 執行個體內部的虛擬 SQL Server 執行個體。

集區具有兩個部分。其中一個部分不會與其他集區重疊,以便達到最小資源保留的效果。另一個部分則與其他集區共用,以便支援最大可能的資源耗用量。在這個資源管理員版本中,您可以針對每個資源指定下列其中一個選項,藉以設定集區資源:

  • CPU 的 MIN 或 MAX

  • 記憶體的 MIN 或 MAX

MIN 和 MAX 分別代表每個資源的最小保證可用資源集區和最大集區大小。

所有集區之 MIN 值的總和不得超過伺服器資源的 100%。MAX 值則可設定為 MIN 與 100% (含) 之間範圍中的任何值。

如果某個集區已經定義了非零的 MIN,其他集區的有效 MAX 值就會重新調整,因為集區的最小已設定 MAX 值和其他集區 MIN 值的總和都是從 100% 中扣除。

下表將說明上述概念。此表顯示了內部集區、預設集區和兩個使用者定義集區的設定。下列公式可用來計算有效的 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

25

有效的 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)>。

  • 使用 ALTER RESOURCE GOVERNOR 陳述式搭配 RECONFIGURE 參數來更新資源管理員組態。

在您建立此函數並套用組態變更之後,資源管理員分類就會使用此函數傳回的工作負載群組名稱,將新的要求傳送至適當的工作負載群組。

重要事項重要事項

如果分類函數沒有在登入的指定逾時內完成,用戶端工作階段可能會逾時。但是,登入逾時是用戶端屬性,因此伺服器不知道發生逾時。長時間執行的分類函數可能會離開伺服器並留下長期的被遺棄連接。因此,請務必建立在連接逾時之前執行完成的分類函數。

使用者定義的函數具有下列特性和行為:

  • 系統會針對每個新的工作階段評估使用者定義函數,即使啟用了連接共用也一樣。

  • 使用者定義的函數會提供工作負載群組內容給工作階段。決定群組成員資格之後,此工作階段就會在工作階段的存留期間繫結至工作負載群組。

  • 如果使用者定義的函數傳回 NULL、預設值或不存在群組的名稱,系統就會提供預設工作負載群組內容給此工作階段。此外,如果這個函數由於任何原因而失敗,系統也會提供預設內容給此工作階段。

  • 您應該使用伺服器範圍 (master 資料庫) 來定義此函數。

  • 只有在 ALTER RESOURCE GOVERNOR RECONFIGURE 執行之後,使用者定義的分類函數指定才會生效。

  • 您一次只能指定一個使用者定義函數當做分類函數。

  • 除非分類狀態被移除,否則您無法卸除或更改使用者定義的分類函數。

  • 如果使用者定義的分類函數不存在,所有工作階段都會分類至預設群組中。

  • 分類函數所傳回工作負載群組位於結構描述繫結限制的範圍以外。例如,雖然您無法卸除資料表,但是卻能夠卸除工作負載群組。

重要事項重要事項

我們建議您在伺服器上啟用專用管理員連接 (DAC)。DAC 不受資源管理員分類限制,而且可用來監視和疑難排解分類函數。如需詳細資訊,請參閱<使用專用管理員連接>。如果 DAC 無法用於疑難排解,其他選項就是在單一使用者模式中重新啟動系統。雖然單一使用者模式不受分類限制,但是您無法在資源管理員分類執行時進行診斷。

分類程序

在資源管理員的內容中,工作階段的登入程序包含下列步驟:

  1. 登入驗證

  2. LOGON 觸發程序執行

  3. 分類

開始分類時,資源管理員就會執行分類函數並使用此函數所傳回的值,將要求傳送至適當的工作負載群組。如需詳細資訊,請參閱<撰寫分類函數的考量>。

[!附註]

執行分類函數和 LOGON 觸發程序的相關資訊會在<sys.dm_exec_sessions>和<sys.dm_exec_requests>中公開。