Resource Group 资源组管理介绍
Greenplum在资源管理方面,经历了从资源管理队列到资源管理组的一个升级变化。不同的数据库用户分属于不同的组别,而新的资源管理组可以将资源分配给不同的组别。资源管理组可针对每一个组别,单独设置其特定的CPU、内存和并发限制,这来达到控制不同级别资源的分配和使用的目的。
Resource Group 和 Resource Queue 的对比
资源组和资源队列的主要对比区别有下列表所示:
从中我们可以看出资源组对资源的管理更加细颗粒度。并发控制是基于事务级别,更好保证事务一致性。并且实现了组内内存共享,全局内存共享等多个级别的资源灵活使用。
Resource Group 资源组管理
Greenplum 数据库支持两种类型的资源组:管理角色资源的组,以及管理外部组件(如PL/Container)资源的组。在管理角色资源的组中,对CPU的资源管理使用基于Linux的CGroup,对内存通过vmtracker来进行统计和跟踪。用户还可以使用资源组来管理外部组件(如PL/Container),其使用Linux CGroup来管理组件的总CPU和总内存资源。
主要配置介绍
资源组的参数和限制如下所示:
注意: 不对SET,RESET和SHOW命令执行资源限制。
主要命令介绍
主要相关的创建命令有
1
●
启动资源组
c. 启动资源组选项后,将默认创建2个资源组
-
-
将gp_resource_manager服务器配置参数设置为值"group":
i.gpconfig -s gp_resource_manager
ii.gpconfig -c gp_resource_manager -v "group"
-
重启Greenplum 数据库
-
i. admin_group和default_group:
ii. 例如:
2
●
创建一个资源组
-
-
=# create resource group rg_new with (concurrency=5, cpu_rate_limit=20, memory_limit=30, memory_shared_quota=20, memory_spill_ratio=30);
-
3
●
修改资源组的配置
-
-
=# alter resource group rg _group set memory_spill_ratio 50;
-
=# alter resource group admin_group set memory_limit 70;
-
4
●
将资源组绑定给某一个用户的 SQL
-
-
=# CREATE ROLE r1;
-
=# ALTER ROLE r1 RESOURCE GROUP rg_new;
-
5
●
删除一个资源组
-
a. =# drop resource group rg_new;
事务并发限制介绍
对事务并发限制,指的是资源组内允许的最大并发事务数。每个角色的资源组在逻辑上被划分为固定数量的槽位,也就是并发限制。Greenplum Database以相同的固定百分比为这些插槽分配内存资源。
1. Greenplum Database在资源组达到并发限制后对提交的事务进行排队。当一个正在运行的事务完成时,如果存在足够的内存资源,Greenplum Database从等待队列中取出最早的事务来运行队, 也就是说遵守先进先出的原则(FIFO)。