您的位置:首页 > 其它

二、服务器优化(4)资源调控器管理工作负荷

2013-07-17 19:50 267 查看
一、概述
  资源调控器(Resorce Governor)是SQL Server 2008新增的一项功能。它的目的不是用来监视SQL Server的工作负载,而是用来限制某些用户访问SQL Server时所占用的CPU、内存资源。启动后,SQL Server的处理流程如下图所示。



  资源调控器通常用于以下场景:
1. 服务器上的查询用尽
  在这种情况下,资源消耗比较大的查询会占用大多数或所有服务器资源。例如,销售部做一张销售分析的大型报表,可能导致其它的业务反应非常缓慢。

2. 不可预测的工作负荷执行
  在这种情况下,相同服务器上的并行应用程序将具有不同大小和类型的工作负荷。例如,两个数据仓库应用程序或 OLTP 和数据仓库应用程序的混合。这些应用程序彼此不是孤立的,产生的资源争用将导致不可预测的工作负荷执行。

3. 设置工作负荷优先级
  在这种情况下,允许一个工作负荷的执行速度快于另一个工作负荷,或者在存在资源争用的情况下保证完成一个工作负荷。使用资源调控器可以为工作负荷分配相对重要性。

二、启用资源调控器
1. 使用SSMS








  在启用之后,如果需要禁用资源调控器,则在上图中清除“启用资源调控器”选项。

2. 使用T-SQL
ALTER RESOURCE GOVERNOR RECONFIGURE
如需禁用,则运行以下命令
ALTER RESOURCE GOVERNOR DISABLE
三、资源池
  资源调控器预定义两个资源池:内部池和默认池。用户可以新建资源池。
1. 内部池
  内部池表示由 SQL Server 自身消耗的资源。 这个池始终只包含内部组,在任何情况下都不允许更改池。 不限制内部池的资源消耗。 池中的所有工作负荷均视为服务器函数的关键内容,资源调控器允许内部池在与其他池的限制发生冲突时争用资源。
  注意:不从总体资源使用情况中减去内部池和内部组资源使用情况。 使用可用的总体资源计算百分比。

2. 默认池
  默认的池是第一个预定义的用户池。 在进行任何配置之前,默认池只包含默认组。 不能创建或删除默认池,但可以更改。 默认池除了包含默认组,还可以包含用户定义的组。
  注意:可以更改默认组,但不能从默认池中移出。

3. 用户定义的资源池
  资源调控器提供用于创建、更改和删除资源池的 DDL 语句。http://technet.microsoft.com/zh-cn/library/hh510189.aspx
  或者使用SSMS新建资源池。








四、工作负荷组
  工作负荷组仅仅是一个与用户会话相关联的名称。它不是指查询工作负荷,而是指一个正在执行查询的登录。它只负责建立连接的标识,创建工作负荷组后,资源调控器就可以将连接分配到合适的资源池。
  资源调控器还提供了用于创建、更改和删除工作负荷组的 DDL 语句。 http://technet.microsoft.com/zh-cn/library/hh510228.aspx
  或者使用SSMS创建工作组负荷。








五、分类器函数
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()
RETURNS sysname
WITH SCHEMABINDING
AS
BEGIN
DECLARE @group sysname
IF SUSER_SNAME() = 'ZhangS'
SET @group = 'Reporting'
RETURN @group
END
GO
2. 注册分类器函数并更新资源调控器配置
  将分类器函数连接到资源调控器。创建分类器函数并应用配置更改后,资源调控器分类器将使用此函数返回的工作负荷组名称将新请求发送到相应的工作负荷组。
ALTER RESOURCE GOVERNOR WITH (CLASSIFIER_FUNCTION = dbo.fn_ResourceGovernorClassifier)
ALTER RESOURCE GOVERNOR RECONFIGURE
  或者使用SSMS




六、资源调控器视图
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
七、限制
1. 版本限制
  资源调控器仅适用于企业版、开发版、评估版。

2. 功能限制
  资源管理仅限于 SQL Server 数据库引擎,资源调控器不能用于 Analysis Services、Integration Services 和 Reporting Services。
  资源调控器无法调控 I/O,希望下一个版本的 SQL Server 增加支持。(SQL Server 2014 CTP2已经可以针对IOPS进行调控

3. 局限性
  一个资源调控器只可以调控该实例本身的连接。
  资源调控器可以管理 OLTP 工作负荷,但通常持续时间非常短的查询类型总是在 CPU 上停留很短时间而不足以应用带宽控制。这样会使返回的 CPU 使用率的统计信息有偏差。

本文结语:
  资源调控器可以对实例内部的工作负荷进行调控,但调控的内容仅限于CPU和内存。

本文出自 “我们一起追过的MSSQL” 博客,转载请与作者联系!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: