USE master
GO
/* 說明:AlwaysON下設置各個數據庫使用資源池的情況 */
-- 啓用資源調控器,或者重新刷新配置
ALTER RESOURCE GOVERNOR RECONFIGURE;
GO
--1、首先創建資源池信息,限制各個資源池對CPU、Memory的使用情況
CREATE RESOURCE POOL BPM
WITH (
min_cpu_percent=0, --較低優先級的查詢無法爭用CPU,此處可設置
max_cpu_percent=20, --如果有可用 CPU 容量,可用至 100%
min_memory_percent=0, --授予查詢執行的內存,不可用於任何其他池
max_memory_percent=20, --限制最高使用 Memory 的20%
cap_cpu_percent=20, --限制最高使用 CPU 的20%(resource pool stats\CPU usage target\poolAdhoc)
affinity scheduler = auto,
max_iops_per_volume=20000
);
GO
--H3,H3_LOG,H3Cloud,H3CloudLog
CREATE RESOURCE POOL ReportPortal
WITH (
min_cpu_percent=0, --較低優先級的查詢無法爭用CPU,此處可設置
max_cpu_percent=20, --如果有可用 CPU 容量,可用至 100%
min_memory_percent=0, --授予查詢執行的內存,不可用於任何其他池
max_memory_percent=20, --限制最高使用 Memory 的20%
cap_cpu_percent=20, --限制最高使用 CPU 的60%(resource pool stats\CPU usage target\poolAdhoc)
affinity scheduler = auto,
max_iops_per_volume=20000
);
GO
--AR_MART,ReportPortal
CREATE RESOURCE POOL SERP
WITH (
min_cpu_percent=0, --較低優先級的查詢無法爭用CPU,此處可設置
max_cpu_percent=20, --如果有可用 CPU 容量,可用至 100%
min_memory_percent=0, --授予查詢執行的內存,不可用於任何其他池
max_memory_percent=20, --限制最高使用 Memory 的20%
cap_cpu_percent=20, --限制最高使用 CPU 的60%(resource pool stats\CPU usage target\poolAdhoc)
affinity scheduler = auto,
max_iops_per_volume=20000
);
GO
--TimeSheet
CREATE RESOURCE POOL TimeSheet
WITH (
min_cpu_percent=0, --較低優先級的查詢無法爭用CPU,此處可設置
max_cpu_percent=20, --如果有可用 CPU 容量,可用至 100%
min_memory_percent=0, --授予查詢執行的內存,不可用於任何其他池
max_memory_percent=20, --限制最高使用 Memory 的20%
cap_cpu_percent=20, --限制最高使用 CPU 的60%(resource pool stats\CPU usage target\poolAdhoc)
affinity scheduler = auto,
max_iops_per_volume=20000
);
GO
--BI
CREATE RESOURCE POOL FRW
WITH (
min_cpu_percent=0, --較低優先級的查詢無法爭用CPU,此處可設置
max_cpu_percent=20, --如果有可用 CPU 容量,可用至 100%
min_memory_percent=0, --授予查詢執行的內存,不可用於任何其他池
max_memory_percent=20, --限制最高使用 Memory 的20%
cap_cpu_percent=20, --限制最高使用 CPU 的60%(resource pool stats\CPU usage target\poolAdhoc)
affinity scheduler = auto,
max_iops_per_volume=20000
);
GO
-- FCST,FCST_OPT,FCST_RPT,FMart,PDATA
CREATE RESOURCE POOL Admin_Pool
WITH (
min_cpu_percent=0, --較低優先級的查詢無法爭用CPU,此處可設置
max_cpu_percent=20, --如果有可用 CPU 容量,可用至 100%
min_memory_percent=0, --授予查詢執行的內存,不可用於任何其他池
max_memory_percent=20, --限制最高使用 Memory 的20%
cap_cpu_percent=20, --限制最高使用 CPU 的60%(resource pool stats\CPU usage target\poolAdhoc)
affinity scheduler = auto,
max_iops_per_volume=20000
);
GO
-- 啓用資源調控器,或者重新刷新配置
ALTER RESOURCE GOVERNOR RECONFIGURE;
GO
--2、創建工作組信息,並指定各資源池對應的工作組
CREATE WORKLOAD GROUP [Admin_Pool_WG]
WITH(
group_max_requests=0,
importance=Medium, --相對重要性{ LOW | MEDIUM | HIGH }
request_max_cpu_time_sec=0, --請求可以使用的最長 CPU 時間,以秒爲單位
request_max_memory_grant_percent=25,--單個請求可以從池中獲取的最大內存量(對資源池的MAX_MEMORY_PERCENT 而言)
request_memory_grant_timeout_sec=0, --查詢等待內存授予(工作緩衝區內存)變爲可用的最長時間(以秒爲單位)。
max_dop=0 --並行請求的最大並行度 (DOP),(0 到 255)
) USING [Admin_Pool]--指定工作組
GO
ALTER RESOURCE GOVERNOR RECONFIGURE;
GO
CREATE WORKLOAD GROUP [BPM_WG]
WITH(
group_max_requests=0,
importance=Medium, --相對重要性{ LOW | MEDIUM | HIGH }
request_max_cpu_time_sec=0, --請求可以使用的最長 CPU 時間,以秒爲單位
request_max_memory_grant_percent=25,--單個請求可以從池中獲取的最大內存量(對資源池的MAX_MEMORY_PERCENT 而言)
request_memory_grant_timeout_sec=0, --查詢等待內存授予(工作緩衝區內存)變爲可用的最長時間(以秒爲單位)。
max_dop=0 --並行請求的最大並行度 (DOP),(0 到 255)
) USING [BPM]--指定工作組
GO
ALTER RESOURCE GOVERNOR RECONFIGURE;
GO
CREATE WORKLOAD GROUP [ReportPortal_WG]
WITH(
group_max_requests=0,
importance=Medium, --相對重要性{ LOW | MEDIUM | HIGH }
request_max_cpu_time_sec=0, --請求可以使用的最長 CPU 時間,以秒爲單位
request_max_memory_grant_percent=25,--單個請求可以從池中獲取的最大內存量(對資源池的MAX_MEMORY_PERCENT 而言)
request_memory_grant_timeout_sec=0, --查詢等待內存授予(工作緩衝區內存)變爲可用的最長時間(以秒爲單位)。
max_dop=0 --並行請求的最大並行度 (DOP),(0 到 255)
) USING [ReportPortal]--指定工作組
GO
ALTER RESOURCE GOVERNOR RECONFIGURE;
GO
CREATE WORKLOAD GROUP [SERP_WG]
WITH(
group_max_requests=0,
importance=Medium, --相對重要性{ LOW | MEDIUM | HIGH }
request_max_cpu_time_sec=0, --請求可以使用的最長 CPU 時間,以秒爲單位
request_max_memory_grant_percent=25,--單個請求可以從池中獲取的最大內存量(對資源池的MAX_MEMORY_PERCENT 而言)
request_memory_grant_timeout_sec=0, --查詢等待內存授予(工作緩衝區內存)變爲可用的最長時間(以秒爲單位)。
max_dop=0 --並行請求的最大並行度 (DOP),(0 到 255)
) USING [SERP]--指定工作組
GO
ALTER RESOURCE GOVERNOR RECONFIGURE;
GO
CREATE WORKLOAD GROUP [TimeSheet_WG]
WITH(
group_max_requests=0,
importance=Medium, --相對重要性{ LOW | MEDIUM | HIGH }
request_max_cpu_time_sec=0, --請求可以使用的最長 CPU 時間,以秒爲單位
request_max_memory_grant_percent=25,--單個請求可以從池中獲取的最大內存量(對資源池的MAX_MEMORY_PERCENT 而言)
request_memory_grant_timeout_sec=0, --查詢等待內存授予(工作緩衝區內存)變爲可用的最長時間(以秒爲單位)。
max_dop=0 --並行請求的最大並行度 (DOP),(0 到 255)
) USING [TimeSheet]--指定工作組
GO
ALTER RESOURCE GOVERNOR RECONFIGURE;
GO
CREATE WORKLOAD GROUP [FRW_WG]
WITH(
group_max_requests=0,
importance=Medium, --相對重要性{ LOW | MEDIUM | HIGH }
request_max_cpu_time_sec=0, --請求可以使用的最長 CPU 時間,以秒爲單位
request_max_memory_grant_percent=25,--單個請求可以從池中獲取的最大內存量(對資源池的MAX_MEMORY_PERCENT 而言)
request_memory_grant_timeout_sec=0, --查詢等待內存授予(工作緩衝區內存)變爲可用的最長時間(以秒爲單位)。
max_dop=0 --並行請求的最大並行度 (DOP),(0 到 255)
) USING [FRW]--指定工作組
GO
ALTER RESOURCE GOVERNOR RECONFIGURE;
GO
USE master
GO
--3、創建一個數據庫和工作區的對應表,當用戶登錄時自動獲取對應的關係
CREATE TABLE WorkloadGroups(WorkloadGroup varchar(20),DatabaseName varchar(100))
Go
--4、根據用戶的角色自動選取工作組
CREATE FUNCTION dbo.fn_Classifier()
RETURNS sysname
WITH SCHEMABINDING
AS
BEGIN
DECLARE @strGroup sysname
DECLARE @db sysname
IF IS_SRVROLEMEMBER ('sysadmin') = 1 or IS_SRVROLEMEMBER('serveradmin') = 1
OR IS_SRVROLEMEMBER('securityadmin') = 1 or IS_SRVROLEMEMBER('processadmin') = 1
OR IS_SRVROLEMEMBER('diskadmin') = 1
BEGIN
SELECT @strGroup = 'Admin_Pool_WG';
END
ELSE
BEGIN
SELECT @db = ORIGINAL_DB_NAME();
IF (@db = '')
BEGIN
SELECT @db = CONVERT(nvarchar, LOGINPROPERTY(SUSER_NAME(), 'DefaultDatabase'));
END
SELECT @strGroup = WorkloadGroup
FROM dbo.WorkloadGroups
WHERE DatabaseName = @db
END
RETURN @strGroup
END
--5、綁定函數
ALTER RESOURCE GOVERNOR WITH (CLASSIFIER_FUNCTION = dbo.fn_Classifier)
GO
ALTER RESOURCE GOVERNOR RECONFIGURE