VACUUM - Amazon Athena

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

VACUUM

VACUUM 陳述式會透過執行快照過期孤立檔案移除,對 Apache Iceberg 資料表執行資料表維護。

注意

VACUUM 是交易型的並且僅由 Athena 引擎版本 3 中的 Apache Iceberg 資料表支援。

VACUUM 陳述式透過減少儲存體耗用來最佳化 Iceberg 資料表。如需有關使用 VACUUM 的詳細資訊,請參閱 最佳化 Iceberg 資料表。請注意,由於 VACUUM 陳述式會對 Amazon S3 進行 API 呼叫,向 Amazon S3 發出相關請求需支付費用。

警告

如果您執行快照過期操作,則無法再回溯至過期的快照。

概要

若要移除 Iceberg 資料表中不再需要的資料檔案,請使用下列語法。

VACUUM [database_name.]target_table
  • VACUUM 預期 Iceberg 資料位於 Amazon S3 資料夾,而不是 Amazon S3 儲存貯體中。例如,如果您的 Iceberg 資料位於 s3://amzn-s3-demo-bucket/ 而非 s3://amzn-s3-demo-bucket/myicebergfolder/,則VACUUM陳述式會失敗,並顯示錯誤訊息 GENERIC_INTERNAL_ERROR:檔案系統位置中缺少路徑:s3://amzn-s3-demo-bucket

  • 若要讓 VACUUM 能夠刪除資料檔案,您的查詢執行角色必須具有 Iceberg 資料表、中繼資料、快照和資料檔案所在儲存貯體的s3:DeleteObject許可。如果許可不存在,VACUUM查詢將會成功,但檔案不會刪除。

  • 若要VACUUM在名稱開頭為底線的資料表上執行 (例如 _mytable),請將資料表名稱括在反引號中,如下列範例所示。如果您使用資料庫名稱在資料表名稱前面,請不要將資料庫名稱括在反引號中。請注意,雙引號無法取代反引號。

    此行為對於 而言特別VACUUM。對於以底線開頭的資料表名稱, CREATEINSERT 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 資料表