了解动态表的成本

本主题概述了与动态表相关的计算和存储成本。有关 Snowflake 成本的一般信息,请参阅 了解总体费用

计算成本

有两种计算成本与动态表相关:虚拟仓库和云服务计算。

动态表需要 虚拟仓库 进行刷新,即在初始化和刷新(包括计划刷新和手动刷新)基本对象时,对基本对象运行查询。这些操作使用计算资源,而计算资源会消耗 Credit

动态表还需要 云服务计算,以识别底层基本对象的变化以及是否需要调用虚拟仓库。如果未发现任何更改,则不会消耗虚拟仓库 Credit,因为没有新数据可以刷新。请注意,在部分情况下,动态表查询中可能会过滤掉基本对象的更改。在此类情景中会消耗虚拟仓库 Credit,因为动态表会刷新以确定更改是否适用。

如果关联的虚拟仓库已暂停且未发现基本对象存在更改,则不会调用已暂停的虚拟仓库,也不会消耗任何 Credit。反之,如果发现了更改,虚拟仓库将自动恢复以处理更新。

动态表刷新由所配置的 目标延迟 驱动。目标延迟较低的动态表管道刷新频率更高,因此产生的计算成本更高。

您可以使用 Snowsight 中的 Refresh History 选项卡,检查是否已使用虚拟仓库 Credit:

  1. 在导航菜单中,选择 Monitoring » Dynamic Tables

  2. 选择您的动态表并转到 Refresh History 选项卡。选中 Warehouse used only 复选框,以查看使用仓库进行更新的刷新。

小技巧

为了清晰了解与动态表管道相关的成本,Snowflake 建议使用专用仓库测试动态表,以便可以隔离归因于动态表的虚拟仓库使用。在建立成本基准后,您可以将动态表移动至共享仓库。

存储成本

动态表需要存储空间来存储物化的结果。与常规表类似,Time Travel、故障安全存储和克隆功能可能会产生额外的存储成本。

本节讨论动态表的以下存储考虑事项:

有关此存储如何产生成本的详细信息,请参阅 了解存储成本数据存储注意事项

Time Travel 和故障安全存储

Snowflake Time Travel 使您能访问和查询动态表的特定时间点历史版本,这有助于深入了解数据中的历史趋势、变化和异常。请注意,频繁刷新会增加 Time Travel 数据的积累,从而增加总体存储使用量。有关更多信息,请参阅 了解和使用 Time Travel

故障安全功能有助于保护动态表,避免数据丢失或损坏。根据所配置的故障安全期,您可能要支付额外的存储费用。

动态表的复制

动态表支持跨账户、跨区域复制,这使您可以将数据从主数据库复制到辅助数据库,以便进行灾难恢复或数据共享。它既可以用作灾难恢复的故障转移准备策略,也可以用作各只读部署的共享数据方式。使用动态表进行复制会产生 复制成本。有关更多信息,请参阅 复制和动态表

暂停的动态表

暂停的动态表不会产生标准存储费以外的额外费用,也不会消耗计算资源。如果有正在进行的维护任务或计划任务与暂停的表进行交互,则可能会消耗计算资源。

瞬态动态表

Snowflake 支持 瞬态 动态表,与常规表类似,这些表会一直保留到显式删除为止,并且可供具有适当权限的所有用户使用,没有故障安全期。瞬态动态表最适合存储瞬态数据,即不需要永久表所提供的相同级别的数据保护和恢复的数据,这有助于节省故障安全存储的存储费用。

用于增量刷新操作的额外存储

对于增量刷新操作,动态表会维护一个额外的内部元数据列,用于标识表中的每一行。内部行标识符每行都会消耗恒定的存储量,并且存储成本按表中的行数线性增加(与列数无关)。对于列很少的表,与同等 CTAS 表相比,存储空间可能会增加很多,甚至占据主导地位。在较宽的动态表中,这种效果不会那么明显。

刷新计划成本

动态表刷新(无论是 完整刷新还是增量刷新)的计划会影响其总成本。本节讨论了在确定刷新计划时要考虑的因素(假设每次刷新都不是空的):

备注

如果来源没有改变,刷新的成本相对较低。有关更多信息,请参阅 计算成本 (本主题内容)。

完整刷新计划

完整刷新的成本通常取决于扫描的数据和刷新频率。为了节省成本,您可以仅在需要时刷新动态表,例如,在工作时间以外暂停动态表。要精确控制时间,请使用 ALTER DYNAMIC TABLE 命令,为动态表设置 下游目标延迟,并使用 任务 实现自定义计划的自动化。

增量刷新计划

增量刷新的成本通常与源对象的更改量成正比,外加一些固定开销。

如果开销较低,可以设置较高的刷新频率,而不会造成太多不利影响。这意味着,您可以经常刷新以获得更好的结果。例如,一个简单的 SELECT ... FROM ... WHERE 动态表仅处理在两次刷新之间发生更改的行,这可以将开销控制在最低限度,并且可以在额外成本较低的情况下频繁运行。

如果开销较高,则必须在高刷新频率的 Credit 消耗和新鲜度带来的业务收益之间找到平衡。例如,在有联接的动态表中,一个表中的更改必须与另一个表联接。无论改动的幅度有多小,这种联接通常仍会有无法避免的最低限度执行成本。如果此开销很高,则成本会随着刷新频率的增加而累积。

语言: 中文