本系列包含:
1、使用SQLServer Management Studio 配置资源调控器
2、使用T-SQL配置资源调控器
3、监控资源调控器
前言:
在前面的章节,提到过可以通过多种配置数据库服务器的方式来提高性能。如索引、统计信息、hints、物理设计和服务器配置等。
当你完成上面那些配置后,还依旧有少量存储过程、查询运行得很慢时,由于硬件资源限制,可能已经没什么好调整。如一个数据库服务器支撑着多个应用系统,其中一个是报表系统,而报表系统往往都是非常耗资源的。
在2008之前,对于这种问题,很难作出有效的解决方法。从2008开始,引入了一个资源调控器(ResourceGovernor)来协助解决这类问题。资源调控器(下面简称RG),可以管理服务器上CPU和内存资源。不同类型的请求可以被分配到不同的资源。
RG的功能可以分为3个组件:
1、分类(Classification)
2、资源池(Resource pool)
3、工作负荷组(Workload group)
RG的基本功能/体系
分类(Classification):定义一个用户自定义标量函数作为RG的分类函数,每当请求到达时,分类函数就会执行,区分请求的类型,然后放到特定的工作负荷组(Workload Group)中。
工作负载组(WorkloadGroup):一个逻辑单元,包含了一组资源。属于特定的资源池(Resource Pool)SQLServer创建了两个默认的工作负载组,internal和default。
资源池(ResourcePool):包含对请求分配特定工作负载组的资源规则定义,SQLServer同样创建了两个资源池internal和default。
通过SQLServerManagement Studio 配置资源调控器:
在开始之前,先来创建一个现实环境,假设AdventureWorks数据库是生产数据库,且有数十亿的数据。这个库提供多个应用程序使用。一个应用程序是用于web程序,一个是OLTP。另外一个应用程序是报表系统。当查询报表的时候,会影响到web程序,为了解决这个问题,可以借助RG来保存web程序的CPU和内存资源。这里保留web程序获得最少50%的CPU和内存,报表使用25%。
本文将演示使用SQLServer Management Studio(下称SSMS)来实现。
准备工作:
本文将创建两个资源池和工作负载组。用于给web和报表程序之用。独立的用户名分类函数区分请求很有帮助,基于用户名,分类函数将发送请求到特定的工作负载组。
步骤:
1、打开ssms,确保这个登录有管理员权限,如果不能,那需要有ALTER LOGIN和CONTROL SERVER的权限。
2、在新建窗口输入,注意本文使用AdventureWorks2012数据库:
USE master
GO
CREATE LOGIN [AW_WebAppUser] WITH PASSWORD=N'AW_WebAppUser123' ,DEFAULT_DATABASE=AdventureWorks2012
GO
USE AdventureWorks2012
GO
CREATE USER [AW_WebAppUser] FOR LOGIN [AW_WebAppUser]
GO
ALTER ROLE [db_owner] ADD MEMBER [AW_WebAppUser]
GO
CREATE LOGIN [AW_ReportAppUser] WITH PASSWORD=N'AW_ReportAppUser123',DEFAULT_DATABASE=AdventureWorks2012
GO
USE AdventureWorks2012
GO
CREATE USER [AW_ReportAppUser] FOR LOGIN [AW_ReportAppUser]
GO
ALTER ROLE [db_owner] ADD MEMBER [AW_ReportAppUser]
GO
3、创建分类函数:
USE MASTER
GO
CREATE FUNCTION dbo.RGClassifier( )
RETURNS SYSNAME
WITH SCHEMABINDING
AS
BEGIN
DECLARE @Workload_GroupName SYSNAME
IF SUSER_NAME() = 'AW_WebAppUser'
SET @Workload_GroupName = 'rg_WebApp'
ELSE
IF SUSER_NAME() = 'AW_ReportAppUser'
SET @Workload_GroupName = 'rg_ReportApp'
ELSE
SET @Workload_GroupName = 'default'
RETURN @Workload_GroupName
END
4、打开ssms,右键资源调控器节点,选择【属性】,就见到如下:
5、点击启用【启用资源调控器】:
6、在分类函数名下拉框中,选择dbo.RGClassifier():
7、在资源池网格中,可以找到两个默认资源池defalut和internal,现在添加一个新的资源池叫做rp_WebApp,并配置为如图,记住总和不能超过100:
8、在资源池的工作负荷组:rp_WebApp中,创建一个新的工作负荷组rg_WebApp,并配置CPU时间为300:
9、在资源池网格中,按上述步骤添加rp_ReportApp,并把最小CPU和内存设为25,CPU时间为300:
10、点击确定后,打开资源调控器节点:
分析:
在连接了SQLServer之后,先执行脚本创建用户,用于标识不同应用程序访问数据库。通过账号,分类函数会把登录名的请求发送到对应的资源池和工作负荷组。
在创建类分区函数dbo.RGClassifier(),并在图形界面中调用这个函数。默认情况下资源调控器是禁用的,为了使其工作,需要手动启用。除了图形界面,也可以使用T-SQL语句:ALTER RESOURCEGOVERNOR RECONFIGURE命令来启动。
如果请求不属于新建的两个资源池,会分配到default工作负荷组和default资源池。Internal工作负荷组是SQLServer内部使用的,并且DAC(专用管理员连接)是不受RG分类影响。
最后通过图形界面查看是否建立成功。
扩充信息:
在现实世界中,在实施资源调控器之前,需要对各个应用程序的资源请求做一个趋势分析,可以帮助你更好地分配资源。
在资源池中定义的MIN参数是不共享的,也就是别的请求不能占用这部分,是专用的资源。资源调控器可以有多个资源池。这就是为什么MIN中的百分比总和不能超过100.
另一方面,MAX参数的值是共享的,实际的MAX值会根据MIN的值来调整。
分享到:
相关推荐
配置SQL Server 2008的资源调控器——通过向工作负载分配资源重获SQL Server系统控制权.pdf
详细介绍 SQL server资源控制器说明: 资源管理仅限于 SQL Server 数据库引擎。 资源调控器不能用于 Analysis Services、Integration Services 和 Reporting Services。 SQL Server 实例之间没有工作负荷监视或...
Sql Server 2008 R2 资源控制器管理 ,资源控制器的创建,说明等
第1章 SQL查询性能调整 1 1.1 性能调整过程 2 1.1.1 核心过程 2 1.1.2 迭代过程 4 1.2 性能vs.价格 7 1.2.1 性能目标 7 1.2.2 “足够好”的调整 7 1.3 性能基线 8 1.4 工作的重点 9 1.5 SQL Server性能杀手...
资源调控器(Resource Governor)自SQL Server 2008起引入,但提供的功能还是有所限制:你只能限制CPU时间(这个已经很棒了),还有你能限制查询(从每个独立的查询)内存量。 但作为DBA的你,你经常会进行一些...
第 1 章 安装和配置SQL Server 1 1.1 SQL Server的版本和版本选择 1 1.2 安装SQL Server的常见问题 3 1.3 如何理解实例 5 1.4 如何实现无值守安装 5 1.5 Desktop Engine 9 1.5.1 MSDE 2000概述 ...
第1章 SQL查询性能调整 1 1.1 性能调整过程 2 1.1.1 核心过程 2 1.1.2 迭代过程 4 1.2 性能vs.价格 7 1.2.1 性能目标 7 1.2.2 “足够好”的调整 7 1.3 性能基线 8 1.4 工作的重点 9 1.5 SQL Server性能杀手...
误区 #22: 资源调控器可以调控IO错误 资源调控器无法调控IO,希望下一个版本的SQL Server支持调控IO,调控IO对于对于减少对于大表的scan操作带来的性能影响很有帮助。 下面列表中的功能资源调控器同样也无法完成: ...
智能热网自动化技术新思路——智能室温调控模式应用.pdf
SqlServer性能优化 DB性能优化 数据库性能优化 MSSQL性能优化
商品销售管理系统主要是对商品基础信息、商品入库信息、商品销售信息和商品退货信息进行管理,同时提供对商品销售额统计的功能。另外,系统还增添客户信息、供应商信息等基础信息模块。项目实施后,能够增强企业信息...
人力资源配置与调控的管理.pptx
人力资源配置与调控的管理.ppt
人力资源配置与调控的管理.pdf
人力资源配置与调控的管理教材.zip
人力资源配置与调控的管理教材.pptx