資料表的維護 - Amazon Simple Storage Service

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

資料表的維護

S3 Tables 提供維護操作,以增強個別資料表的管理和效能。預設會針對資料表儲存貯體中的所有資料表啟用下列選項。您可以透過指定 S3 資料表的維護組態檔案來編輯或停用這些檔案。

編輯此組態需要 s3tables:GetTableMaintenanceConfigurations3tables:PutTableMaintenanceConfiguration 許可。

壓縮

壓縮是在資料表層級設定,並將多個較小的物件合併為較少、較大的物件,以改善Apache Iceberg查詢效能。合併物件時,壓縮也會套用資料表中資料列層級刪除的效果。

預設會為所有資料表啟用壓縮,預設目標檔案大小為 512MB,或您指定的自訂值介於 64MB 到 512MB 之間。系統會將經壓縮的檔案寫入為資料表的最新快照。

壓縮策略

您可以選擇多個壓縮策略,根據您的查詢模式和資料表排序順序,進一步提高查詢效能。

S3 Tables 支援這些資料表的壓縮策略:

  • Auto (預設)

    • Amazon S3 會根據資料表排序順序選取最佳壓縮策略。這是所有資料表的預設壓縮策略。

    • 對於中繼資料中具有定義排序順序的資料表, auto 會自動套用sort壓縮。

    • 對於沒有排序順序的資料表, auto 會預設為使用binpack壓縮。

  • Binpack

    • 將小型檔案合併為較大的檔案,通常以大小超過 100MB 為目標,同時套用任何待定的刪除。這是未排序資料表的預設壓縮策略。

  • 排序

    • 根據在壓縮期間依階層自動排序的指定資料欄組織資料,改善篩選操作的查詢效能。當您的查詢經常篩選特定資料欄時,建議使用此策略。當您使用此策略時,S3 Tables 會在資料表屬性中定義 sort_order 時,自動對資料欄套用階層排序。

  • Z 順序

    • 透過將多個屬性混合到可用於排序的單一純量值來最佳化資料組織,從而實現跨多個維度的有效查詢。當您需要同時查詢多個維度的資料時,建議使用此策略。此策略要求您使用資料表屬性在 Iceberg sort_order資料表屬性中定義排序順序。

壓縮會產生額外費用。如需詳細資訊,請參閱 Amazon S3 定價中的定價資訊。

壓縮範例

下列範例顯示資料表壓縮的組態。

使用 設定壓縮目標檔案大小 AWS CLI

目標壓縮檔案大小下限為 64MB;上限為 512MB。

下列範例會使用 PutTableMaintenanceConfiguration API,將目標檔案大小變更為 256 MB。

aws s3tables put-table-maintenance-configuration \ --table-bucket-arn arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-bucket1 \ --type icebergCompaction \ --namespace mynamespace \ --name testtable \ --value='{"status":"enabled","settings":{"icebergCompaction":{"targetFileSizeMB":256}}}'

如需詳細資訊,請參閱 AWS CLI 命令參考中的 put-table-maintenance-configuration

使用 設定壓縮策略 AWS CLI

下列範例會將壓縮策略變更為sort使用 PutTableMaintenanceConfiguration API。設定壓縮時,您可以從下列壓縮策略中選擇:autobinpacksortz-order

注意

若要將壓縮策略設定為 sortz-order您需要下列先決條件:

  • Iceberg 資料表屬性中定義的排序順序。

  • s3tables:GetTableData 許可。

aws s3tables put-table-maintenance-configuration \ --table-bucket-arn arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket \ --type icebergCompaction \ --namespace mynamespace \ --name testtable \ --value='{"status":"enabled","settings":{"icebergCompaction":{"strategy":"sort"}}}'

如需詳細資訊,請參閱 AWS CLI 命令參考中的 put-table-maintenance-configuration

使用 停用壓縮 AWS CLI

下列範例將使用 PutTableMaintenanceConfiguration API 停用壓縮。

aws s3tables put-table-maintenance-configuration \ --table-bucket-arn arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket \ --type icebergCompaction \ --namespace mynamespace \ --name testtable \ --value='{"status":"disabled","settings":{"icebergCompaction":{"targetFileSizeMB":256}}}'

如需詳細資訊,請參閱 AWS CLI 命令參考中的 put-table-maintenance-configuration

快照管理

快照管理會決定資料表的作用中快照數量。這是以 MinimumSnapshots (預設為 1) 和 MaximumSnapshotAge (預設為 120 小時) 為基礎。快照管理會根據這些組態將資料表快照過期並加以移除。

當快照過期時,Amazon S3 會將僅由該快照參考的任何物件標記為非最新物件。這些非最新物件會在未參考檔案移除政策中 NoncurrentDays 屬性指定的天數之後刪除。

注意

刪除非最新物件會永久性刪除這些物件,而且無法加以復原。

若要檢視或復原標示為非最新物件的物件,您必須聯絡 AWS 支援。如需聯絡的相關資訊 AWS 支援,請參閱聯絡 AWSAWS 支援 文件

快照管理會決定要從資料表中刪除的物件,僅參考該資料表。從資料表外部參考這些物件並不會阻止快照管理刪除它們。

注意

快照管理不支援您在 metadata.json 檔案中或透過 ALTER TABLE SET TBLPROPERTIES SQL 命令設定作為 Iceberg 資料表屬性的保留值,包括分支或標籤型保留。在設定分支或標籤型保留政策時,或在 metadata.json 檔案上設定的保留政策比透過 PutTableMaintenanceConfiguration API 設定之值還長時,系統會停用快照管理。在這些情況下,S3 不會讓快照過期或加以移除,而且您將需要手動刪除快照,或從您的 Iceberg 資料表移除屬性,以避免產生儲存費用。

您只能在資料表層級設定快照管理。如需詳細資訊,請參閱 Amazon S3 定價中的定價資訊。

快照管理範例

下列範例顯示資料表快照管理的組態。

使用 設定快照管理 AWS CLI

下列範例會使用 PutTableMaintenanceConfiguration API 將 MinimumSnapshots 設定為 10,並將 MaximumSnapshotAge 設定為 2500 小時。

aws s3tables put-table-maintenance-configuration \ --table-bucket-arn arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket \ --namespace my_namespace \ --name my_table \ --type icebergSnapshotManagement \ --value '{"status":"enabled","settings":{"icebergSnapshotManagement":{"minSnapshotsToKeep":10,"maxSnapshotAgeHours":2500}}}'
使用 停用快照管理 AWS CLI

下列範例將使用 PutTableMaintenanceConfiguration API 停用快照管理。

aws s3tables put-table-maintenance-configuration \ --table-bucket-arn arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket \ --namespace my_namespace \ --name my_table \ --type icebergSnapshotManagement \ --value '{"status":"disabled","settings":{"icebergSnapshotManagement":{"minSnapshotsToKeep":1,"maxSnapshotAgeHours":120}}}'

如需詳細資訊,請參閱 AWS CLI 命令參考中的 put-table-maintenance-configuration

考量與限制

若要進一步了解壓縮和快照管理的其他考量和限制,請參閱維護任務的考量和限制

注意

S3 Tables 會套用 128 MB 的 parquets row-group-default size。