OushuDB中如何设置查询最大和最小并发度
如上
如上
通常,一个查询的并行度会影响一个查询的性能以及系统的吞吐量。资源管理器分配给一个查询的 virtual segment 个数决定了一个查询的并行度。 一般情况下,用户不需要人为干预资源管理器对 virtaul segment 个数的分配,OushuDB 资源管理器会很好的管理查询的并行度。但有些时候,用户可能想要控制一个查询的并发度,OushuDB 提供了多个 可供用户调控的手段。
通过 hawq_rm_nvseg_perquery_limit:这个是资源管理器针对一个查询可以分配的最大 virtual segment 数。默认值为 512。用户可以调整这个值来放松或者加紧对并行度的限制。
NVSEG_UPPER_LIMIT/NVSEG_LOWER_LIMIT:这两个值可以在创建资源队列时指定。决定了一个资源队列中的查询使用的最小和最大 virtual segment 个数。如果不指定这两个值,这两个参数默认处于不生效状态。
NVSEG_UPPER_LIMIT_PERSEG/NVSEG_LOWER_LIMIT_PERSEG:这两个值可以在创建资源队列时指定。决定了一个资源队列中的查询在每个节点上使用的最小和最大 virtual segment 个数。如果不指定这两个值,这两个参数默认处于不生效状态。 如果节点数为 10,NVSEG_UPPER_LIMIT_PERSEG 为 2,则该资源队列的查询最大可以使用 10 * 2 = 20 个 virtual segment。下面的语句可以对该值进行设置:
CREATE RESOURCE QUEUE adhoc2 WITH (PARENT='department3', ACTIVE_STATEMENTS=3,
MEMORY_LIMIT_CLUSTER=50%, CORE_LIMIT_CLUSTER=50%, NVSEG_UPPER_LIMIT_PERSEG=2);
hawq_rm_nvseg_perquery_limit 是一个硬性限制,NVSEG_UPPER_LIMIT/NVSEG_LOWER_LIMIT 和 NVSEG_UPPER_LIMIT_PERSEG/NVSEG_LOWER_LIMIT_PERSEG 的设置也不能突破 hawq_rm_nvseg_perquery_limit 的限制。