【问题标题】:Amazon Redshift node parallel requests take longer than sequentialAmazon Redshift 节点并行请求比顺序请求花费的时间更长
【发布时间】:2018-04-16 18:32:29
【问题描述】:

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

我可以清楚地看到阻塞是由并行加载查询引起的。有什么办法呢?

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

顺序:

平行:

【问题讨论】:

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


    【解决方案1】:

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

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

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

    一种常见的做法是创建单独的队列:

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

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

    【讨论】:

    • 我们尝试增加队列数和并发性。但它显示的效果正好为 0。不知道为什么。瓶颈似乎在其他地方。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-13
    • 1970-01-01
    相关资源
    最近更新 更多