

 从补丁 198 开始，Amazon Redshift 将不再支持创建新的 Python UDF。现有的 Python UDF 将继续正常运行至 2026 年 6 月 30 日。有关更多信息，请参阅[博客文章](https://www.amazonaws.cn/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

# 工作负载管理
<a name="c_workload_mngmt_classification"></a>

本节介绍工作负载管理（WLM），该功能有助于您了解 Amazon Redshift 是如何准备并运行查询的。

利用 Amazon Redshift 工作负载管理（WLM）可以灵活地管理工作负载中的优先级，以便时间较短的、快速运行的查询在队列中不会被长时间运行的查询阻碍。Amazon Redshift 在运行时根据*服务类*创建查询队列，这将定义各种类型的队列的配置参数，包括内部系统队列和用户可访问的队列。从用户的角度看，用户可访问的服务类和队列在功能上是相同的。为了保持一致，本文档使用*队列* 一词来表示用户可访问的服务类以及运行时队列。

Redshift 提供简称为**自动 WLM** 的自动工作负载管理功能，该功能经过优化，可用于处理各种各样的工作负载，并且是推荐的默认设置。借助自动 WLM，Redshift 可在查询到达时确定资源利用率，并动态确定是在主集群或并发扩展集群上运行查询，还是将每个查询发送到队列。（当查询排队时，自动 WLM 会优先考虑持续时间较短的查询。） 自动 WLM 可尽最大可能提高总吞吐量，使您能够维护高效的数据仓库资源。这样您在运行工作负载时，就不必担心工作负载的大小或调度方式。自动 WLM 是预置集群的默认设置。有关更多信息，请参阅[实施自动 WLM](https://docs.amazonaws.cn/redshift/latest/dg/automatic-wlm.html)。

**注意**  
Amazon Redshift Serverless 工作组始终使用自动 WLM。

在运行大量查询或资源密集型查询时，如果本地资源上有工作负载在排队，工作负载管理可以进行扩展来使用额外的计算资源。采用自动 WLM 的并发扩展可以实现稳定的性能，支持几乎无限的并发用户和并发查询。

 如果您需要精细的手动优化，Redshift 预置集群提供了**手动 WLM**。在这种模式下，客户负责管理资源分配、查询并发度和排队。查询运行时，WLM 会根据用户的用户组或通过匹配在队列配置中列出的查询组，来将查询分配给队列。此配置通过用户设置的查询组标签来进行。有关更多信息，请参阅[实施手动 WLM](https://docs.amazonaws.cn/redshift/latest/dg/cm-c-defining-query-queues.html)。

尽管在使用过程中，手动 WLM 可以进行微调以匹配您的工作负载模式，但在大多数情况下，我们并不建议使用该模式，因为这是一种静态模式，使您难于适应一天或更长时间段中不断变化的工作负载。它需要更多的监控并持续调整。此外，在许多情况下，手动 WLM 使用计算资源的效率不如自动 WLM，例如将队列设置为手动以限制分配给队列的内存时。

衡量工作负载管理配置成功与否的一个重要指标是系统吞吐量，也就是成功完成的查询数量。系统吞吐量的衡量指标是每秒查询次数。有关更多信息，请参阅[监控 Amazon Redshift 集群性能](https://docs.amazonaws.cn/redshift/latest/mgmt/metrics.html)。

管理 WLM 配置的最简单方法是使用 Amazon Redshift 管理控制台。您还可使用 [Amazon Redshift 命令行界面](https://docs.amazonaws.cn/cli/latest/reference/redshift/)（CLI）或 [Amazon Redshift API](https://docs.amazonaws.cn/redshift/latest/APIReference/API_Operations.html)。有关实施和使用工作负载管理的更多信息，请参阅[实施工作负载管理](https://docs.amazonaws.cn/redshift/latest/dg/cm-c-implementing-workload-management.html)。