Amazon Redshift
数据库开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

修改 WLM 配置

修改 WLM 配置的最简单方法是使用 Amazon Redshift 控制台。您还可以使用 AWS CLI 或 Amazon Redshift API。

在自动和手动 WLM 之间切换集群时,集群将进入 pending reboot 状态。在下次集群重新启动之前,更改不会生效。

有关修改 WLM 配置的详细信息,请参阅 Amazon Redshift Cluster Management Guide 中的配置工作负载管理

从手动 WLM 迁移到自动 WLM

为了最大限度地提高系统吞吐量和高效地使用资源,我们建议您为队列设置自动 WLM。考虑采用以下方法设置从手动 WLM 到自动 WLM 的平滑过渡。

要从手动 WLM 迁移到自动 WLM 并使用查询优先级,我们建议您创建新参数组,然后将该参数组附加到集群。有关更多信息,请参阅 Amazon Redshift Cluster Management Guide 中的 Amazon Redshift 参数组

重要

要更改参数组或从手动切换到自动 WLM,需要重新启动集群。有关更多信息,请参阅 WLM 动态和静态配置属性

我们举一个例子,其中有三个手动 WLM 队列。每个队列分别对应于 ETL 工作负载、分析工作负载和数据科学工作负载。ETL 工作负载每 6 小时运行一次,分析工作负载全天运行,而数据科学工作负载可能随时激增。使用手动 WLM,您可以根据您对每个工作负载对业务重要性的理解来指定每个工作负载队列所获得的内存和并发性。指定内存和并发性不仅难以弄清楚,而且还会导致集群资源被静态分区,而导致在只有一部分工作负载在运行时浪费资源。

您可以将自动 WLM 与查询优先级一起使用,以指示工作负载的相对优先级,从而避免前面的问题。对于此示例,请执行以下步骤:

  • 创建一个新参数组并切换到 Auto WLM (自动 WLM) 模式。

  • 为三个工作负载中的每一个添加队列:ETL 工作负载、分析工作负载和数据科学工作负载。为与 Manual WLM (手动 WLM) 模式一起使用的每个工作负载使用相同的用户组。

  • 将 ETL 工作负载的优先级设置为 High,将分析工作负载的优先级设置为 Normal,并将数据科学工作负载的优先级设置为 Low。这些优先级反映不同工作负载或用户组的业务优先级。

  • (可选)为分析或数据科学队列启用并发扩展,以便即使 ETL 工作负载每 6 小时执行一次,这些队列中的查询也能获得一致的性能。

使用查询优先级,当只有分析工作负载在集群上运行时,它会使整个系统自身产生高吞吐量和最佳系统利用率。但是,当 ETL 工作负载启动时,它会获得先行权,因为它具有更高的优先级。除了在被接纳之后的优先资源分配之外,作为 ETL 工作负载的一部分运行的查询在被接纳期间也会获得优先级。因此,无论系统上运行的是什么其他内容,ETL 工作负载都可以按预测的方式执行。高优先级工作负载的可预测性能是以其他较低优先级工作负载为代价的,这些工作负载运行时间更长,因为它们的查询在等待更重要的查询完成。或者,因为当它们与更高优先级的查询同时运行时,它们获得的资源比例较小。Amazon Redshift 使用的调度算法可确保较低优先级的查询不会遭受资源匮乏,而是继续取得进展,尽管速度较慢。

注意

  • 超时字段在自动 WLM 中不可用。请改用 QMR 规则 query_execution_time。有关更多信息,请参阅WLM 查询监控规则

  • QMR 操作 HOP 不适用于自动 WLM。请改用 change priority 操作。有关更多信息,请参阅WLM 查询监控规则

  • 在参数组中,避免混用自动 WLM 队列和手动 WLM 队列。而是在迁移到自动 WLM 时创建新参数组。