表快照介绍(邀测)

本文介绍如何创建、恢复、修改以及删除MaxCompute表快照(Snapshot Table)。

什么是表快照

  • 表快照(Snapshot Table)即保留基表(Base Table)在特定时刻的表数据。

  • 表快照可以配置独立的数据过期时间,从表快照创建开始计算,到该设定时间后,系统会自动删除表快照。

  • 表快照为只读,支持从表快照创建(恢复)表,从而修复或恢复表数据。

  • 使用表快照的两大优势:

    • 更长时间的数据备份,便于数据保留与恢复。

      表快照的最大保存时间超过当前本地备份功能支持的最大保存时间,可根据需要从指定的时间点保留数据。如果发现新的业务规则或数据更新导致了问题,可以根据表快照将数据恢复到之前正确的版本,避免对业务造成进一步的影响。

    • 最大程度地减少存储费用。

      仅存储快照与其基表之间不同的字节,因此表快照使用的存储空间通常小于表的完整副本。

使用限制

  • 表快照Snapshot必须与其基表位于同一Region中并且在同一租户下。

  • 表快照SnapshotRead-Only只读状态,除非通过快照Snapshot创建标准表然后更新数据,否则您无法更新表快照中的数据。您只能更新表快照的元数据MetaData,例如其说明、失效日期和访问权限政策。

  • Snapshot Table目前只支持普通表,不支持Delta Table。

  • 无法获取视图(View)、物化视图(Delta Live MV)、外部表(External Table)的表快照Snapshot。

  • 创建表快照Snapshot时,无法覆盖现有表Table或表快照。

  • 如果为设置了生命周期时间的分区表Partition Table创建快照,则生命周期时间信息不会保留在快照中。

  • Streaming Tunnel写入数据后立即通过Tunnel SDK调用streamRecordPack.flush后的数据,需要5-10分钟之后才可以被打入快照。

  • 作业上限:

    • 单项目并发表快照作业数上限:100个。

    • 单项目每天的表快照作业总数上限:50000个。

    • 单表每天表快照作业数上限:50个。

    • 单表的快照数量上限:1000个。

  • 表快照删除后不支持恢复。

创建表快照

命令格式

创建表时可配置数据到期时间,当前若不设置,则表快照将继承该项目配置的数据生命周期(后续会改为不继承,表快照过期时间完全独立)。

CREATE [OR REPLACE] SNAPSHOT TABLE [IF NOT EXISTS] <table_snapshot_name>
CLONE <source_table_name>
[OPTIONS(<snapshot_option_list>)]

参数说明

参数

描述

table_snapshot_name

待创建的表快照名字。

source_table_name

基于哪张表创建快照。

snapshot_option_list

  • expiration_timestamp: 过期时间戳,数据类型TIMESTAMP

    说明

    该参数的时间设置必须晚于当前时间。

  • description:表快照描述,数据类型STRING

使用示例

CREATE SNAPSHOT TABLE <table_snapshot_name>
CLONE <source_table_name>
OPTIONS(
  expiration_timestamp=TIMESTAMP "2025-07-01 00:00:00",
  description="A table snapshot that expires in xxx days"
);

从表快照恢复

可以恢复到源表或新增表。

CREATE [ OR REPLACE ] TABLE [ IF NOT EXISTS ] <source_table_name>
CLONE <table_snapshot_name>

修改表快照

仅可修改OPTIONS。

ALTER SNAPSHOT TABLE [IF EXISTS] <snapshot_table_name>
SET OPTIONS(<snapshot_option_list>)

删除表快照

DROP SNAPSHOT TABLE [IF EXISTS] <table_snapshot_name>

权限管控

表快照的操作类似,其权限管控包括创建表快照、从表快照恢复、列出表快照、获取表快照描述、更新表快照元数据、删除表快照、从表快照查询数据。

费用说明

存储费用适用于表快照,但MaxCompute仅对表快照中尚未计入任何其他表的数据收费,详细说明如下:

  • 在创建表快照时,不会产生任何表快照存储费用。

  • 如果在创建表快照后,向基表新增数据,不会因该新增数据而产生表快照存储费用。

  • 如果在创建表快照后,在基表中更改或删除数据,此时不对基表中被更新和删除的数据产生存储费用;但是由于这些数据仍保存在快照表中,不会被清除,因此会产生表快照存储费用。

    说明

    在基表中更改或删除的数据,在本地备份时间内仍然可通过本地备份恢复,并且不会产生本地备份费用。

  • 如果有多个表快照包含已更改或已删除的数据,则您只需为最大的表快照使用的存储空间付费。