首页 > 数据库 >[资源管理] SQL Server 通过Resouce Governor来限制用户资源的使用

[资源管理] SQL Server 通过Resouce Governor来限制用户资源的使用

时间:2023-12-26 20:15:23浏览次数:43  
标签:resource name Governor Server sys Resouce GO group id

  1. 创建资源池
    CREATE RESOURCE POOL [rp_test] WITH(min_cpu_percent=0,
    max_cpu_percent=1,
    min_memory_percent=0,
    max_memory_percent=1,
    AFFINITY SCHEDULER = AUTO
    )
    GO
  2. 创建负载组
    CREATE WORKLOAD GROUP [wlp_test] WITH(group_max_requests=10,
    importance=High,
    request_max_cpu_time_sec=0,
    request_max_memory_grant_percent=25,
    request_memory_grant_timeout_sec=60,
    max_dop=10) USING [rp_test]
    GO
  3. 更新内存中的配置
    ALTER RESOURCE GOVERNOR RECONFIGURE;
    GO
  4. 创建分类器函数
    USE master
    GO

create FUNCTION user_bind_resource()
RETURNS sysname
WITH schemabinding
AS
BEGIN
    DECLARE @workload_group_name AS sysname
      IF (SUSER_NAME()  in ('usser1','user2))
          SET @workload_group_name = 'wlp_test'
    RETURN @workload_group_name
END
GO
5. 注册分类器函数并更新内存中的配置。
ALTER RESOURCE GOVERNOR WITH (classifier_function = dbo.user_identify);
ALTER RESOURCE GOVERNOR RECONFIGURE;
GO
6. 查看基本信息

a. 查看所有内部资源池配置
select * from sys.resource_governor_resource_pools

b. 查看所有外部资源池配置
SELECT * FROM sys.resource_governor_external_resource_pools;

c. 查看所有工作负载组配置
SELECT * FROM sys.resource_governor_workload_groups;

d. 验证分类器函数是否存在以及是否启用
--- Get the classifier function Id and state (enabled).  
SELECT * FROM sys.resource_governor_configuration;  
GO  
--- Get the classifer function name and the name of the schema  
--- that it is bound to.  
SELECT   
	  object_schema_name(classifier_function_id) AS [schema_name],  
	  object_name(classifier_function_id) AS [function_name]  
FROM sys.dm_resource_governor_configuration; 

e. 使用以下查询获取资源池和工作负荷组的当前运行时数据。
SELECT * FROM sys.dm_resource_governor_resource_pools;  
SELECT * FROM sys.dm_resource_governor_workload_groups;  
GO
f. 查询每个组中包含的会话
SELECT s.group_id, CAST(g.name as nvarchar(20)),s.login_name, s.session_id, s.login_time, 
	CAST(s.host_name as nvarchar(20)), CAST(s.program_name AS nvarchar(20))  
FROM sys.dm_exec_sessions AS s  
INNER JOIN sys.dm_resource_governor_workload_groups AS g  
	ON g.group_id = s.group_id  
ORDER BY g.name;  
GO

g. 查看每个组中包含的请求
SELECT r.group_id, g.name, r.status, r.session_id, r.request_id, 
	r.start_time, r.command, r.sql_handle, t.text   
FROM sys.dm_exec_requests AS r  
INNER JOIN sys.dm_resource_governor_workload_groups AS g  
	ON g.group_id = r.group_id  
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) AS t  
ORDER BY g.name;  
GO
  1. 修改function
    a. 取消分类函数注册并更新内存中的配置
    ALTER RESOURCE GOVERNOR WITH (classifier_function = null);
    ALTER RESOURCE GOVERNOR RECONFIGURE;
    GO

    b. 修改function
    USE master
    GO

    alter FUNCTION user_bind_resource()
    RETURNS sysname
    WITH schemabinding
    AS
    BEGIN
        DECLARE @workload_group_name AS sysname
          IF (SUSER_NAME()  in ('user1','user2','wxbtest'))
              SET @workload_group_name = 'wlp_test'
        RETURN @workload_group_name
    END
    GO

    c. 注册分类器函数并更新内存中的配置。
    ALTER RESOURCE GOVERNOR WITH (classifier_function = dbo.user_bind_resource);
    ALTER RESOURCE GOVERNOR RECONFIGURE;
    GO

  2. 测试
    开启两个窗口,分别执行如下语句,通过permon监控资源使用情况
    DECLARE @CNT INT
    WHILE 1=1
    BEGIN
    SELECT @CNT=COUNT(*) FROM sys.tables
    END

标签:resource,name,Governor,Server,sys,Resouce,GO,group,id
From: https://www.cnblogs.com/dber-ablewang/p/17929224.html

相关文章

  • [对象Owner]SQL Server数据库修改对象Owner
    查看a.查看数据库的ownerselecta.name,suser_sname(a.owner_sid)asonamefromsys.databasesaorderbyonameb.查看job的ownerselecta.name,suser_sname(a.owner_sid)asonamefrommsdb..sysjobsaorderbyonamec.查看endpoint的ownerselecta.name,a.pri......
  • Sqlserver 中的一些SET参数、系统表的查询
    SQL:BatchStarting:是SQLServerProfiler中的一个事件,它指示一个新的SQL批处理正在开始执行。当SQLServer开始执行一个新的批处理时,它会生成此事件。批处理可以包含一个或多个SQL语句,它们将作为一个单独的单元执行。在Profiler或ExtendedEvents中捕获这个事件可以......
  • 阿里云 ACK One Serverless Argo 助力深势科技构建高效任务平台
    作者:田双坤、于雪前言深势科技是“AIforScience”科学研究范式的引领者和践行者,致力于运用人工智能和多尺度模拟仿真算法,结合先进计算手段求解重要科学问题,为人类文明最基础的生物医药、能源、材料和信息科学与工程研究打造新一代微尺度工业设计和仿真平台。对于深势的科学家和用......
  • 阿里云 ACK One Serverless Argo 助力深势科技构建高效任务平台
    作者:田双坤、于雪前言深势科技是“AIforScience”科学研究范式的引领者和践行者,致力于运用人工智能和多尺度模拟仿真算法,结合先进计算手段求解重要科学问题,为人类文明最基础的生物医药、能源、材料和信息科学与工程研究打造新一代微尺度工业设计和仿真平台。对于深势的科学......
  • grep -Ev '#|^$' zabbix_server.conf 显示配置文件 命令
    grep-Ev'#|^$'zabbix_server.confroot@k8s-node01:/etc/zabbix#grep-Ev'#|^$'zabbix_server.confLogFile=/var/log/zabbix/zabbix_server.logLogFileSize=0PidFile=/run/zabbix/zabbix_server.pidSocketDir=/run/zabbixDBName=zabbixDBUser=......
  • Winserver上如何配置和开启NTP客户端进行时间同步
    场景Winserver2012服务器,需要与其它服务器保持时间一致。已知NTP服务器的ip,在winserver服务器上如何进行配置和开启。注:博客:https://blog.csdn.net/badao_liumang_qizhi实现1、运行-输入gpedit.msc打开组策略管理器 2、找到计算机配置-管理模板-系统-Windows时......
  • ABP-VNext 用户权限管理系统实战01---AuthServer服务迁移数据库到mysql
    一、从github上获取源码后修改命名空间下载dome后修改解决方案名为Bridge。 二、默认是连接sqlserver的,需要修改为可以连接mysql修改appsettings.json文件的ConnectionStrings参数,准备一个可以连接的mysql,新建数据库bridge{"ConnectionStrings":{"Default":"Server=xxx......
  • KingIOServer连接S7-200 SMART PLC
    硬件:西门子200SMARTPLCSR30软件环境:1,PLC编程软件Step7Micro/WINSMART2,组态王KingIOServer具体步骤:1,打开KingIOServer工程设计器,然后新建应用/工程,输入应用名称,然后确定2,左侧项目树,设备-右键 3,左侧项目树,变量-右键,新建变量4,编译,运行 5,在弹出的窗口中,启动运行,查看变量连......
  • jumpserver连接ecs实例报错:UNREACHABLE! => {"changed": false, "msg": "Failed to
     报错分析思路:1.是ssh密钥设置有没有对接2.防火墙拦截问题3.用户设置问题4.sshd配置问题 问题解决: 无法与221.229.216.39端口35846进行协商:找不到匹配的主机密钥类型。他们提供的是:ssh-rsa、ssh-dss[preauth]在sshd配置中加上ssh-rsa和ssh-dss是两种主机密钥算......
  • Cisco Meeting Server 3.8 - 会议与协作
    CiscoMeetingServer3.8-会议与协作思科MeetingServer请访问原文链接:https://sysin.org/blog/cisco-meeting-server-3/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org思科MeetingServer人人畅享轻松会议体验思科MeetingServer将本地视频、音频和网络......