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和内存。