管理资源
管理资源
Greenplum数据为用户提供了根据业务需求对查询进行排序以及提供资源的功能, 该功能的主要目的是为了防止在资源不可用时仍然发起查询的行为。
用户可以使用资源管理功能来限制并行的查询数、单个查询所使用的内存量和CPU使用量。 Greenplum数据库提供了两种管理资源的模式 —— 资源队列和资源组。
Important: 在启用着基于资源组的负载管理的RedHat 6.x 以及 CentOS 6.x系统中
存在明显的Greenplum数据库性能下降现象,这是Linux cgroup的内核Bug造成的。该内核Bug已经在
RedHat 7.x 以及 CentOS 7.x系统中被修复了。
若用户对在RedHat 6系统下使用资源组的性能满意,且符合使用场景的话,请将内核版本升级到 2.6.32-696或更高以获得cgroups Bug修复带来的其他优势。
Greenplum数据库中同时只能启用资源组或资源队列中的一个资源管理模式。
在安装Greenplum数据库集群时,默认启用的资源管理模式是资源队列管理模式。尽管在该模式下, 用户仍然可以创建并分配资源组,但启用资源组管理模式仍需要先启用资源组。
下表总结了一些资源队列和资源组的区别。
参数 | 资源队列 | 资源组 |
---|---|---|
并行 | 在查询级别管理 | 在事务级别管理 |
CPU | 指定队列顺序 | 指定CPU的使用百分比;使用Linux控制组 |
内存 | 在队列和操作级别管理;用户可以过量使用 | 在事务级别管理,可以进一步分配和追踪;用户不可以过量使用。 |
内存隔离 | 无 | 同资源组下的事务使用的内存是隔离的,不同资源组使用的内存也是隔离的。 |
用户 | 仅非管理员用户有限制。 | 非管理员用户和超级用户都有限制 |
排序 | 当没有可用槽位时,才开始排序 | 当槽位或内存不足时,开始排序 |
查询失效 | 当内存不足时,查询可能会立即失效 | 在没有更多的共享资源组内存的情况下,若事务到达了内存使用量限制后仍然提出增加内存的申请,查询可能会失效 |
避开限制 | 超级用户角色以及特定的操作者和功能不受限制。 | SET、RESET和SHOW指令不受限制 |
外部组件 | 无 | 管理PL/Container CPU和内存资源 |