GBase 8a
其他
文章
精选

如何实现让UserLoad(夜间任务)和UserSelect(白天任务)在各自时段使用不同的资源池?需要配置哪些计划(plan)?

发表于2026-03-22 11:15:5745次浏览2个评论

要实现 UserLoad(夜间任务)UserSelect(白天任务) 在各自时段使用不同的资源池,核心是配置两个资源计划(plan):plan_day(白天计划)plan_night(夜晚计划),并通过激活不同的计划来实现时段切换。

一、需要配置的计划(Plan)

必须创建两个资源计划,作为不同时段资源分配策略的容器:

  1. plan_day:白天生效的资源计划。

     

  2. plan_night:夜晚生效的资源计划。

二、完整配置步骤

以下是实现该目标的完整步骤

步骤1:创建资源消费组并关联用户

将用户按业务类型分组。

CREATE CONSUMER GROUP group_load COMMENT = 'users for load';
CREATE CONSUMER GROUP group_select COMMENT = 'users for select';
ALTER CONSUMER GROUP group_load ADD USER UserLoad;
ALTER CONSUMER GROUP group_select ADD USER UserSelect;

步骤2:创建静态和动态资源池

创建基础资源池和两个分别代表高、低优先级的动态池。

-- 1. 创建静态资源池(整体资源边界)
CREATE RESOURCE POOL static_pool0 (
    cpu_percent = 100,
    max_memory = 10000,
    max_temp_diskspace = 10000,
    max_disk_space = 10000,
    max_disk_writeio = 1000,
    max_disk_readio = 1000
) TYPE STATIC;

-- 2. 创建高优先级动态资源池(用于需要快速响应的业务)
CREATE RESOURCE POOL high_pool (
    priority = 1,
    cpu_percent = 80,
    max_memory = 8000,
    max_temp_diskspace = 5000,
    max_disk_space = 5000,
    max_disk_writeio = 600,
    max_disk_readio = 600,
    max_activetask = 200,
    task_max_parallel_degree = 100,
    task_waiting_timeout = 100000,
    task_running_timeout = 100000
) TYPE DYNAMIC BASE ON static_pool0;

-- 3. 创建低优先级动态资源池(用于可容忍延迟的业务)
CREATE RESOURCE POOL low_pool (
    priority = 1,
    cpu_percent = 20,
    max_memory = 2000,
    max_temp_diskspace = 5000,
    max_disk_space = 5000,
    max_disk_writeio = 400,
    max_disk_readio = 400,
    max_activetask = 200,
    task_max_parallel_degree = 100,
    task_waiting_timeout = 100000,
    task_running_timeout = 100000
) TYPE DYNAMIC BASE ON static_pool0;

步骤3:创建资源计划

创建两个分别对应白天和夜晚的计划。

 

CREATE RESOURCE PLAN plan_day COMMENT = 'day plan';
CREATE RESOURCE PLAN plan_night COMMENT = 'night plan';

步骤4:创建指令计划(绑定消费组与资源池)

这是实现差异化管控的关键,为每个计划创建指令,明确“谁在什么时候用什么池”。

1. 白天计划 (plan_day) 的指令:

  • 查询用户组 (group_select) 使用高优先级池 (high_pool)

     

  • 加载用户组 (group_load) 使用低优先级池 (low_pool)
  • 默认用户组 (default_consumer_group) 也使用高优先级池

 

CREATE RESOURCE DIRECTIVE directive1 (
    PLAN_NAME = 'plan_day',
    POOL_NAME = 'high_pool',
    GROUP_NAME = 'group_select',
    COMMENT = 'select user resource usage on day'
);
CREATE RESOURCE DIRECTIVE directive2 (
    PLAN_NAME = 'plan_day',
    POOL_NAME = 'low_pool',
    GROUP_NAME = 'group_load',
    COMMENT = 'load user resource usage on day'
);
CREATE RESOURCE DIRECTIVE directive3 (
    PLAN_NAME = 'plan_day',
    POOL_NAME = 'high_pool',
    GROUP_NAME = 'default_consumer_group',
    COMMENT = 'other user resource usage on day'
);

2. 夜晚计划 (plan_night) 的指令:

  • 加载用户组 (group_load) 使用高优先级池 (high_pool)

     

  • 查询用户组 (group_select) 使用低优先级池 (low_pool)

     

  • 默认用户组 (default_consumer_group) 也使用低优先级池

 

CREATE RESOURCE DIRECTIVE directive4 (
    PLAN_NAME = 'plan_night',
    POOL_NAME = 'high_pool',
    GROUP_NAME = 'group_load',
    COMMENT = 'load user resource usage on night'
);
CREATE RESOURCE DIRECTIVE directive5 (
    PLAN_NAME = 'plan_night',
    POOL_NAME = 'low_pool',
    GROUP_NAME = 'group_select',
    COMMENT = 'select user resource usage on night'
);
CREATE RESOURCE DIRECTIVE directive6 (
    PLAN_NAME = 'plan_night',
    POOL_NAME = 'low_pool',
    GROUP_NAME = 'default_consumer_group',
    COMMENT = 'other user resource usage on night'
);

步骤5:激活与切换资源计划

通过命令在指定时间点激活对应的计划,实现自动切换。

-- 早上8:00,激活白天计划
ACTIVE RESOURCE PLAN plan_day ON VC vc1;

-- 晚上20:00,先停用当前计划,再激活夜晚计划
DEACTIVE RESOURCE PLAN ON VC vc1;
ACTIVE RESOURCE PLAN plan_night ON VC vc1;

注意vc1 是虚拟集群名,请根据实际环境替换。同一VC下同一时段只能有一个激活的计划。

三、配置逻辑总结

时间段用户/组绑定资源池设计意图
白天group_select (UserSelect)

high_pool (高优先级)

 

保证查询业务响应及时
白天group_load (UserLoad)low_pool (低优先级)限制白天加载任务,避免影响查询
白天

default_consumer_group (其他用户)

 

high_pool (高优先级)

 

其他用户也享有高响应
夜晚group_load (UserLoad)

high_pool (高优先级)

 

提升夜间紧急加载任务的速度
夜晚group_select (UserSelect)low_pool (低优先级)夜间查询任务少,降低优先级
夜晚

default_consumer_group (其他用户)

 

low_pool (低优先级)其他用户使用低优先级资源

四、关键要点与验证

  1. 必须项:任何计划中,default_consumer_group 必须关联一个动态资源池,否则计划无法激活。

     

  2. 切换机制:计划切换需要手动执行命令,或通过外部调度工具(如crontab)定时触发。
  3. 验证方法
    • 激活计划后,查询 gbase.resource_config 表确认当前激活的计划。

       

    • 用户执行任务时,通过 SHOW RESOURCE POOL USAGE 等命令查看资源池使用情况,验证管控是否生效。

       

通过以上配置,即可实现 UserLoadUserSelect 在不同时段受到不同的资源管控,从而更合理地利用集群资源,满足业务波动的需求。

 

评论

登录后才可以发表评论
用户头像
GBase用户28017发表于 4个月前
优秀
经纬发表于 4个月前
学习了