

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

# 資料表的維護
<a name="s3-tables-maintenance"></a>

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

編輯此組態需要 `s3tables:GetTableMaintenanceConfiguration` 和 `s3tables:PutTableMaintenanceConfiguration` 許可。

**注意**  
您可以透過 CloudTrail 日誌追蹤資料表上的 S3 Tables 自動化維護操作，如需詳細資訊，請參閱 [適用於 S3 Tables 維護的 CloudTrail 管理事件](s3-tables-logging.md#s3-tables-maintenance-events)。

**Topics**
+ [壓縮](#s3-tables-maintenance-compaction)
+ [快照管理](#s3-tables-maintenance-snapshot)
+ [考量與限制](#s3-tables-considerations-see-more)

## 壓縮
<a name="s3-tables-maintenance-compaction"></a>

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

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

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

### 壓縮策略
<a name="s3-tables-maintenance-compaction-strategies"></a>

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

S3 Tables 支援這些資料表的壓縮策略：
+ **自動 (預設)**
  + Amazon S3 會根據資料表排序順序選取最佳壓縮策略。這是所有資料表的預設壓縮策略。
  + 對於中繼資料中具有已定義排序順序的資料表，`auto` 會自動套用 `sort` 壓縮。
  + 對於沒有排序順序的資料表，`auto` 會預設為使用 `binpack` 壓縮。
+ **Binpack**
  + 將小型檔案合併為較大的檔案，通常以大小超過 100 MB 為目標，同時套用任何待定的刪除。這是未排序資料表的預設壓縮策略。
+ **排序**
  + 根據在壓縮期間自動以階層方式排序的所指定資料欄來組織資料，從而改善篩選操作的查詢效能。在您的查詢經常篩選特定資料欄時，建議使用此策略。當您使用此策略，在資料表屬性中定義 `sort_order` 時，S3 Tables 會自動針對直欄套用階層排序。
+ **Z 順序**
  + 透過將多個屬性混合到可用於排序的單一純量值來最佳化資料組織，從而實現跨多個維度的有效查詢。在您需要同時查詢多個維度的資料時，建議使用此策略。此策略要求您先使用 `sort_order` 資料表屬性在 Iceberg 資料表屬性中定義排序順序。

壓縮會產生額外費用。`z-order` 和 `sort` 壓縮策略的成本可能會高於 `binpack`。如需詳細資訊，請參閱 [Amazon S3 定價](https://aws.amazon.com/s3/pricing/)中的定價資訊。

### 壓縮範例
<a name="tables-compaction-examples"></a>

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

**使用 設定壓縮目標檔案大小 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 命令參考》**中的 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3tables/put-table-maintenance-configuration.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3tables/put-table-maintenance-configuration.html)。

**使用 設定壓縮策略 AWS CLI**  
下列範例會使用 `PutTableMaintenanceConfiguration` API，將壓縮策略變更為 `sort`。設定壓縮時，您可以從下列壓縮策略中做選擇：`auto`、`binpack`、`sort` 或 `z-order`  
若要將壓縮策略設定為 `sort` 或 `z-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 命令參考》**中的 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3tables/put-table-maintenance-configuration.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3tables/put-table-maintenance-configuration.html)。

**使用 停用壓縮 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 命令參考》**中的 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3tables/put-table-maintenance-configuration.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3tables/put-table-maintenance-configuration.html)。

## 快照管理
<a name="s3-tables-maintenance-snapshot"></a>

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

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

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

若要檢視或復原標示為非最新物件的物件，您必須聯絡 AWS 支援。如需聯絡的相關資訊 AWS 支援，請參閱[聯絡 AWS](https://aws.amazon.com/contact-us/)或 [AWS 支援 文件](https://aws.amazon.com/documentation/aws-support/)。

快照管理會決定要從資料表中刪除的物件，並僅會參考該資料表。從資料表外對這些物件的參考，無法阻止快照管理刪除物件。

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

您只能在資料表層級設定快照管理。如需詳細資訊，請參閱 [Amazon S3 定價](https://aws.amazon.com/s3/pricing/)中的定價資訊。

### 快照管理範例
<a name="tables-snapshot-examples"></a>

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

**使用 設定快照管理 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 命令參考》**中的 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3tables/put-table-maintenance-configuration.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3tables/put-table-maintenance-configuration.html)。

## 考量與限制
<a name="s3-tables-considerations-see-more"></a>

若要進一步了解壓縮和快照管理的其他考量和限制，請參閱[維護任務的考量和限制](s3-tables-considerations.md)。

**注意**  
S3 Tables 會套用 128 MB 的 parquets row-group-default 大小。