高斯数据库 (gaussDB) - 资源负载管理 - 资源管理准备 (2)
创建资源池
背景信息
GaussDB 200 支持通过创建资源池对主机资源进行划分。开启资源负载管理之后,仅使 用默认资源池并不能满足业务对资源负载管理的诉求,必须根据需要创建新的资源池,对系统资源进行重分配,来满足实际业务对系统资源精细管理的需要。多租户场 景通过两级资源池(组资源池和业务资源池)进行资源管理。各类型资源池的特点如表 13-3 所示。
表 13-3 各类资源池的特点
在开启了资源负载管理功能之后,系统会自动创建 default_pool,当一个会话或者用户
没有指定关联的资源池时,都会被默认关联到 default_pool。default_pool 默认绑定
DefaultClass:Medium 控制组,并且不限制所关联的业务的并发数。default_pool 的详细
属性如 表 13-4 所示。
- GaussDB 200 不允许对 default_pool 参数进行修改。
- default_pool 资源池关联的业务并发量会受到全局并发参数 max_active_statements 的
限制。
前提条件
已熟悉 16.14.60 CREATE RESOURCE POOL、16.14.16 ALTER RESOURCE POOL 和
16.14.93 DROP RESOURCE POOL 语法的使用。
操作过程
创建资源池
步骤 1 2.2.3 使用 gsql 连接数据库。
步骤 2 创建组资源池关联到指定的子 Class 控制组。例如下面:名称为“resource_pool_a”的组
资源池关联到了“class_a”控制组。
CREATE RESOURCE POOL resource_pool_a WITH ( control_group=' class_a ');
CREATE RESOURCE POOL resource_pool_b WITH ( control_group=' class_b ');
CREATE RESOURCE POOL
步骤 3 创建业务资源池关联到指定的 Workload 控制组。例如下面:名称为
“resource_pool_a1”的业务资源池关联到了“workload_a1”控制组。
CREATE RESOURCE POOL resource_pool_a1 WITH ( control_group=' class_a:workload_a1 ');
CREATE RESOURCE POOL resource_pool_a2 WITH ( control_group=' class_a:workload_a2 ');
CREATE RESOURCE POOL resource_pool_b1 WITH ( control_group=' class_b:workload_b1 ');
CREATE RESOURCE POOL resource_pool_b2 WITH ( control_group=' class_b:workload_b2 ');
CREATE RESOURCE POOL
说明
- 如果在创建资源池的时候不指定所关联的控制组,则该资源池会被关联到默认控制组
(DefaultClass 控制组下的 "Medium" Timeshare 控制组)。 - control_group 取值区分大小写,指定时要使用单引号。
- 若数据库用户指定 Timeshare 控制组代表的字符即 "Rush"、“High”、“Medium"或"Low" 其
中一种,如 control_group 的字符串为 "High”,代表资源池指定到 DefaultClass 控制组下的
“High” Timeshare 控制组。
管理资源池
修改资源池的属性。例如下面:修改资源池“resource_pool_a2”关联的控制组为
“class_a:workload_a1”(假设 class_a:workload_a1 未被其他资源池关联)。
ALTER RESOURCE POOL resource_pool_a2 WITH ( control_group=" class_a:workload_a1 ");
ALTER RESOURCE POOL
删除资源池
删除资源池。例如下面删除资源池“resource_pool_a2”
DROP RESOURCE POOL resource_pool_a2 ;
DROP RESOURCE POOL
说明
- 如果某个角色已关联到该资源池,无法删除。
- 多租户场景下,如果删除组资源池,其业务资源池都将被删除。只有不关联用户时,资源池 才能被删除。
查看资源池的信息
- 不允许使用 INSERT、UPDATE、DELETE、TRUNCATE 操作资源负载管理的系统表
pg_resource_pool,否则会导致通过不同 CN 查到的结果不一致。 - 不允许修改资源池的 memory_limit 和 cpu_affinity 属性。
- 查看当前集群中所有的资源池信息。
SELECT * FROM PG_RESOURCE_POOL;
respool_name | mem_percent | cpu_affinity | control_group | active_statements |
max_dop | memory_limit | parentid | io_limits | io_priority
------------------+-------------+--------------+---------------------+-------------------
+---------+--------------+----------+-----------+-------------
default_pool | 100 | -1 | DefaultClass:Medium | -1
| 1 | 8GB | 0 | 0 | None
resource_pool_a | 20 | -1 | class_a | 10
| 1 | 8GB | 0 | 0 | None
resource_pool_b | 20 | -1 | class_b | 10
| 1 | 8GB | 0 | 0 | None
resource_pool_a1 | 20 | -1 | class_a:workload_a1 | 10
| 1 | 8GB | 16970 | 0 | None
resource_pool_a2 | 20 | -1 | class_a:workload_a2 | 10
| 1 | 8GB | 16970 | 0 | None
resource_pool_b1 | 20 | -1 | class_b:workload_b1 | 10
| 1 | 8GB | 16971 | 0 | None
resource_pool_b2 | 20 | -1 | class_b:workload_b2 | 10
| 1 | 8GB | 16971 | 0 | None
(7 rows)
- 查看某个资源池关联的控制组信息,具体内容可以参考
gs_control_group_info(pool text)。
如下命令中“resource_pool_a1”为资源池名称。
SELECT * FROM gs_control_group_info (' resource_pool_a1 ');
name | class | workload | type | gid | shares | limits | rate |
cpucores
---------------------+---------+-------------+-------+-----+--------+--------+------
+----------
class_a:workload_a1 | class_a | workload_a1 | DEFWD | 87 | 30 | 0 | 0 | 0-3
(1 row)
表 13-5 gs_control_group_info 属性
本文内容由互联网用户自发贡献,版权归作者所有,本社区不拥有所有权,也不承担相关法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:jaagool@sina.cn 进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。