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。
将数据从永久表迁移到临时表¶
将数据从永久表迁移到临时表涉及执行以下任务:
使用 CREATE TABLE ...AS SELECT 可创建临时表并使用原始永久表中的数据填充临时表。
将在原始表中授予的所有访问控制权限应用于新表。有关访问控制的更多信息,请参阅 访问控制概述。
使用 DROP TABLE 删除原始表。
(可选)使用 ALTER TABLE 重命名新表以匹配原始表。