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

资源管理

Apache Cloudberry 具备强大的资源管理能力,可以根据业务需求为查询分配资源、设定优先级。当资源不足时,系统会阻止新查询运行,从而保障整体稳定性。

资源管理主要用于控制并发查询数、单个查询的内存使用量以及 CPU 占用。为此,Apache Cloudberry 提供了两种管理方案:[资源队列](./manage-resources-using- resource-queues.md)和资源组

在 Apache Cloudberry 中,资源队列和资源组两种方案相互排斥,只能启用其一。你可以通过设置 gp_resource_manager 这个服务参数来选择启用的方案。

下表详细对比了这两种方案的差异。

对比维度资源队列资源组
并发控制定义了同时可用的查询槽(slot)数量定义了同时可用的事务槽(slot)数量
CPU通过查询优先级来间接控制 CPU可以指定 CPU 资源的百分比或核心数;基于 Linux Control Groups (cgroups) 实现
内存在队列和算子(operator)级别进行管理;允许用户超额申请(over-subscribe)在事务级别进行管理,分配和追踪能力更强;允许用户超额申请
用户限制只对非管理员用户生效限制对超级用户(SUPERUSER)、非管理员用户以及非用户类的系统进程均生效
磁盘 I/O不支持可以限制最大磁盘读写吞吐量,以及每秒最大读写 IO 操作数(IOPS)
排队机制当没有可用槽位或可用内存不足时,查询需要排队等待仅当没有可用槽位时,查询才需要排队等待
查询失败如果查询申请的内存超过了系统可用内存和溢写(spill)限制,查询可能会立即失败如果查询申请的内存超过了系统可用内存和溢写限制,查询可能会失败
限制豁免超级用户(SUPERUSER)以及某些特定的算子和函数不受限制SETRESETSHOW 命令不受限制。此外,某些查询可以被配置为绕过并发数限制
外部组件不支持可以管理 PL/Container 的 CPU 资源