Amazon Redshift Serverless 的计费
了解 Amazon Redshift Serverless 计费
计算容量的计费
基本容量及其对计费的影响
当查询运行时,系统将根据给定持续时间内使用的容量(以 RPU 小时为单位)按秒对您进行收费。如果没有任何查询在运行,则您不需要为计算容量付费。您还需要根据存储的数据量为 Redshift 托管式存储付费。您可以在创建工作组时设置 Base capacity(基本容量)。您可以调高或调低现有工作组的基本容量,以满足工作组级别的工作负载的性价比要求。随着查询数量增加,Amazon Redshift Serverless 会自动扩缩以提供一致的性能。您可以使用控制台更改基本容量,方法是从 Workgroup configuration(工作组配置)中选择工作组,然后选择 Limits(限制)选项卡。
最大 RPU 小时数
为了使 Amazon Redshift Serverless 的成本保持可预测,您可以设置每天、每周或每月使用的 Maximum RPU hours(最大 RPU 小时数)。您可以使用控制台或 API 来设置该值。达到限制后,您可以指定将日志条目写入系统表,或者接收告警,或者关闭用户查询。设置最大 RPU 小时数有助于控制成本。对于访问数据仓库中数据的查询和访问外部数据的查询(例如 Amazon S3 中的外部表),有关最大 RPU 小时数的设置适用于您的工作组。
为工作组设置最大 RPU 小时数不会限制性能。您可以随时对此设置进行调整,而不会中断查询处理。
设置基本容量和最大 RPU 小时数可以帮助您满足性价比要求,同时保持成本可预测。有关基本容量设置的更多信息,请参阅了解 Amazon Redshift Serverless 容量。有关无服务器计费的更多信息,请参阅 Amazon Redshift 定价
保持 Amazon Redshift Serverless 成本可预测的另一种方法是使用 Amazon 成本异常检测
说明计算成本计费方案
长期运行的任务
以下是一个示例场景,用于说明目的,不考虑最低计费要求:您在美国东部(弗吉尼亚北部)区域的 Amazon Redshift 数据仓库上,在上午 7:00 至晚上 7:00 之间每小时运行一次数据处理任务。假设每次任务运行时,需要 10 分 30 秒钟才能完成,这不会改变。并且假设在任务期间,Amazon Redshift 以 128 个 RPU 容量运行。以下结果显示了当天的总使用量和成本:
查询持续时间 - 任务在上午 7:00 至下午 7:00 之间运行 13 次,每次运行需要 10 分 30 秒。这加起来长达 8190 秒。
使用的容量 - 128 个 RPU
每日收费:109.20 美元((8190 秒 x 128 RPU * 该区域每 RPU 小时 0.375 美元)/一小时 3600 秒)
有关最新的定价信息,请参阅 Amazon Redshift 定价
监控使用情况和成本
您可以通过多种方法来估计 Amazon Redshift Serverless 的使用情况和计费。系统视图可能会很有用,因为系统元数据(包括查询和使用情况数据)是及时的,并且您无需进行任何设置即可查询到。CloudWatch 还可用于监控 Amazon Redshift Serverless 实例的使用情况,并具有提供洞察和设置操作的附加功能。
通过查询系统视图可视化使用情况
您可以查询 sys_serverless_usage 系统表以跟踪使用情况。查询它以检索处理查询的持续时间的近似值:
select trunc(start_time) "Day", sum(compute_seconds)/60/60 * <Price for 1 RPU> from sys_serverless_usage group by trunc(start_time) order by 1
此查询概略估算 Amazon Redshift Serverless 每天产生的成本。Amazon Redshift Serverless 向 Amazon 账单报告的方式、聚合频率的差异和舍入等变化可能会影响账单。它可能与来自 sys_serverless_usage 的结果略有不同。此外,sys_serverless_usage 几乎实时显示您的使用情况。账单报告是在查询完成后创建的。sys_serverless_usage 中记录的使用情况可能未反映在账单报告中。因此,sys_serverless_usage 中的信息应该用于概略估算您的月末账单。它并不完全相符。有关监控表和视图的更多信息,请参阅使用 Amazon Redshift Serverless 监控查询和工作负载。
使用 CloudWatch 可视化使用情况
您可以使用 CloudWatch 中提供的指标来跟踪使用情况。为 CloudWatch 生成的指标是 ComputeSeconds 和 ComputeCapacity,前者表示当前分钟内使用的总 RPU 秒数,后者表示该分钟的总计算容量。也可以在 Redshift 控制台上的 Redshift Serverless dashboard(无服务器控制面板)中找到使用情况指标。有关 CloudWatch 的更多信息,请参阅什么是 Amazon CloudWatch?
对存储计费
主存储容量按 Redshift 托管式存储 (RMS) 计费。存储按 GB/月计费。存储计费与计算资源的计费是分开的。用于用户快照的存储按标准备份账单费率计费,具体取决于使用套餐。
数据传输成本和机器学习 (ML) 成本单独计费,与预置集群适用相同的费率。跨 Amazon 区域的快照复制和数据共享按定价页面上列出的传输费率计费。有关更多信息,请参阅 Amazon Redshift 定价
使用 CloudWatch 可视化使用情况计费
将生成指标 SnapshotStorage(用于跟踪快照存储使用情况)并发送到 CloudWatch。有关 CloudWatch 的更多信息,请参阅什么是 Amazon CloudWatch?
Amazon Redshift Serverless 免费试用
Amazon Redshift Serverless 提供免费试用。如果您参加免费试用,则可以在 Redshift 控制台中查看免费试用积分余额,然后在 SYS_SERVERLESS_USAGE 系统视图中检查免费试用使用情况。请注意,免费试用的账单详细信息不会显示在账单控制台中。免费试用结束后,您只能在账单控制台中查看使用情况。
账单使用注释
记录使用情况 - 查询或事务仅在事务完成、回滚或停止后才计量和记录。例如,如果事务运行两天,则在此事务完成后记录 RPU 使用情况。您可以通过查询
sys_serverless_usage来实时监控正在进行的使用情况。事务记录可能反映为 RPU 使用情况变化,并影响特定小时数和每日使用情况的成本。编写显式事务 - 作为结束事务的最佳实践,这一点很重要。如果您没有结束或回滚未结事务,Amazon Redshift Serverless 将继续使用 RPU。例如,如果您编写一个显式
BEGIN TRAN,务必具有相应的COMMIT和ROLLBACK语句。已取消的查询 - 如果您运行了查询并在查询结束之前将其取消,您仍需要按查询运行时间付费。
扩缩 - Amazon Redshift Serverless 实例可以启动扩缩以处理较高负载时段,从而保持一致的性能。您的 Amazon Redshift Serverless 账单同时包括以相同 RPU 费率计算的基本计算和扩展容量。
缩减 - Amazon Redshift Serverless 从其基本 RPU 容量纵向扩展以处理负载较高的时期。在某些情况下,在查询负载下降后的一段时间内,RPU 容量可以保持在较高的设置。我们建议您在控制台中设置最大 RPU 小时数,以防止出现意外的成本。有关更多信息,请参阅 Amazon Redshift Serverless 的账单。
系统表 - 查询系统表时,会对查询时间进行计费。
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 小时),然后超时。可以为特定用户显式更改此超时设置,例如您希望为长时间运行的查询保持会话打开时。主题 CREATE USER 显示了如何为用户调整 SESSION TIMEOUT。
在大多数情况下,我们建议您不要延长 SESSION TIMEOUT 值,除非您的用例特别需要。如果会话保持空闲状态并且存在未结交易,则可能会导致在会话关闭之前使用 RPU 的情况。这将导致不必要的成本。
Amazon Redshift Serverless 在查询发生超时之前,运行查询的最长时间为四小时。此外,空闲交易的最大值为 6 小时,然后发生超时。有关更多信息,请参阅Amazon Redshift Serverless 对象的配额。