AlwaysON下配置各個數據庫可以使用的系統資源

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章