本文介绍如何创建、恢复、修改以及删除MaxCompute表快照(Snapshot)。
功能简介
表快照(Snapshot)即保留基表(Base Table)在特定时刻的表数据。
表快照可以配置独立的数据过期时间,从表快照创建开始计算,到该设定时间后,系统会自动删除表快照。
表快照为只读,支持从表快照创建(恢复)表,从而修复或恢复表数据。
使用表快照的两大优势:
更长时间的数据备份,便于数据保留与恢复。
表快照的最大保存时间超过当前本地备份功能支持的最大保存时间,可根据需要从指定的时间点保留数据。如果发现新的业务规则或数据更新导致了问题,可以根据表快照将数据恢复到之前正确的版本,避免对业务造成进一步的影响。
最大程度地减少存储费用。
仅存储快照与其基表之间不同的字节,因此表快照使用的存储空间通常小于表的完整副本。
适用范围
支持的表类型
普通表(包括分区/非分区/聚簇表)
PK/Append Delta Table创建表快照(Snapshot)
不支持的表类型
Transaction Table
视图(View)
物化视图(Delta Live MV)
外部表(External Table)
地域及租户限制:表快照(Snapshot)必须与其基表位于同一Region中并且在同一租户下。
表快照(Snapshot)为Read-Only只读状态,除非通过表快照(Snapshot)创建标准表然后更新数据,否则无法更新表快照中的数据。只能更新表快照的元数据MetaData,例如其说明、失效日期和访问权限策略。
生命周期限制:如果对设置了生命周期的分区表Partition Table创建快照,则生命周期不会对快照中的数据生效。
流式写入延迟:Streaming Tunnel写入数据后立即通过Tunnel SDK调用
streamRecordPack.flush后的数据,需要5-10分钟才可以被打入快照。表快照删除后不支持恢复。
作业上限
单表的快照数量上限:1000个。
单项目并发CREATE SNAPSHOT 作业数上限:100个。
单项目每天CREATE SNAPSHOT 作业总数上限:50000个。
单表每天CREATE SNAPSHOT 作业数上限:50个。
创建表快照
命令格式
创建表时可配置数据到期时间,当前若不设置,则表快照将继承该项目配置的数据生命周期(后续会改为不继承,表快照过期时间完全独立)。
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 |
|
使用示例
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仅对表快照中尚未计入任何其他表的数据收费,详细说明如下:
在创建表快照时,不会产生任何表快照存储费用。
如果在创建表快照后,向基表新增数据,不会因该新增数据而产生表快照存储费用。
如果在创建表快照后,在基表中更改或删除数据,此时不对基表中被更新和删除的数据产生存储费用;但是由于这些数据仍保存在快照表中,不会被清除,因此会产生表快照存储费用。
说明在基表中更改或删除的数据,在本地备份时间内仍然可通过本地备份恢复,并且不会产生本地备份费用。
如果有多个表快照包含已更改或已删除的数据,则只需为最大的表快照使用的存储空间付费。