gpt4 book ai didi

amazon-web-services - Redshift WLM 配置 : how is unallocated memory used?

转载 作者:行者123 更新时间:2023-12-04 17:08:14 25 4
gpt4 key购买 nike

在定义 Redshift 查询队列时,您可以分配分配给每个队列的内存比例。例如,如果您有 5 个队列,您可以为每个队列分配 20% 的内存。但是,您还允许分配内存,使其一部分保持未分配状态。

在本文档中:
http://docs.aws.amazon.com/redshift/latest/dg/cm-c-defining-query-queues.html
它说,
“任何未分配的内存都由 Amazon Redshift 管理,如果队列请求额外的内存进行处理,则可以暂时将其分配给队列。
例如,如果配置四个队列,则可以按如下方式分配内存:20%、30%、15%、15%。剩下的 20% 未分配并由服务管理。”

在文档的前面,它说,
“如果特定查询需要的内存多于分配给单个查询槽的内存,您可以通过增加 wlm_query_slot_count 参数来增加可用内存。以下示例将 wlm_query_slot_count 设置为 10,执行真空,然后将 wlm_query_slot_count 重置为 1。”

这与内存分配有关吗?是否可以使用查询槽数调整来临时消耗比整个队列通常允许的更多的内存?

我认为我的问题实际上是关于第一句话的这一部分,“任何未分配的内存都由 Amazon Redshift 管理,如果队列请求额外的内存来处理 ,可以暂时将其分配给队列 。”

这是否意味着运行查询的用户必须专门请求额外的内存?这是否意味着除非您提出这些特定请求,否则保留一些未分配的内存是没有用的?

最佳答案

wlm_query_slot_count 和队列的内存分配这两个概念是不同的。

例如,当您将集群的并发级别指定为 20 时,您将创建 20 个执行槽。如果这些较小的插槽(与默认的较大的 5 个插槽相比)对于某些查询(例如 VACUUM 或更大的报告)来说太小,则可以使用 wlm_query_slot_count 为这些特定查询提供多个插槽而不是单个插槽。

就 CPU、IO 和 RAM 而言,分配给各个插槽的资源不必统一,因为您可以为某些队列提供比其他队列更多的内存,因为发送到该队列的查询需要更多内存。当您看到更多查询在计算过程中内存不足时溢出到磁盘时,您就知道需要更多内存。

对于您正在运行的每个查询,Redshift 将根据您点击的列以及您在这些列上应用的函数来估计内存需求(这是使列定义尽可能窄的另一个很好的理由)。如果 WLM 有未分配的内存,它可以将其中的一部分提供给需要它的查询。

然而,当您创建此类队列定义时,您缺少将资源分配给查询的集群灵活性。例如,您可能会创建一个完全堵塞的队列,而其他队列则空闲并浪费集群资源。因此,请谨慎操作,并监控这些队列的使用情况,以验证您实际上是在改进集群优先级和性能,而不是对其造成损害。

关于amazon-web-services - Redshift WLM 配置 : how is unallocated memory used?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36227695/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com