1、概述數據庫
資源調控器(Resorce Governor)是SQL Server 2008新增的一項功能。它的目的不是用來監視SQL Server的工做負載,而是用來限制某些用戶訪問SQL Server時所佔用的CPU、內存資源。啓動後,SQL Server的處理流程以下圖所示。服務器
資源調控器一般用於如下場景:ide
1. 服務器上的查詢用盡函數
在這種狀況下,資源消耗比較大的查詢會佔用大多數或全部服務器資源。例如,銷售部作一張銷售分析的大型報表,可能致使其它的業務反應很是緩慢。spa
2. 不可預測的工做負荷執行blog
在這種狀況下,相同服務器上的並行應用程序將具備不一樣大小和類型的工做負荷。例如,兩個數據倉庫應用程序或 OLTP 和數據倉庫應用程序的混合。這些應用程序彼此不是孤立的,產生的資源爭用將致使不可預測的工做負荷執行。內存
3. 設置工做負荷優先級資源
在這種狀況下,容許一個工做負荷的執行速度快於另外一個工做負荷,或者在存在資源爭用的狀況下保證完成一個工做負荷。使用資源調控器能夠爲工做負荷分配相對重要性。
路由
2、啓用資源調控器開發
1. 使用SSMS
在啓用以後,若是須要禁用資源調控器,則在上圖中清除「啓用資源調控器」選項。
2. 使用T-SQL
ALTER RESOURCE GOVERNOR RECONFIGURE |
如需禁用,則運行如下命令
ALTER RESOURCE GOVERNOR DISABLE |
3、資源池
資源調控器預約義兩個資源池:內部池和默認池。用戶能夠新建資源池。
1. 內部池
內部池表示由 SQL Server 自身消耗的資源。 這個池始終只包含內部組,在任何狀況下都不容許更改池。 不限制內部池的資源消耗。 池中的全部工做負荷均視爲服務器函數的關鍵內容,資源調控器容許內部池在與其餘池的限制發生衝突時爭用資源。
注意:不從整體資源使用狀況中減去內部池和內部組資源使用狀況。 使用可用的整體資源計算百分比。
2. 默認池
默認的池是第一個預約義的用戶池。 在進行任何配置以前,默認池只包含默認組。 不能建立或刪除默認池,但能夠更改。 默認池除了包含默認組,還能夠包含用戶定義的組。
注意:能夠更改默認組,但不能從默認池中移出。
3. 用戶定義的資源池
資源調控器提供用於建立、更改和刪除資源池的 DDL 語句。http://technet.microsoft.com/zh-cn/library/hh510189.aspx
或者使用SSMS新建資源池。
4、工做負荷組
工做負荷組僅僅是一個與用戶會話相關聯的名稱。它不是指查詢工做負荷,而是指一個正在執行查詢的登陸。它只負責創建鏈接的標識,建立工做負荷組後,資源調控器就能夠將鏈接分配到合適的資源池。
資源調控器還提供了用於建立、更改和刪除工做負荷組的 DDL 語句。 http://technet.microsoft.com/zh-cn/library/hh510228.aspx
或者使用SSMS建立工做組負荷。
5、分類器函數
http://technet.microsoft.com/zh-cn/library/hh510208.aspx
1. 建立分類器函數
資源調控器支持對傳入會話的分類。 分類基於函數中包含的一組用戶編寫的條件。 函數邏輯的結果使資源調控器能夠將會話納入現有工做負荷組類。
注意:內部工做負荷組中填入的是僅供內部使用的請求。 您不能更改用於路由這些請求的標準,也不能將請求納入內部工做負荷組類。
您能夠在master數據庫中編寫一個標量函數,在其中包含用於將傳入會話分配給工做負荷組的邏輯。http://technet.microsoft.com/zh-cn/library/cc645892.aspx
例如,須要將登陸名爲「ZhangS」的用戶列入Reporting工做負荷組。注意:工做負荷組的名稱對大小寫敏感。
USE master GO CREATE FUNCTION dbo.fn_ResourceGovernorClassifier() GO |
2. 註冊分類器函數並更新資源調控器配置
將分類器函數鏈接到資源調控器。建立分類器函數並應用配置更改後,資源調控器分類器將使用此函數返回的工做負荷組名稱將新請求發送到相應的工做負荷組。
ALTER RESOURCE GOVERNOR WITH (CLASSIFIER_FUNCTION = dbo.fn_ResourceGovernorClassifier) ALTER RESOURCE GOVERNOR RECONFIGURE |
或者使用SSMS
6、資源調控器視圖
http://technet.microsoft.com/zh-cn/library/bb895339(v=SQL.100).aspx
例如:
SELECT * FROM sys.resource_governor_resource_pools SELECT * FROM sys.resource_governor_workload_groups SELECT * FROM sys.resource_governor_configuration |
7、限制
1. 版本限制
資源調控器僅適用於企業版、開發版、評估版。
2. 功能限制
資源管理僅限於 SQL Server 數據庫引擎,資源調控器不能用於 Analysis Services、Integration Services 和 Reporting Services。
資源調控器沒法調控 I/O,但願下一個版本的 SQL Server 增長支持。(SQL Server 2014 CTP2已經能夠針對IOPS進行調控)
3. 侷限性
一個資源調控器只能夠調控該實例自己的鏈接。
資源調控器能夠管理 OLTP 工做負荷,但一般持續時間很是短的查詢類型老是在 CPU 上停留很短期而不足以應用帶寬控制。這樣會使返回的 CPU 使用率的統計信息有誤差。
本文結語:
資源調控器能夠對實例內部的工做負荷進行調控,但調控的內容僅限於CPU和內存。