如何增加greenplum并发性和每秒查询次数

时间:2017-09-14 16:25:51

标签: greenplum

我们有一个相当大的Greenplum v4.3集群。 18个主机,每个主机有3个段节点。每个主机有大约40个内核和60G内存。

我们的表格是30列宽,有1亿行。当没有并发压力时,我们正在测试的查询有3-10秒的响应时间。随着我们增加并行触发的查询数量,延迟从平均3秒减少到50毫秒,如预期的那样。

但是我们发现无论我们并行发出多少查询,我们只有非常低的QPS(每秒查询数),几乎只有3-5次查询/秒。我们设置了max_memory = 60G,memory_limit = 800MB,active_statments = 100,希望CPU和内存可以被高效利用,但它们的使用率仍然很低,比如30%-40%。

我有一种强烈的感觉,我们试图并行地支持集群,希望能够充分利用CPU和内存利用率。但它并没有像我们预期的那样发挥作用。设置有什么问题吗?或者还有其他我不知道的事情吗?

2 个答案:

答案 0 :(得分:1)

这种行为可能有多种原因。

首先,每个Greenplum查询在一个逻辑段上使用不超过一个处理器核心。假设您在每个节点上有3个网段,并具有40个物理核心。运行两个并行查询将在每个节点上利用最多2 x 3 = 6个内核,因此您将需要大约40 / 6 ~= 6个并行查询来利用所有CPU。因此,也许对于每个节点的核心数量而言,最好创建更多段(gpexpand可以做到这一点)。顺便问一下,查询中使用的表是否已压缩?

第二,它可能是一个错误的查询。如果您将提供查询计划,则可能有助于您理解。 Greenplum中有一些查询类型,这些查询类型可能会将master作为瓶颈。

最后,可能是某些错误的OS或blockdev设置。

答案 1 :(得分:0)

我认为此文档页面Managing Resources可能会帮助您破坏资源

  • 您可以使用资源组限制/控制您的资源特别是并发属性(资源组中允许的并发事务的最大数量,包括活动和空闲事务)。
  • 减少队列帮助限制了ACTIVE_STATEMENTS

注意:ACTIVE_STATEMENTS将是当前正在运行的总语句,当您有50笔成本查询和下一个传入查询时,这将无法工作,mybe 5 * 50更好。     另外,您需要配置内存/ CPU设置以使查询可以继续进行。