千家信息网

控制 Memory 和 CPU 资源的使用

发表于:2024-09-23 作者:千家信息网编辑
千家信息网最后更新 2024年09月23日,Resource Governor的出现,解决了在一台SQL Server实例上,管理多用户工作负载和资源隔离的需求,它允许管理员限制系统处理Requsts时所耗费的CPU 和 Memory资源的数量
千家信息网最后更新 2024年09月23日控制 Memory 和 CPU 资源的使用

Resource Governor的出现,解决了在一台SQL Server实例上,管理多用户工作负载和资源隔离的需求,它允许管理员限制系统处理Requsts时所耗费的CPU 和 Memory资源的数量,在一定程度上,限制和隔离了runaway查询。对于SQL Server 2012,用户能够基于工作负载,实现CPU资源的完全隔离,并能设置CPU资源使用量的硬上限(CAP Usage,Hard Limit)。在一个多用户,高并发的SQL Server实例上,管理员使用Resource Governor,控制不同工作负载对内存和CPU资源的使用量,使不同的应用程序在使用的资源上相互隔离,使系统性能得到可预测性的控制和保证。

一,基本实现(fundamental implementation)

Resource Governor的可编程部分由三部分组成:Resource Pool,Workload Group 和 Classifier Function,每个部分实现不同的功能。

1,资源池(Resource Pool)

在SQL Server实例中,资源隔离的基本单位是Resource Pool,正如其名,该对象是资源池,在创建Resource Pool时,指定该Pool拥有的CPU和Memory资源的数量范围。在SQL Server 2012版本中,最多可以创建62个用户自定义的Resource Pool。SQL Server内置了两个Resource Pools:internal用于系统Task,用户不能配置;default是默认的Resource Pool,用于任何没有指定Resource Pool的Request;
2,负载分组(Workload Group)

Workload Group是逻辑上的实体,用于表示一个或多个工作负载。实际上,一个工作负载是SQL Server实例接收到的一个查询请求(Request),通过Classifier Function将多个具有共同属性的Requests划分到相同的Workload Group中。每一个Resource Pool服务于一个或多个工作负载分组,这就是说,这些工作负载分组能够共享同一个Resource Pool中拥有的资源。

SQL Server内置两个负载分组:internal和default,关联到相应的internal和default资源池,internal负载分组用于系统Task,SQL Server将没有被分类函数显式指定负载分组的Request划分到default 分组中。

3,分类函数(Classifier Function)

分类函数根据Login,应用程序名称,数据库名字等属性,将Request划分到不同的负载分组中,可以指定用户定义的负载分组或default负载分组。

4,处理流程

Resource Governor各个部分相互配合,控制内存和CPU资源的使用:Classification将SQL Server实例接收到的Requests进行分类,划分到不同的负载组中,负载组与之关联的Resource Pool中包含的CPU和内存资源来处理Request,Resource Governor的处理流程如下图:

Resource Pool 是SQL Server实例中物理资源的子集,由于位于同一个实例上的所有数据库共享该实例的所有资源,因此,最好将Resource Pool的三个组成对象创建在master 数据库中。

二,使用示例

1, 创建Resource Pool

CREATE RESOURCE POOL rp_20PercentWITH (     MIN_CPU_PERCENT = 0,     MAX_CPU_PERCENT = 20,     CAP_CPU_PERCENT = 20,     AFFINITY SCHEDULER = auto,     MIN_MEMORY_PERCENT = 0,     MAX_MEMORY_PERCENT = 20);

CAP_CPU_PERCENT选项设置资源池拥有CPU资源的硬上限,任何Workload Group使用的CPU数量不可能超过该上限,而资源池使用的CPU资源有可能超过 MAX_CPU_PERCENT 选项指定的比例。

2,创建Workload Group

创建工作负载分组,通过using子句关联该分组能够使用的资源池,一个工作负载分组只能关联一个资源池,一个资源池服务一个或多个工作负载分组。

 WORKLOAD

IMPORTANCE选项: 该选项指定该Workload Group在Resource Pool中相对的重要性,由于同一个Resource Pool关联多个Workload Group,Importance数值高的Workload Group,在竞争Resource Pool中的资源时,更容易获胜。该选项有三个可选值:Low,Medium和High,默认值是Medium。

3,创建 Classifier Function

该分类函数根据用户名称,将Request划分到wg_20Percent负载分组,默认情况下,任何没有指定Workload Group的Request,都使用Default资源池。在实际产品环境中,也可以使用APP_NAME()获取应用程序名字,根据应用程序划分负载分组。

        (()

4,启动Resource Governor

首先,配置Resource Governor使用的分类函数;然后,执行重新配置命令,启动Resource Governor,SQL Server使用分类函数对SQL Server实例接收的Requests,划分到不同的负载分组。

 (CLASSIFIER_FUNCTION RESOURCE GOVERNOR


资源 分组 工作 实例 用户 分类 不同 函数 多个 关联 隔离 应用程序 程序 系统 部分 处理 应用 控制 上限 数据 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 数据库代码seclect 绵阳网络安全服务 做好网络安全和信息 网络安全宣传周宣传板内容 数据库报表的名词 平安金服 软件开发 网络安全审查坚持什么 人民日报的数据库怎么注册 网络安全红线考试试题 手机收到邮件无法连接服务器 光环无限无法连接专用服务器 网络应用网络安全哪个就业好 浙江hpe塔式服务器多少钱 修改数据库数据类型命令 奉贤区一站式软件开发承诺守信 计算机软件开发需要哪些书 怎样提前准备mysql的数据库 印刷厂数据库 一个国家如何看待网络安全 物联网专用网络技术 您的电脑不能在安全服务器 戴尔t440服务器开机按钮 数据库如何显示所有表信息 浦东新区数据软件开发报价表 山西gps数显钟服务器 服务器安装PCI设备噪音上升 数据库素材图片 网络安全员报考条件 快易宝网络技术湖北有限公司 北京以拉谷网络技术有限公司
0