Redshift WLM-如何使用未使用的插槽

时间:2018-09-19 19:09:40

标签: amazon-redshift

我对Redshift中的WLM的理解是有队列,每个队列都有插槽(默认为5)。假设系统处于空闲状态,然后运行查询。默认情况下,它占用一个插槽并运行查询,即使其他插槽是可用且可用的。是吗?

如果是这样,让其他插槽保持闲置并且在可能的时候不做任何工作,是否不浪费资源?

1 个答案:

答案 0 :(得分:0)

是的,这就是Redshift WLM的工作原理。

例如,如果它配置有一个队列,并且该队列有五个插槽,每个插槽有20%的内存,那么默认情况下,您的一个查询将在一个插槽中运行,并且最多使用20%的内存。其余插槽将保持空闲状态,等待其他查询命中相同的队列。

但是,您可以覆盖默认行为,例如通过将wlm_query_slot_count指定为2,查询将使用两个插槽而不是一个插槽,因此最多占用40%的内存。

例如

set wlm_query_slot_count to 2;
select * from public.mytable;

请谨慎执行此操作,好像您将插槽数增加到5(在此示例中)一样,由于现在没有可用的插槽,因此将无法运行其他查询。如果在群集上启用了短查询加速(SQA),则情况并非如此,因为在这种情况下,如果有特殊查询,则将在特殊的隐藏队列中运行非常短的查询(通常为5秒或更短)。没有可用的普通插槽。

许多群集WLM配置将有一个以上的队列,可能只有一个或两个,只有很少的插槽,因此资源/插槽比例更高,可用于较少数量的资源匮乏的任务,例如数据加载和更新,以及有些具有更多的插槽,每个插槽的资源较少。 BI和分析工具通常会使用这些队列来查询数据。

您还可以使用WLM Query Queue Hopping来管理最终将等待插槽释放的查询,方法是将它们转移到其他队列中。还请记住,“并发性”和“内存百分比”是 dynamic WLM配置属性,您可以使用CLI(ModifyClusterParameterGroup)更改它们,而不必重新启动集群,例如。加载完所有数据后,将资源从数据加载队列重新分配到分析队列。