

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

# 按需计算容量的计费
<a name="serverless-billing-on-demand"></a>

**基本容量及其对计费的影响**

当查询运行时，系统将根据给定持续时间内使用的容量（以 RPU 小时为单位）按秒对您进行收费。如果没有任何查询在运行，则您不需要为计算容量付费。您还需要根据存储的数据量为 Redshift 托管式存储 (RMS) 付费。

创建工作组时，您可以选择设置计算的**基本容量**。为满足工作组级别的工作负载的性价比要求，可以调高或调低现有工作组的基本容量。从**工作组配置**中选择工作组，然后选择**限制**选项卡，以使用控制台更改基本容量。

随着查询数量增加，Amazon Redshift Serverless 会自动扩展以提供一致的性能。

**最大 RPU 小时数使用限制**

为了使 Amazon Redshift Serverless 的成本保持可预测，您可以设置每天、每周或每月使用的**最大 RPU 小时数**。您可以使用控制台或 API 来设置该值。您可以指定在达到限制时，将日志条目写入系统表、接收告警或者关闭用户查询。设置最大 RPU 小时数有助于控制成本。对于访问数据仓库中数据的查询和访问外部数据的查询（例如 Amazon S3 中的外部表），有关最大 RPU 小时数的设置适用于您的工作组。

以下是示例：

假设您设置了每周 100 小时的限制。要在控制台上完成此设置，请执行以下操作：

1. 选择您的工作组，然后在**限制**选项卡下选择**管理使用量限制**。

1. 添加使用量限制，选择**每周**频率，持续时间为 **100** 小时，并将操作设置为**关闭用户查询**。

在此示例中，如果您在一周内达到 RPU 100 小时的限制，则将关闭查询功能。

为工作组设置最大 RPU 小时数不会限制工作组的性能或计算资源。您可以随时调整此设置，而不会影响查询处理。设置最大 RPU 小时数的目标是帮助您满足价格和性能要求。有关无服务器计费的更多信息，请参阅 [Amazon Redshift 定价](https://aws.amazon.com/redshift/pricing/)。



保持 Amazon Redshift Serverless 成本可预测的另一种方法是使用 AWS [成本异常检测](https://aws.amazon.com/aws-cost-management/aws-cost-anomaly-detection/)，以减少账单出现意外情况的可能性并提供更多控制权。

**注意**  
[Amazon Redshift 定价计算器](https://calculator.aws/#/addService/Redshift)有助于估算价格。您输入所需的计算资源，该计算器将提供成本预览。

## 设置最大容量以控制计算资源的成本
<a name="serverless-maximum-rpu-setting-billing"></a>

最大容量设置用作 Amazon Redshift Serverless 可以纵向扩展到的 RPU 上限。它有助于控制计算资源的成本。与基本容量用于设置可用计算资源最小数量的方法类似，最大容量设定了 RPU 使用量的上限。它通过这种方法确保您的支出符合计划。最大容量特定于每个工作组应用，它可以随时限制计算资源使用量。

### 最大容量与 RPU 小时使用量限制的不同之处
<a name="serverless-maximum-setting-difference"></a>

 最大 RPU 小时数限制和最大容量设置的目的都是为了控制成本。但是它们通过不同的方式来实现这个目标。以下要点解释了其中的区别：
+ *最大容量* – 此设置确定了 Amazon Redshift Serverless 在扩展中使用最大 RPU 数量。当需要自动扩展计算容量时，设置更高的最大容量值可以提高查询吞吐量。达到最大容量限制时，工作组就不会进一步纵向扩展资源规模。
+ *最大 RPU 小时数使用限制* – 与最大容量不同，此设置不设置容量上限。但它会执行其他操作来帮助您限制成本。这包括在日志中添加条目、通知您或停止运行查询（视您的选择而定）。

您可以单独使用最大容量，也可以利用最大 RPU 小时数使用限制中的操作作为补充。

### 最大容量使用案例
<a name="serverless-maximum-setting-billing-scenario"></a>

每个工作组可以有不同的最大容量设置。它可以帮助您强制实施预算要求。为了说明其工作原理，假设以下案例：
+ 您有一个工作组，基本容量设置为 256 个 RPU。在一个月的大部分时间里，您的工作负载稳定在略微超过 256 个 RPU。
+ 最大容量设置为 512 个 RPU。

假设在三天的时间内，您需要突发的高使用量来生成临时统计报告。在这种情况下，您可以设置最大容量，以避免计算成本超过 512 个 RPU。通过这样做，您可以确保计算容量不会超过这个上限。

### 最大容量的使用说明
<a name="serverless-maximum-setting-how-to"></a>

以下说明可以帮助您正确地设置最大容量：
+ 每个 Amazon Redshift Serverless 可以有不同的最大容量设置。
+ 如果您有一段时间资源使用量会非常高，并且最大容量设置为较低的 RPU 水平，则可能会导致工作负载处理延误和欠佳的用户体验。
+ 配置最大容量设置不会干扰正在运行的查询，即使在 RPU 使用量高时也是如此。它的工作方式不同于使用量限制，后者可以阻止查询的运行。它仅限制工作组可以使用的计算资源。您可以在 Amazon Redshift Serverless 控制面板上查看一段时间内使用的容量。有关查看摘要数据的更多信息，请参阅[使用控制面板检查 Amazon Redshift Serverless 摘要数据](https://docs.aws.amazon.com/redshift/latest/mgmt/serverless-dashboard.html)。
+ 最大容量设置最多可以设置为 5632 个 RPU.

### 如何设置最大容量
<a name="serverless-maximum-rpu-setting-how-to"></a>

您可以在控制台中设置最大容量。对于现有工作组，您可以在**工作组配置**下更改设置。您也可以使用 CLI，使用类似以下示例的命令进行设置：

```
aws redshift-serverless update-workgroup --workgroup-name myworkgroup --max-capacity 512
```

这将为具有指定名称的工作组设定最大容量设置。设置完成后，您可以在控制台上检查值以进行验证。您也可以使用 CLI 运行 `get-workgroup` 命令来检查值。

您可以通过将其设置为 `-1` 来最大容量设置，如下所示：

```
aws redshift-serverless update-workgroup --workgroup-name myworkgroup --max-capacity -1
```

## 监控 Amazon Redshift Serverless 使用量和成本
<a name="serverless-billing-visualizing"></a>

您可以通过多种方法来估计 Amazon Redshift Serverless 的使用情况和计费。系统视图可能会很有用，因为系统元数据（包括查询和使用情况数据）是及时的，并且您无需进行任何设置即可查询到。CloudWatch 还可用于监控 Amazon Redshift Serverless 实例的使用情况，并具有提供洞察和设置操作的附加功能。

### 通过查询系统视图可视化使用情况
<a name="serverless-billing-visualizing-sysview"></a>

查询 SYS\$1SERVERLESS\$1USAGE 系统表以跟踪使用情况并获取查询费用：

```
select trunc(start_time) "Day", 
(sum(charged_seconds)/3600::double 
precision) * <Price for 1 RPU> as cost_incurred 
from sys_serverless_usage 
group by 1 
order by 1
```

 此查询根据使用情况估算 Amazon Redshift Serverless 每天产生的费用。

#### 用于确定使用情况和成本的使用说明
<a name="serverless-billing-visualizing-usage"></a>
+ 您按秒支付以 RPU 小时为单位运行的工作负载，最低收费时间为 60 秒。
+ 来自 sys\$1serverless\$1usage 系统表的记录显示 1 分钟时间间隔产生的成本。了解以下各列很重要：

  charged\$1seconds 列：
  + 提供在时间间隔内计费的计算单位 (RPU) 秒数。结果包括 Amazon Redshift Serverless 中的任何最低收费。
  + 获取有关事务完成后计算资源使用情况的信息。因此，如果事务尚未完成，则此列的值可能为 0。

  compute\$1seconds 列：
  + 提供实时计算使用情况信息。这不包括 Amazon Redshift Serverless 中的任何最低收费。因此，它可能在某种程度上与间隔内计费的收费秒数不同。
  + 显示每个事务期间（即使事务尚未结束）的使用信息，因此提供的数据是实时的。
+  在某些情况下，compute\$1seconds 为 0，但 charged\$1seconds 大于 0，反之亦然。这是由于在系统视图中记录数据的方式而导致的正常行为。为了更准确地表示无服务器使用情况的详细信息，我们建议在 SYS\$1SERVERLESS\$1USAGE 中聚合数据。

 有关监控表和视图的更多信息，请参阅[使用 Amazon Redshift Serverless 监控查询和工作负载](https://docs.aws.amazon.com/redshift/latest/mgmt/serverless-monitoring.html)。

### 使用 CloudWatch 可视化使用情况
<a name="serverless-billing-visualizing-cw"></a>

 您可以使用 CloudWatch 中提供的指标来跟踪使用情况。为 CloudWatch 生成的指标是 `ComputeSeconds` 和 `ComputeCapacity`，前者表示当前分钟内使用的总 RPU 秒数，后者表示该分钟的总计算容量。也可以在 Redshift 控制台上的 Redshift **无服务器控制面板**中找到使用情况指标。有关 CloudWatch 的更多信息，请参阅[什么是 Amazon CloudWatch？](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) 