跳到主要内容
版本:26.x

管理工作负载

工作负载组(Workload Group)控制同一集群内的资源分配。例如,为定时导入与交互式报表建立不同组,避免某一类任务占用全部 CPU、内存或查询并发。

工作负载组可以预留或限制 CPU 与内存,限制并发查询、排队数量及读吞吐量。它仅作用于所选集群,不隔离数据、共享缓存或共享线程池,也不能替代数据库用户和角色。需要更强计算隔离时,应使用独立集群。

控制台导航使用 工作负载,SQL 使用 WORKLOAD GROUP;SQL 手册中的“资源组”指同一概念。

前置条件​

  • 具有相应管理权限。
  • 为需要使用该组的仓库数据库用户或角色授予 USAGE 权限。
  • 通过数据库用户默认属性或会话变量 workload_group 指定工作负载组,会话变量优先。

工作负载组权限属于仓库数据库权限,不是组织成员角色。参见用户与组织中的仓库用户与角色说明。

在控制台创建​

  1. 登录 SelectDB Cloud 控制台,选择目标仓库。
  2. 在左侧导航栏单击 工作负载,使用页面的新建入口。
  3. 指定名称和目标集群,配置资源及队列限制。
配置作用
名称、集群标识工作负载组及所属集群。
CPU 最小值、最大值按集群可用 CPU 百分比预留和限制资源;空闲时可超过最小值,但不能超过最大值。
内存最小值、最大值按集群可用内存百分比预留和限制资源。内存紧张时可能取消查询以释放预留资源;超限时查询可能落盘或被取消。
最大并发数同时执行的查询数量上限。
最大队列长度等待查询数量上限;为 0 时,达到并发上限后直接拒绝新查询。
排队超时时间查询在队列中的最长等待时间。
扫描线程数当前组扫描使用的线程数;默认 -1 表示不生效,使用 BE 配置中的扫描线程数。
  1. 核对配置,单击 确认。

最大值不是资源预留。所有组的 CPU 最小值之和、内存最小值之和分别不得超过 100%,每组最小值不得大于对应最大值。应为其他工作负载和系统活动预留余量。

分配工作负载组​

授予 USAGE 后,为业务使用的数据库用户设置默认工作负载组,或在会话中设置:

SET PROPERTY 'default_workload_group' = 'reporting';
SET workload_group = 'reporting';

第一条为当前数据库用户的后续会话设置默认组;第二条仅影响当前会话,并覆盖默认设置。请将 reporting 替换为实际组名。

编辑或删除​

在 工作负载 页面,使用目标行 操作 列的编辑或删除入口,并确认操作。

默认 normal 组不能删除。删除其他组前,更新引用该组的权限、用户默认值、会话设置和工作负载策略。修改限制或删除工作负载组可能影响正在运行的查询。

使用 SQL 管理​

在 SQL 编辑器或其他客户端中执行 SQL。Cloud 模式下,CREATE、ALTER 和 DROP WORKLOAD GROUP 必须使用 FOR <cluster> 显式指定所属集群。

CREATE WORKLOAD GROUP reporting FOR analytics
PROPERTIES (
"max_cpu_percent" = "50%",
"max_memory_percent" = "50%",
"max_concurrency" = "20",
"max_queue_size" = "50",
"queue_timeout" = "30000",
"read_bytes_per_second" = "104857600",
"remote_read_bytes_per_second" = "52428800"
);

将 reporting 替换为组名,analytics 替换为目标集群名。read_bytes_per_second 限制内表读取(包括落盘文件目录),remote_read_bytes_per_second 限制外表读取。具体属性、单位和版本支持参见 SQL 手册。

配置后,可通过查询审计观察查询执行效果。