sqlserver资源调配器
--配置资源调控器.
USE master
GO
-- 创建并配置一个资源调控器资源池,发生 CPU 争用时,
-- 该资源池将限制分配给资源池中的请求的最大平均 CPU 带宽为 10%
CREATE RESOURCE POOL pMAX_CPU_PERCENT_30 WITH (MAX_CPU_PERCENT = 30)
GO
-- 创建并配置一个使用该池的资源调控器工作负荷组。
CREATE WORKLOAD GROUP gMAX_CPU_PERCENT_30 USING pMAX_CPU_PERCENT_30;
GO
-- 创建一个“分类器函数”,它是一个用户定义函数 (UDF),
-- 其返回值供资源调控器用来对会话进行分类,以便将它们路由到适当的工作负荷组
-- 本例是限制用户为:USER_READONLY所使用的cpu资源不超过10%
USE master
GO
CREATE FUNCTION rgclassifier_MAX_CPU ( )
RETURNS SYSNAME
WITH SCHEMABINDING
AS
BEGIN
DECLARE @workload_group_name SYSNAME
--Handle workload groups defined by login names
IF SUSER_SNAME() = 'travelOp'
BEGIN
SET @workload_group_name = 'gMAX_CPU_PERCENT_30';--gMAX_CPU_PERCENT_30 负载组
RETURN @workload_group_name;
END
RETURN @workload_group_name;
END
-- 将分类器函数rgclassifier_MAX_CPU注册到资源调控器 一定要加dbo架构名 不然会报错
Alter Resource Governor With(Classifier_Function=dbo.rgclassifier_MAX_CPU);
GO
-- 将更改应用于资源调控器
ALTER RESOURCE GOVERNOR RECONFIGURE;
GO
--包含资源调控器的当前内存中配置状态的行
SELECT * FROM SYS.[dm_resource_governor_configuration]
--当前资源池状态、资源池的当前配置以及资源池统计信息的相关信息
SELECT
[pool_id],
[name],
[statistics_start_time],
[max_cpu_percent]
FROM SYS.[dm_resource_governor_resource_pools]
--工作负荷组统计信息和工作负荷组当前在内存中的配置
SELECT * FROM SYS.[dm_resource_governor_workload_groups]