Time Travel 和故障安全的存储成本

在 Time Travel 和故障安全期间维护历史数据会产生存储费用。

本主题内容:

存储使用和费用

自数据更改之日起,每 24 小时(即 1 天)计算费用。历史数据的维护天数取决于表类型和表的 Time Travel 保留期。

此外,Snowflake 仅维护恢复已更新或删除的各个表行所需的信息,从而更大限度地减少历史数据所需的存储空间。因此,存储使用量按已更改表的百分比计算。仅当删除或截断表时才会维护表的完整副本。

临时表和瞬态表

为了帮助管理与 Time Travel 和故障安全相关的存储成本,Snowflake 提供了两种表类型:临时表和瞬态表,它们产生的费用与标准(即永久)表不同:

  • 瞬态表的 Time Travel 保留期可以为 0 天或 1 天。

  • 临时表的 Time Travel 保留期也可以为 0 或 1 天;但是,一旦表被删除或创建表的会话结束,此保留期就会结束。

  • 瞬态表和临时表没有故障安全期。

因此,这些类型的表因 Time Travel 和故障安全而产生更多额外费用的时间仅限于 1 天。下表根据表类型说明了不同的场景:

表类型

Time Travel 保留期(天)

故障安全期(天)

维护历史数据的下限和上限时间(天)

永久

0 或 1(适用于 Snowflake Standard Edition)

7

7、8

0 到 90(适用于 Snowflake Enterprise Edition)

7

7、97

瞬态

0 或 1

0

0、1

临时

0 或 1

0

0、1

使用临时表和瞬态表管理存储成本的注意事项

选择是否将数据存储在永久表、临时表或瞬态表中时,请考虑以下事项:

  • 当创建临时表的会话结束时,将删除临时表。临时表中存储的数据在删除表后 无法 恢复。

  • Snowflake 不能 在 Time Travel 保留期结束后恢复瞬态表中的历史数据。瞬态表 用于不依赖 Snowflake 即可复制或再现的数据。

  • 长期存在的表(例如事实表)应该 始终 定义为永久表以确保它们受到故障安全的充分保护。

  • 短期表(即短于 1 天),例如 ETL 工作表,可以定义为瞬态表以削减故障安全成本。

  • 如果停机时间和重新加载丢失数据所需的时间也是因素,则永久表即使增加了故障安全成本,也可能提供比临时表更好的整体解决方案。

备注

表的默认类型为永久表。要将表定义为临时表或瞬态表,必须在创建表时显式指定类型:

CREATE [ OR REPLACE ] [ TEMPORARY | TRANSIENT ] TABLE <name> ...

有关更多信息,请参阅 CREATE TABLE

将数据从永久表迁移到临时表

将数据从永久表迁移到临时表涉及执行以下任务:

  1. 使用 CREATE TABLE ...AS SELECT 可创建临时表并使用原始永久表中的数据填充临时表。

  2. 将在原始表中授予的所有访问控制权限应用于新表。有关访问控制的更多信息,请参阅 访问控制概述

  3. 使用 DROP TABLE 删除原始表。

  4. (可选)使用 ALTER TABLE 重命名新表以匹配原始表。

语言: 中文