摘要

  • Snowflake 的永久表在 Time Travel 保留期结束后,还有不可配置的七天 Fail-safe;这段历史数据继续产生存储费用。
  • 缩短历史窗口、采用 transient 表、删除克隆,处理的是不同的保留原因。旧表名消失以后,计费字节仍可能留在账上。

删除一张表,可以是一项很快完成的工作;让这张表的存储收费结束,得经过另一套流程。Snowflake 为永久表保留七天 Fail-safe,前面还接着客户设定的 Time Travel。表从日常查询里退场,留存数据继续占地方,也继续收费。

这份安排把云采购里一个熟悉的词拆开了:删除。对开发者,它可以表示对象已经移除;对存储账单,接下来还要问历史版本、恢复机制和克隆引用。清理项目若只统计删掉多少个表名,财务拿到的节省承诺可能比实际释放的空间跑得快。

Snowflake 的存储成本说明把活动数据、Time Travel、Fail-safe,以及克隆仍引用的相关存储都列入收费范围。表数据按压缩后的大小计算。收费依据落在保留的字节上,控制台少了一行表名,字节未必同时退场。

用户查不到以后,供应商还留七天

Fail-safe 的规则很明确:七天,不可配置,从 Time Travel 保留期结束后开始。到了这个阶段,客户日常使用的历史查询窗口已经关闭;Snowflake 仍可能通过支持工单恢复数据。

这项恢复采取尽力而为方式,适用于其他恢复路径已经尝试过的严重运行故障,处理时间可能从数小时到数天。恢复操作还会消耗另行计费的无服务器计算资源。把历史数据留着,与后来请供应商把它取回来,各有成本。

客户买到的是一次额外的抢救机会,也要为保留这次机会占用的空间付费。这个取舍在故障发生前就已经进入账单,未必等到有人真的需要恢复数据。

官方历史存储收费表给出了几种不同安排。

表的类型 Time Travel 随后的 Fail-safe
Standard Edition 永久表 0或1天 7天
Enterprise Edition及更高版本的永久表 0至90天 7天
transient 表 0或1天 无
temporary 表 0或1天,删除或会话结束时终止 无

永久表把 Time Travel 设成零,后面的七天仍在。一项长期运行的 Time Travel 查询还会推迟数据进入 Fail-safe,直到查询完成;后台处理也需要完成状态转移。七天描述的是一个保留阶段,实际释放空间还得看流程与引用关系。

把十天改成一天,旧数据先换个抽屉

Time Travel 文档有个很实用的例子:将一张表的保留期从十天降到一天,最近一天的历史继续留在 Time Travel,第二天到第十天的历史则进入 Fail-safe。

客户能够自行查询的窗口变短了,较早的数据开始走下一段恢复流程。把这个动作直接写成“旧数据已清空”,会让节省测算跳过仍然付费的部分。

还有一个更容易在交接时错过的先后顺序。假设表从所属 schema 继承了90天保留期,随后被删除。再把 schema 的保留期降到一天,这张已删除表仍保留原来的90天。官方说明,要改这类对象自身的保留期,需先恢复对象,再修改它。

因此,新的父级政策可以管到还活着的表,已经删除的对象带着旧条件继续走。账户级最低保留期也可能抬高实际生效的天数。只看一个对象参数里的零,无法完整解释它正在执行的政策。

这让表设计成了提前发生的采购决定。到了清理账单那天,某些成本条件已经随之前的删除动作固定下来。

克隆把告别延长了

Snowflake 的存储机制说明解释,零拷贝克隆在建立时共享既有微分区;后续修改会生成各自拥有的新微分区。每个对象随后有自己的生命周期。开发环境里的一个快照,可以继续引用原表不再需要的数据。

TABLE_STORAGE_METRICS把这类情况直接放进计费证据:活动字节、Time Travel 字节、Fail-safe 字节,以及因克隆等引用而保留的字节。最后一类还包括保留表数据的 WORM 备份,不能把它全部当成某个普通克隆。

该视图会继续显示仍有存储费用的已删除表。用同一个名字重新创建表,还可能留下多个版本,各有存储历史。采购人员按表名问“这张表不是删了吗”,工程人员则得找到对应的对象身份及其保留字节,才能把这句话解释到收费层。

统计本身也有更新节奏,Account Usage 视图最多可能延迟90分钟。某些已删除行即使保留在视图里,四类主要字节计数已经全为零,也不会产生存储费。具体账户的尾部费用,需要它实际保留的压缩字节、有效保留期和适用单价才能计算。

便宜的表,抢救路线也短

transient 表没有 Fail-safe,Time Travel 最多一天。这里的一天限制针对额外的历史保护。表只要还存在,活动数据就继续占用、继续收费;一张留了数周的 transient 表,可以有数周的活动存储账单。

这种安排适合能够重新生成的工作数据。代价则在出错时显现:Time Travel 到期以后,Snowflake 没有 Fail-safe 这条路线替它恢复。重建需要的时间、计算资源以及业务停顿,都要进入同一笔经济账。难以重建的数据,保留保护可能更划算。

temporary 表还受会话生命周期约束。会话结束或表被删除,历史保留随之结束;断开连接本身不会终止会话。一个关掉客户端的动作,未必完成了客户以为已经完成的清理。

Snowflake 提供了几种真实可用的成本选择。它们分别改变恢复窗口、表的寿命和引用关系。最终应付的存储降下来,要等保留字节退场;删除命令先办完自己的手续。