本文介紹如何建立、恢複、修改以及刪除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僅對錶快照中尚未計入任何其他表的資料收費,詳細說明如下:
在建立錶快照時,不會產生任何錶快照儲存費用。
如果在建立錶快照後,向基表新增資料,不會因該新增資料而產生錶快照儲存費用。
如果在建立錶快照後,在基表中更改或刪除資料,此時不對基表中被更新和刪除的資料產生儲存費用;但是由於這些資料仍儲存在快照表中,不會被清除,因此會產生錶快照儲存費用。
說明在基表中更改或刪除的資料,在本地備份時間內仍然可通過本地備份恢複,並且不會產生本地備份費用。
如果有多個錶快照包含已更改或已刪除的資料,則只需為最大的錶快照使用的儲存空間付費。