資料表的維護 - Amazon Simple Storage Service

資料表的維護

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

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

注意

您可以透過 CloudTrail 日誌追蹤資料表上的 S3 Tables 自動化維護操作,如需詳細資訊,請參閱 適用於 S3 Tables 維護的 CloudTrail 管理事件

壓縮

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

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

注意

壓縮支援 Apache Parquet、Avro 和 ORC 檔案類型。

壓縮策略

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

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

  • 自動 (預設)

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

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

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

  • Binpack

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

  • Sort

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

  • Z 順序

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

壓縮會產生額外費用。z-ordersort 壓縮策略的成本可能會高於 binpack。如需詳細資訊,請參閱 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 設定壓縮策略

下列範例會使用 PutTableMaintenanceConfiguration API,將壓縮策略變更為 sort。設定壓縮時,您可以從下列壓縮策略中做選擇: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 大小。