Amazon Redshift Serverless 的计费 - Amazon Redshift

Amazon Redshift Serverless 的计费

以下各节详细介绍了 Amazon Redshift Serverless 的计费方式。有关定价信息,请参阅 Amazon Redshift 定价

计算容量的计费

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

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

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

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

最大 RPU 小时数使用限制

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

以下是 示例:

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

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

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

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

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

保持 Amazon Redshift Serverless 成本可预测的另一种方法是使用 AWS 成本异常检测,以减少账单出现意外情况的可能性并提供更多控制权。

注意

Amazon Redshift 定价计算器有助于估算价格。您输入所需的计算资源,该计算器将提供成本预览。

设置最大容量以控制计算资源的成本

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

最大容量与 RPU 小时使用量限制的不同之处

最大 RPU 小时数限制和最大容量设置的目的都是为了控制成本。但是它们通过不同的方式来实现这个目标。以下要点解释了其中的区别:

  • 最大容量 – 此设置确定了 Amazon Redshift Serverless 在扩展中使用最大 RPU 数量。当需要自动扩展计算容量时,设置更高的最大容量值可以提高查询吞吐量。达到最大容量限制时,工作组就不会进一步纵向扩展资源规模。

  • 最大 RPU 小时数使用限制 – 与最大容量不同,此设置不设置容量上限。但它会执行其他操作来帮助您限制成本。这包括在日志中添加条目、通知您或停止运行查询(视您的选择而定)。

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

最大容量使用案例

每个工作组可以有不同的最大容量设置。它可以帮助您强制实施预算要求。为了说明其工作原理,假设以下案例:

  • 您有一个工作组,基本容量设置为 256 个 RPU。在一个月的大部分时间里,您的工作负载稳定在略微超过 256 个 RPU。

  • 最大容量设置为 512 个 RPU。

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

最大容量的使用说明

以下说明可以帮助您正确地设置最大容量:

  • 每个 Amazon Redshift Serverless 可以有不同的最大容量设置。

  • 如果您有一段时间资源使用量会非常高,并且最大容量设置为较低的 RPU 水平,则可能会导致工作负载处理延误和欠佳的用户体验。

  • 配置最大容量设置不会干扰正在运行的查询,即使在 RPU 使用量高时也是如此。它的工作方式不同于使用量限制,后者可以阻止查询的运行。它仅限制工作组可以使用的计算资源。您可以在 Amazon Redshift Serverless 控制面板上查看一段时间内使用的容量。有关查看摘要数据的更多信息,请参阅使用控制面板检查 Amazon Redshift Serverless 摘要数据

  • 最大容量设置最多可以设置为 5632 个 RPU.

如何设置最大容量

您可以在控制台中设置最大容量。对于现有工作组,您可以在工作组配置下更改设置。您也可以使用 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 使用量和成本

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

通过查询系统视图可视化使用情况

查询 SYS_SERVERLESS_USAGE 系统表以跟踪使用情况并获取查询费用:

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 每天产生的费用。

用于确定使用情况和成本的使用说明
  • 您按秒支付以 RPU 小时为单位运行的工作负载,最低收费时间为 60 秒。

  • 来自 sys_serverless_usage 系统表的记录显示 1 分钟时间间隔产生的成本。了解以下各列很重要:

    charged_seconds 列:

    • 提供在时间间隔内计费的计算单位 (RPU) 秒数。结果包括 Amazon Redshift Serverless 中的任何最低收费。

    • 获取有关事务完成后计算资源使用情况的信息。因此,如果事务尚未完成,则此列的值可能为 0。

    compute_seconds 列:

    • 提供实时计算使用情况信息。这不包括 Amazon Redshift Serverless 中的任何最低收费。因此,它可能在某种程度上与间隔内计费的收费秒数不同。

    • 显示每个事务期间(即使事务尚未结束)的使用信息,因此提供的数据是实时的。

  • 在某些情况下,compute_seconds 为 0,但 charged_seconds 大于 0,反之亦然。这是由于在系统视图中记录数据的方式而导致的正常行为。为了更准确地表示无服务器使用情况的详细信息,我们建议在 SYS_SERVERLESS_USAGE 中聚合数据。

有关监控表和视图的更多信息,请参阅使用 Amazon Redshift Serverless 监控查询和工作负载

使用 CloudWatch 可视化使用情况

您可以使用 CloudWatch 中提供的指标来跟踪使用情况。为 CloudWatch 生成的指标是 ComputeSecondsComputeCapacity,前者表示当前分钟内使用的总 RPU 秒数,后者表示该分钟的总计算容量。也可以在 Redshift 控制台上的 Redshift 无服务器控制面板中找到使用情况指标。有关 CloudWatch 的更多信息,请参阅什么是 Amazon CloudWatch?

对存储计费

主存储容量按 Redshift 托管式存储 (RMS) 计费。存储按 GB/月计费。存储计费与计算容量的计费是分开的。用于用户快照的存储按标准备份账单费率计费,具体取决于使用套餐。

数据传输成本和机器学习 (ML) 成本单独计费,与预置集群适用相同的费率。跨 AWS 区域的快照复制和数据共享按定价页面上列出的传输费率计费。有关更多信息,请参阅 Amazon Redshift 定价

使用 CloudWatch 可视化使用情况计费

将生成指标 SnapshotStorage(用于跟踪快照存储使用情况)并发送到 CloudWatch。有关 CloudWatch 的更多信息,请参阅什么是 Amazon CloudWatch?

使用 Amazon Redshift Serverless 免费试用版

Amazon Redshift Serverless 提供免费试用。如果您参加免费试用,则可以在 Redshift 控制台中查看免费试用积分余额,然后在 SYS_SERVERLESS_USAGE 系统视图中检查免费试用使用情况。请注意,免费试用的账单详细信息不会显示在账单控制台中。免费试用结束后,您只能在账单控制台中查看使用情况。有关 Amazon Redshift Serverless 免费试用版的更多信息,请参阅 Amazon Redshift Serverless 免费试用

账单使用注释

  • 记录使用情况 - 查询或事务仅在事务完成、回滚或停止后才计量和记录。例如,如果事务运行两天,则在此事务完成后记录 RPU 使用情况。您可以通过查询 sys_serverless_usage 来实时监控正在进行的使用情况。事务记录可能反映为 RPU 使用情况变化,并影响特定小时数和每日使用情况的成本。

  • 编写显式事务 - 作为结束事务的最佳实践,这一点很重要。如果您没有结束或回滚未结事务,Amazon Redshift Serverless 将继续使用 RPU。例如,如果您编写一个显式 BEGIN TRAN,务必具有相应的 COMMITROLLBACK 语句。

  • 已取消的查询 - 如果您运行了查询并在查询结束之前将其取消,您仍需要按查询运行时间付费。

  • 扩缩 - Amazon Redshift Serverless 实例可以启动扩缩以处理较高负载时段,从而保持一致的性能。您的 Amazon Redshift Serverless 账单同时包括以相同 RPU 费率计算的基本计算和扩展容量。

  • 缩减 - Amazon Redshift Serverless 从其基本 RPU 容量纵向扩展以处理负载较高的时期。在某些情况下,在查询负载下降后的一段时间内,RPU 容量可以保持在较高的设置。我们建议您在控制台中设置最大 RPU 小时数,以防止出现意外的成本。

  • 系统表 - 查询系统表时,会对查询时间进行计费。

  • Redshift Spectrum - 当您拥有 Amazon Redshift Serverless 并运行查询时,不对数据湖查询单独收费。对于针对 Amazon S3 中存储的数据进行的查询,按事务时间计算,费用与针对本地数据进行的查询相同。

  • 联合查询 - 联合查询按特定时间间隔内使用的 RPU 付费,与针对数据仓库或数据湖的查询相同。

  • 存储 - 存储单独收费,按 GB/月计费。

  • 最低收费 – 计算资源的使用最低收取 60 秒的费用,按秒计费。

  • 快照计费 - 快照计费不变。它根据存储空间收费,按每月 GB 的费率计费。您可以按 30 分钟的粒度将数据仓库还原到过去 24 小时内的特定点,无需付费。有关更多信息,请参阅 Amazon Redshift 定价

Amazon Redshift Serverless 保持账单可预测性的最佳实践

以下是最佳实践和内置设置,可帮助您保持账单一致性。

  • 确保结束每个事务。当您使用 BEGIN 开始交易时,务必也要使用 END 结束交易。

  • 使用最佳实践错误处理来从容地响应错误并结束每个事务。尽量减少未结交易有助于避免不必要地使用 RPU。

  • 使用 SESSION TIMEOUT 帮助结束未结事务和空闲会话。它会导致任何保持闲置状态或非活动状态的时间已超过 3600 秒(1 小时)的会话超时。它会导致任何保持打开状态和非活动状态的时间已超过 21600 秒(6 小时)的事务超时。可以为特定用户显式更改此超时设置,例如您希望为长时间运行的查询保持会话打开时。主题 CREATE USER 显示了如何为用户调整 SESSION TIMEOUT

    • 在大多数情况下,我们建议您不要延长 SESSION TIMEOUT 值,除非您的用例特别需要。如果会话保持空闲状态并且存在未结交易,则可能会导致在会话关闭之前使用 RPU 的情况。这将导致不必要的成本。

    • Amazon Redshift Serverless 运行查询的最长时间为 86,399 秒(24 小时)。在 Amazon Redshift Serverless 结束与事务关联的会话之前,未结事务的最长不活动时间是六小时。有关更多信息,请参阅 Amazon Redshift Serverless 对象的配额