本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
VACUUM
VACUUM
陳述式會執行快照到期
注意
VACUUM
是交易型的並且僅由 Athena 引擎版本 3 中的 Apache Iceberg 資料表支援。
該VACUUM
聲明通過減少存儲消耗優化冰山表。如需有關使用 VACUUM
的詳細資訊,請參閱 優化冰山表。請注意,由於VACUUM
陳述式會API呼叫 Amazon S3,因此對 Amazon S3 的相關請求會收取費用。
警告
如果您執行快照過期操作,則無法再回溯至過期的快照。
概要
若要移除 Iceberg 資料表中不再需要的資料檔案,請使用下列語法。
VACUUM [database_name
.]target_table
-
VACUUM
希望冰山數據位於 Amazon S3 文件夾中,而不是在 Amazon S3 存儲桶中。例如,如果您的 Iceberg 資料位於s3://amzn-s3-demo-bucket
/,VACUUM
陳述式會失敗s3://amzn-s3-demo-bucket/myicebergfolder/
,並顯示檔案系統位置中遺失的錯誤訊息 GENERIC INTERNAL _ _ERROR:
。s3://amzn-s3-demo-bucket
路徑 -
為了能
VACUUM
夠刪除資料檔案,您的查詢執行角色必須擁有 Iceberg 資料表、中繼資料、快照和資料檔案所在值區的s3:DeleteObject
權限。如果權限不存在,VACUUM
查詢將成功,但不會刪除檔案。 -
若要在名稱開頭為底線 (例如,
_mytable
) 的資料表VACUUM
上執行,請將資料表名稱括在反引號中,如下列範例所示。如果您在資料表名稱前面加上資料庫名稱,請勿將資料庫名稱括在反引號中。請注意,雙引號將無法代替反引號。這種行為是特有的
VACUUM
。對於以底線開頭的資料表名稱,CREATE
和INSERT INTO
陳述式不需要反引號。VACUUM `_mytable` VACUUM my_database.`_mytable`
執行的作業
VACUUM
執行以下操作:
-
移除早於
vacuum_max_snapshot_age_seconds
資料表屬性指定之時間的快照。依預設,此屬性已設為 432000 秒 (5 天)。 -
移除不在保留期間內且超過
vacuum_min_snapshots_to_keep
資料表屬性所指定數目的快照。預設為 1。您可以在
CREATE TABLE
陳述式中指定這些資料表屬性。建立資料表之後,您就可以使用 ALTER TABLE SET TBLPROPERTIES 陳述式來進行更新。 -
移除任何因為快照移除而無法取得的中繼資料和資料檔案。您可以設定
vacuum_max_metadata_files_to_keep
資料表屬性,進而設定要保留的舊中繼資料檔案數目。預設值為 100. -
移除早於
vacuum_max_snapshot_age_seconds
資料表屬性中指定之時間的孤立檔案。孤立檔案是資料表的資料目錄中不屬於資料表狀態的檔案。
如需有關在 Athena 中建立和管理 Apache Iceberg 資料表的詳細資訊,則請參閱 建立 Iceberg 資料表 和 管理 Iceberg 資料表。