Amazon Redshift节点并行请求所需的时间超过连续

时间:2018-04-16 18:32:30

标签: node.js amazon-web-services amazon-redshift

我正在尝试使用node-redshift和pg从我的节点应用程序运行redshift上的一堆选择查询。如果我按顺序运行查询,每次查询平均得到2秒。但是,当我并行运行查询时,它们需要更长的时间,最后一个查询需要大约32秒。

我可以清楚地看到clog是由并行加载查询引起的。可以做些什么呢?

我还可以得出结论,Redshift并没有花那么长时间。因为缓存的Redshift查询仍然需要相当大的开销。

依序:

Sequential

并行

Parallel

1 个答案:

答案 0 :(得分:0)

Amazon Redshift Workload Management可用于配置并发,队列和内存分配。

  

默认情况下,Amazon Redshift配置一个队列,其并发级别为5,这使得最多可以同时运行五个查询,加上一个预定义的超级用户队列,并发级别为1。您最多可以定义八个队列。可以将每个队列配置为最大并发级别50.所有用户定义的队列(不包括超级用户队列)的最大总并发级别为50。

并发查询需要永久分配的内存。如果你总是运行并发查询,这很好,但如果它只运行少量的时间就很浪费。

通常的做法是创建单独的队列:

  • 具有低并发性的长时间运行查询的一个队列。这会为每个查询分配大量内存,但查询可能会排队。
  • 一个用于短期查询的队列。这样可以在不受长时间运行查询影响的情况下快速完成更短的查询 - 例如,每隔几分钟计算一次仪表板查询。这些类型的查询可能需要更少的内存,因此可以增加并发性。

底线:默认情况下,Redshift配置为具有低并发性的大型复杂查询。您可以调整设置。