4. RECONFIGURE RESOURCE GOVERNOR 来让我们新建的资源池生效。
ALTER RESOURCE GOVERNOR RECONFIGURE;
GO
加下去执行
SELECT * FROM sys.dm_resource_governor_resource_pools;
GO
来看一下现在的配置信息。
你会发现新创建的MarketingPool和DevelopmentPool已经被添加了进去,并且max_cpu_percent为相应的10和90。
只有Resource Pool 是没用效果的,因为Pool下面还有下级单位,叫做 WORKLOAD GROUP , 所以接下去我们需要创建Group。
5. 创建 WORKLOAD GROUP
CREATE WORKLOAD GROUP MarketingGroup
USING MarketingPool;
GO
CREATE WORKLOAD GROUP DevelopmentGroup
USING DevelopmentPool;
GO
分别给两个Pool创建对应的 WorkLoad Group 。并且使用 Using 关键字绑定Group到对应的Pool。
6. 查看WorkLoad Group 的配置信息
SELECT * FROM sys.dm_resource_governor_workload_groups;
GO
会发现,和Pool中的情况相同,只有两个Group。(就是系统默认的Group,分别与默认的Pool对应)
同样是由于没有ReConfigure造成的。
7. 更新配置信息
ALTER RESOURCE GOVERNOR RECONFIGURE;
GO
接着在查看Group信息。
新的Group已经被添加进去了。
8. 创建两个数据库,用来做测试
IF DB_ID ('MarketingDB') IS NULL
CREATE DATABASE MarketingDB;
GO
IF DB_ID ('DevelopmentDB') IS NULL
CREATE DATABASE DevelopmentDB;
GO
9. 创建classifier function
IF OBJECT_ID ('dbo.MyClassifier') IS NOT NULL
DROP FUNCTION dbo.MyClassifier;
GO
CREATE FUNCTION dbo.MyClassifier ()
RETURNS SYSNAME WITH SCHEMABINDING
AS
BEGIN
DECLARE @GroupName SYSNAME;
IF ORIGINAL_DB_NAME () = 'MarketingDB'
SET @GroupName = 'MarketingGroup';
ELSE IF ORIGINAL_DB_NAME () = 'DevelopmentDB'
SET @GroupName = 'DevelopmentGroup';
ELSE SET @GroupName = 'Default';
RETURN @GroupName;
END;
GO
这里,Sqlserver2008对于 Resource Governor 的设计方式,很类似代理。Resource Governor 通过一个方法来绑定数据库对象到WorkLoad Group ,这个方法需要外部给出定义,并且手动绑定到Resource Governor 上面,定义方式可以参照上面代码。分别将两个测试用数据库绑定到各自的Group中,其他的数据库绑定到Default上面。
10. 绑定Classifier Function 到Resource Governor上面。
ALTER RESOURCE GOVERNOR
WITH (CLASSIFIER_FUNCTION = dbo.MyClassifier);
GO
11. 更新Resource Governor 配置信息
ALTER RESOURCE GOVERNOR RECONFIGURE;
GO
12. 查看Resource Governor配置信息,确认设置
SELECT * FROM sys.dm_resource_governor_configuration;
GO
如果如下图所示,说明配置成功。
到这里,资源池的创建完成,然后使用Server2003的Performance来查看CPU的使用情况
1. 在管理工具中启动Performance
2. 点击Action菜单中的New WindowForm Here
3. 点击加号添加监视
4. 选中对应SQL实例的Resource Governor ,并选定两个资源池
5. 点击Add添加2个资源池连接
目前由于没有操作,所以占用资源为0