在繁忙的大型数据库系统中,往往会出现这样的情况:某一个或几个查询需要花费很长的时间,同时占用极多的资源,包括CPU、内存和其他资源,从而导致其他同时运行的查询无法争抢到相应的资源而被阻塞或运行缓慢。更严重的是,这种占用资源的查询往往并不是优先级-高的,但是足以拖累其他优先级更高的查询。在这样的数据库中,某种形式的资源管理策略是必要的:可以依赖它对各种查询进行管理,使得资源管理的方式更有弹性和更为有效。
作为一款成熟的主流数据库产品,Greenplum支持两种形式的资源管理策略: Resource Queue(RQ)和Resource Group(RG)。 二者都是基于角色的策略,即把用户分成若干个组,每个组对应不同的策略。 二者都可以对CPU、内存和并发数进行控制。
二者也有很多不同的地方:
- RQ在查询的级别进行管理并发数,而RG在事务的级别管理并发数;
- RQ以优先级为单位管理CPU,而RG通过cgroup以百分率为单位管理CPU;
- RQ在查询的级别进行管理内存,用户可以用显式声明的方式突破内存上限;而RG在事务的级别管理内存,用户无法突破内存上限;
- RQ不限制管理员权限的用户,而RG限制管理员权限的用户;
- RQ无法管理外部组件使用的内存,而RG可以通过cgroup管理外部组件使用的内存 等 等 ;
本文来源:https://blog.csdn.net/gp_community/article/details/123524709