

# S3 表类数据存储服务维护
<a name="s3-tables-maintenance-overview"></a>

Amazon S3 自动执行维护，以提高 S3 表存储桶中表的性能。维护是在表存储桶和各个表级别执行的，包括以下内容：

**表存储桶级维护：**  
+ **未引用文件移除**：清理孤立文件以优化存储使用率和成本。

**表级维护：**  
+ **文件压缩**：整合小文件以提高查询性能并降低存储成本。
+ **快照管理**：控制表版本历史记录并防止元数据过度增长。

默认情况下，将启用这些选项。可以通过维护配置文件来编辑或禁用这些操作。

除了这些选项之外，您还可以为表启用和配置记录过期设置。使用此选项，当记录过期时，Amazon S3 会自动从表中删除记录。

**Topics**
+ [S3 表类数据存储服务维护任务状态](s3-tables-maintenance-status.md)
+ [表存储桶的维护](s3-table-buckets-maintenance.md)
+ [表维护](s3-tables-maintenance.md)
+ [表的记录过期时间](s3-tables-record-expiration.md)
+ [维护任务的注意事项和限制](s3-tables-considerations.md)

# S3 表类数据存储服务维护任务状态
<a name="s3-tables-maintenance-status"></a>

S3 表类数据存储服务维护任务会定期为您的 S3 表或表存储桶运行。可以使用 `GetTableMaintenanceJobStatus` API 查询这些任务的状态。

**使用 AWS CLI 获取维护任务的状态**  
以下示例将使用 `GetTableMaintenanceJobStatus` API 获取维护任务的状态。  

```
aws s3tables get-table-maintenance-job-status \
   --table-bucket-arn="arn:aws:s3tables:arn:aws::111122223333:bucket/amzn-s3-demo-bucket1" \
   --namespace="mynamespace" \
   --name="testtable"
```
有关更多信息，请参阅《AWS CLI Command Reference》**中的 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3tables/get-table-maintenance-job-status.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3tables/get-table-maintenance-job-status.html)。

S3 表类数据存储服务维护任务可以在四种可能的状态之间转换：
+ `Successful`
+ `Failed`
+ `Disabled`
+ `Not_Yet_Run`

状态为失败的任务将包含一条失败消息。下面的列表介绍了可能的失败消息。
+ 尝试读取表时遇到 Iceberg 验证异常。确保您的表可读，符合 Iceberg 规范，并且仅包含以 S3 表别名开头的 S3 路径。
+ Iceberg 快照管理目前不支持用户定义的标签或引用。
+ Iceberg 表维护配置与“history.expire.max-snapshot-age-ms”和“history.expire.min-snapshots-to-keep”表属性不兼容。
+ 当“gc.enabled”表属性为 false 时，不支持 Iceberg 快照管理和未引用文件移除。确保此属性为未设置或显式设置为 true。
+ 由于元数据过期，提交失败。将在下次有机会时重试维护。
+ 访问权限不足，无法执行表维护。确保用于加密表的密钥处于活动状态、存在且具有向 S3 服务主体 `maintenance.s3tables.amazonaws.com` 授予访问权限的资源策略。
**注意**  
 有关 S3 表类数据存储服务的 AWS KMS 权限的更多信息，请参阅 [S3 表类数据存储服务 SSE-KMS 加密的权限要求](s3-tables-kms-permissions.md)。
+ 内部错误

# 表存储桶的维护
<a name="s3-table-buckets-maintenance"></a>

Amazon S3 提供维护操作，以增强表存储桶的管理和性能。默认情况下，对所有表存储桶启用了以下选项。您可以通过为表存储桶指定维护配置文件来编辑或禁用此选项。

编辑此配置需要 `s3tables:PutTableBucketMaintenanceConfiguration` 权限。

**Topics**
+ [未引用文件移除](#s3-table-bucket-maintenance-unreferenced)
+ [注意事项和限制](#s3-tables-buckets-considerations-see-more)

## 未引用文件移除
<a name="s3-table-bucket-maintenance-unreferenced"></a>

未引用文件移除会识别并删除所有未被任何表快照引用的对象。作为未引用文件移除策略的一部分，您可以配置两个属性：`unreferencedDays`（默认为 3 天）和 `nonCurrentDays`（默认为 10 天）。

对于您的表未引用且早于 `unreferencedDays` 属性的任何对象，S3 将该对象标记为非当前版本。S3 会在 `nonCurrentDays` 属性指定的天数后删除非当前对象。

**注意**  
删除非当前对象是永久性的，无法恢复这些对象。

要查看或恢复已标记为非当前版本的对象，必须联系 AWS 支持。有关联系 AWS 支持 的信息，请参阅[联系 AWS](https://aws.amazon.com/contact-us/) 或 [AWS 支持 文档](https://aws.amazon.com/documentation/aws-support/)。

未引用文件移除仅根据对表的引用来确定要从该表中删除的对象。在表之外对这些对象进行的任何引用都不会阻止未引用文件移除来删除对象。

如果您禁用未引用文件移除，则任何正在进行的任务都不会受到影响。配置更改后，新配置将在下一个任务中生效。有关更多信息，请参阅 [Amazon S3 定价](https://aws.amazon.com/s3/pricing/)中的定价信息。

您只能在表存储桶级配置未引用文件移除。此配置将应用于存储桶中的每个表。

**使用 AWS CLI 配置未引用文件移除**  
以下示例将使用 `PutTableBucketMaintenanceConfiguration` API 将 `unreferencedDays` 设置为 4 天，并将 `nonCurrentDays` 设置为 10 天。  

```
aws s3tables put-table-bucket-maintenance-configuration \
   --table-bucket-arn arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket \
   --type icebergUnreferencedFileRemoval \
   --value '{"status":"enabled","settings":{"icebergUnreferencedFileRemoval":{"unreferencedDays":4,"nonCurrentDays":10}}}'
```

有关更多信息，请参阅《AWS CLI Command Reference》**中的 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3tables/put-table-bucket-maintenance-configuration.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3tables/put-table-bucket-maintenance-configuration.html)。

## 注意事项和限制
<a name="s3-tables-buckets-considerations-see-more"></a>

要了解有关未引用文件移除的其它注意事项和限制的更多信息，请参阅[维护任务的注意事项和限制](s3-tables-considerations.md)。

# 表维护
<a name="s3-tables-maintenance"></a>

S3 表类数据存储服务提供维护操作，以增强各个表的管理和性能。默认情况下为表存储桶中的所有表启用以下选项。可以通过为 S3 表指定维护配置文件来编辑或禁用这些选项。

编辑此配置需要 `s3tables:GetTableMaintenanceConfiguration` 和 `s3tables:PutTableMaintenanceConfiguration` 权限。

**注意**  
您可以通过 CloudTrail 日志来跟踪 S3 表类数据存储服务对表的自动维护操作，有关更多信息，请参阅 [S3 表类数据存储服务维护的 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，或者您指定的自定义值介于 64 MB 到 512 MB 之间。压缩后的文件将作为表的最新快照写入。

**注意**  
仅 Apache Parquet、Avro 和 ORC 文件类型支持压缩。

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

您可以从多种压缩策略中进行选择，这些策略可以进一步提高查询性能，具体取决于查询模式和表排序顺序。

S3 表类数据存储服务现在对于表支持以下压缩策略：
+ **Auto（默认）**
  + Amazon S3 根据表排序顺序选择最佳压缩策略。这是适用于所有表的默认压缩策略。
  + 对于在元数据中具有已定义的排序顺序的表，`auto` 将自动应用 `sort` 压缩。
  + 对于没有排序顺序的表，`auto` 将默认为使用 `binpack` 压缩。
+ **Binpack**
  + 将小文件组合成较大的文件（目标大小通常超过 100 MB），同时应用任何待执行的删除。这是适用于未排序表的默认压缩策略。
+ **排序**
  + 在压缩期间根据指定的列整理数据，这些列自动按层次结构排序，从而提高筛选出的操作的查询性能。当查询经常会筛选特定列时，建议使用此策略。当您使用此策略时，如果在表属性中定义了 `sort_order`，S3 表类数据存储服务会自动对列应用分层排序。
+ **Z-order**
  + 通过将多个属性混合成一个可用于排序的标量值来优化数据的组织，从而实现跨多个维度高效查询。需要同时跨多个维度查询数据时，建议使用此策略。此策略要求您在 Iceberg 表属性中使用 `sort_order` 表属性定义排序顺序。

压缩将产生额外费用。`z-order` 和 `sort` 压缩策略的成本可能高于 `binpack`。有关更多信息，请参阅 [Amazon S3 定价](https://aws.amazon.com/s3/pricing/)中的定价信息。

### 压缩示例
<a name="tables-compaction-examples"></a>

以下示例展示了表压缩的配置。

**使用 AWS CLI 配置压缩目标文件大小**  
最小目标压缩文件大小为 64 MB；最大值为 512 MB。  
以下示例将使用 `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 Command Reference》**中的 [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 Command Reference》**中的 [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 Command Reference》**中的 [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 Command Reference》**中的 [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 表类数据存储服务应用的 parquets row-group-default 为 128 MB。

# 表的记录过期时间
<a name="s3-tables-record-expiration"></a>

默认情况下，S3 表中的记录不会过期。为了帮助尽可能降低表的存储成本，您可以为表启用和配置记录过期。使用此选项，当记录过期时，Amazon S3 会自动从表中删除记录。

如果为表启用记录过期，则可以指定记录过期之前在表中保留记录的天数。这可以是从 1 天到 2147483647 天之间的任意天数。例如，要将表记录保留一年，请指定 `365` 天。然后，记录会保留 365 天。365 天后，记录过期，Amazon S3 会自动将其删除。

对于存储来自特定 AWS 服务（目前包括 Amazon S3 Storage Lens 存储统计管理工具和 Amazon SageMaker 目录）的特定数据集的 AWS 托管的表，您可以启用和配置记录过期。记录过期选项目前不可用于 AWS 托管的其他表。唯一的例外是 Amazon S3 元数据日记表。日记表使用您在服务级别指定的不同记录过期设置。有关为此类表配置记录过期的信息，请参阅[使日记表记录过期](metadata-tables-expire-journal-table-records.md)。请注意，记录过期选项不可用于您创建的 S3 表。

为表启用记录过期后，您可以随时禁用该功能。Amazon S3 随即停止过期，不再从表中删除记录。

**Topics**
+ [工作原理](#s3-tables-record-expiration-how-it-works)
+ [配置记录过期](#s3-tables-record-expiration-configure)
+ [监控记录过期](#s3-tables-record-expiration-monitor)
+ [注意事项](#s3-tables-expiration-considerations)

## 记录过期的工作原理
<a name="s3-tables-record-expiration-how-it-works"></a>

当记录的寿命超过您在表的记录过期设置中指定的天数时，记录过期会自动从 S3 表中删除这些记录。为了确定记录何时过期，Amazon S3 使用记录中的特定时间戳。时间戳列的选择直接派生自表的表架构。您无需指定要使用的时间戳列。这些表由 AWS 管理，当您为表启用记录过期时，Amazon S3 会自动选择要使用的相应列。

对于存储特定 Amazon S3 Storage Lens 存储统计管理工具指标或特定 Amazon SageMaker 目录元数据的 AWS 托管的表，您可以启用和配置记录过期设置。记录过期选项可用于这些服务的以下 AWS 托管的表：
+ S3 Storage Lens 存储统计管理工具：`bucket_property_metrics`、`default_activity_metrics`、`default_storage_metrics`、`expanded_prefixes_activity_metrics` 和 `expanded_prefixes_storage_metrics`。为了确定这些表中的记录何时过期，Amazon S3 使用记录中的 `report_time` 字段。
+ Amazon SageMaker 目录：`ASSET`。为了确定此表中的记录何时过期，Amazon S3 使用记录中的 `snapshot_time` 字段。

为表启用记录过期后，Amazon S3 开始运行记录过期作业，这些作业对表执行以下操作：

1. 识别超过了指定过期设置的记录。

1. 创建新的快照，排除对已过期记录的引用。

删除操作还会基于表的维护配置设置中的快照过期时间和未引用的文件删除设置。有关这些设置的更多信息，请参阅[表维护](s3-tables-maintenance.md)。

**警告**  
在记录满足过期的条件之后，Amazon S3 会在 24 到 48 小时内使这些记录过期并删除。系统从最新的快照中移除表记录。通过表维护操作来移除记录的数据和存储。表记录在过期后无法恢复。

## 为表配置记录过期
<a name="s3-tables-record-expiration-configure"></a>

您可以使用 Amazon S3 控制台、Amazon S3 REST API、AWS Command Line Interface（AWS CLI）或 AWS SDK，启用、配置和以其他方式管理 S3 表的记录过期设置。

在尝试对表执行这些任务之前，确保您拥有以下 AWS Identity and Access Management（IAM）权限：
+ `s3tables:GetTableRecordExpirationConfiguration`：此操作让您可以访问表的当前记录过期设置。
+ `s3tables:PutTableRecordExpirationConfiguration`：此操作让您可以启用、配置和禁用表的记录过期设置。
+ `s3tables:GetTableRecordExpirationJobStatus`：此操作让您可以监控表的记录过期操作（作业）的状态以及访问操作的指标。

以下各节介绍如何使用 Amazon S3 控制台和 AWS CLI，为表启用、配置和禁用记录过期设置。要使用 Amazon S3 REST API 或 AWS SDK 执行这些任务，请使用 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3Buckets_PutTableRecordExpirationConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3Buckets_PutTableRecordExpirationConfiguration.html) 操作。有关更多信息，请参阅《Amazon Simple Storage Service API 参考》**中的[使用 Amazon S3 进行开发](https://docs.aws.amazon.com/AmazonS3/latest/API/developing-s3.html)。

### 使用 S3 控制台
<a name="configure-table-record-expiration-console"></a>

要使用控制台启用和配置 S3 表的记录过期设置，请按照以下步骤操作。

1. 登录到 AWS 管理控制台，然后通过以下网址打开 Amazon S3 控制台：[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)。

1. 在左侧导航窗格中，选择**表存储桶**。

1. 在**表存储桶**页面上，选择存储表的存储桶。

1. 在**表**选项卡上，选择表。

1. 在**维护**选项卡上的**记录过期**部分，选择**编辑**。

1. 在**记录过期**下，选择**启用**。

1. 对于**记录距离过期的天数**，输入表中记录的保留天数。这可以是从 1 到 2147483647 之间的任意整数。例如，要将记录保留一年，请输入 **365**。
**警告**  
确定表中记录的相应保留期限时，请注意，记录在过期后无法恢复。

1. 选择**保存更改**。

以后若要更改保留期，请重复上述步骤。

以后若要禁用记录过期，请重复步骤 1 到 5。然后，在第 6 步中选择**禁用**。完成后，选择**保存更改**。

### 使用 AWS CLI
<a name="configure-table-record-expiration-CLI"></a>

要使用 AWS CLI 配置和管理 S3 表的记录过期设置，请运行 [https://docs.aws.amazon.com/cli/latest/reference/s3tables/put-table-record-expiration-configuration.html](https://docs.aws.amazon.com/cli/latest/reference/s3tables/put-table-record-expiration-configuration.html) 命令。

您可以先创建 JSON 文件，其中包含要应用于表的记录过期设置。以下示例说明对表启用记录过期的 JSON 文件的内容。它还为表中的记录指定了 30 天的保留期。换而言之，它指定表记录应在 30 天后过期。

```
{
    "status": "enabled",
        "settings": {
            "days": 30
        {
}
```

要使用前述示例，请将 `user input placeholders` 替换为您自己的信息。

**警告**  
确定表中记录的相应保留期限时，请注意，记录在过期后无法恢复。

要为表禁用记录过期，请为 `status` 字段指定 `disabled` 并在文件中省略 `settings` 对象。例如：

```
{
    "status": "disabled"
}
```

创建包含要应用的设置的 JSON 文件后，运行 `put-table-record-expiration-configuration` 命令。对于 `table-arn` 参数，请指定表的 Amazon 资源名称（ARN）。对于 `value` 参数，请指定存储设置的文件的名称。

例如，以下命令更新表的记录过期设置。这些设置在名为 *`record-expiration-config.json`* 的文件中指定。

```
aws s3tables put-table-record-expiration-configuration \
    --table-arn arn:aws:s3tables:us-east-1:123456789012:bucket/amzn-s3-demo-table-bucket/table/amzn-s3-demo-table \
    --value file://./record-expiration-config.json
```

要使用前述示例，请将 `user input placeholders` 替换为您自己的信息。

## 监控表的记录过期
<a name="s3-tables-record-expiration-monitor"></a>

要监控 S3 表的记录过期操作的状态和结果，请使用 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3Buckets_GetTableRecordExpirationJobStatus.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3Buckets_GetTableRecordExpirationJobStatus.html) 操作，如果您使用 AWS CLI，则运行 [https://docs.aws.amazon.com/cli/latest/reference/s3tables/get-table-record-expiration-job-status.html](https://docs.aws.amazon.com/cli/latest/reference/s3tables/get-table-record-expiration-job-status.html) 命令。在请求中，指定表的 Amazon 资源名称（ARN）。

例如，以下 AWS CLI 命令检索表存储桶中特定表的记录过期操作的状态。要使用此示例，请将 `user input placeholders` 替换为您自己的信息。

```
aws s3tables get-table-record-expiration-job-status \
    --table-arn arn:aws:s3tables:us-east-1:123456789012:bucket/amzn-s3-demo-table-bucket/table/amzn-s3-demo-table
```

如果您的请求成功，则会收到一条响应，其中提供了详细信息，例如 Amazon S3 最近一次对表运行记录过期操作的时间以及该操作的状态。如果最近一次运行成功，则响应还包括处理指标，例如，删除的数据文件和记录的数量，以及删除数据的总大小。如果最近一次运行出错，则响应中会包含一条失败消息，说明运行失败的原因。

## 注意事项
<a name="s3-tables-expiration-considerations"></a>

在为 AWS 托管的 S3 表配置和管理记录过期设置时，请记住以下几点：
+ 记录过期仅可用于由支持的 AWS 服务（Amazon S3 Storage Lens 存储统计管理工具和 Amazon SageMaker 目录）创建的某些 AWS 托管的表。此外，记录过期仅可用于单个表，而不是整个表存储桶。
+ 为了确定记录何时过期，Amazon S3 使用表中的特定时间戳。这些时间戳表示数据的创建时间，而不是 Amazon S3 摄取表中记录的时间。使用的时间戳列取决于发布表的服务：对于 S3 Storage Lens 存储统计管理工具指标为 `report_time` 字段；对于 Amazon SageMaker 目录元数据为 `snapshot_time` 字段。您无法指定要使用哪个字段，因为这些表是由 AWS 管理的。
+ 如果将数据导出到表时出现延迟，则记录可能比您预期的更早达到过期条件。因此，我们建议您考虑潜在的摄取延迟，在表的过期设置中为保留期添加缓冲时间。
+ 记录会在达到过期条件后的 24 到 48 小时内过期并删除。Amazon S3 不会在记录达到过期条件后立即使记录过期并删除记录。
+ 记录在过期并被删除后无法恢复。

# 维护任务的注意事项和限制
<a name="s3-tables-considerations"></a>

Amazon S3 提供维护操作，以提高 S3 表或表存储桶的性能。这些选项为文件压缩、快照管理和未引用文件移除。以下是这些管理选项的限制和注意事项。

**Topics**
+ [压缩注意事项](#s3-tables-compaction-considerations)
+ [快照管理注意事项](#s3-tables-snapshot-considerations)
+ [未引用文件移除的注意事项](#s3-tables-unreferenced-file-removal-considerations)
+ [S3 表和表存储桶维护操作限制和相关 API](#s3-tables-maintenance-limits)

## 压缩注意事项
<a name="s3-tables-compaction-considerations"></a>

以下注意事项适用于压缩。有关压缩的更多信息，请参阅 [表维护](s3-tables-maintenance.md)。
+ 仅 Apache Parquet、Avro 和 ORC 文件类型支持压缩。
+ 默认情况下，压缩以 Apache Parquet 格式写入新文件。要改为将文件压缩为 Avro 或 ORC 格式，请将 `write.format.default` 表属性设置为 `avro` 或 `orc`。
+ 压缩不支持数据类型：`Fixed`。
+ 压缩不支持压缩类型：`brotli`、`lz4`。
+ 压缩按照自动时间表进行。如果您想要防止与压缩关联的费用，则可以使用 [PutTableMaintenanceConfiguration](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3Buckets_PutTableMaintenanceConfiguration.html) API 操作手动为表禁用压缩功能。

**注意**  
Apache Iceberg 使用乐观并发模型以及冲突检测来仲裁写入事务。使用乐观并发，用户和压缩事务可能会发生冲突，而导致事务失败。如果发生冲突，压缩任务将在失败时重试。建议您的管道也使用重试逻辑来解决因操作冲突而失败的事务。

## 快照管理注意事项
<a name="s3-tables-snapshot-considerations"></a>

以下注意事项适用于快照管理。有关快照管理的更多信息，请参阅 [表维护](s3-tables-maintenance.md)。
+ 只有在同时满足以下两个条件时，才会保留快照：要保留的最小快照数量和指定的保留期。
+ 快照管理从 Apache Iceberg 中删除到期的快照元数据，从而防止对到期快照进行时空旅行查询，并选择性删除关联的数据文件。
+ 快照管理不支持您在 `metadata.json` 文件中或通过 `ALTER TABLE SET TBLPROPERTIES` SQL 命令配置为 Iceberg 表属性的保留值，包括基于分支或标签的保留。当您配置基于分支或标签的保留策略，或者在 `metadata.json` 文件上配置的保留策略长度超过通过 `PutTableMaintenanceConfiguration` API 配置的值时，快照管理将被禁用。在这些情况下，S3 不会使快照到期或移除快照，您需要手动删除快照或从 Iceberg 表中移除属性，以避免产生存储费用。

## 未引用文件移除的注意事项
<a name="s3-tables-unreferenced-file-removal-considerations"></a>

以下注意事项适用于未引用文件移除。有关未引用文件移除的更多信息，请参阅 [表存储桶的维护](s3-table-buckets-maintenance.md)。
+ 未引用文件移除会删除 Iceberg 元数据不再引用的数据和元数据文件（如果其创建时间早于保留期）。

## S3 表和表存储桶维护操作限制和相关 API
<a name="s3-tables-maintenance-limits"></a>




| 维护操作 | 属性 | 是否可在表存储桶级进行配置？ | 是否可在表级进行配置？ | 默认值 | 最小值 | 相关的 Iceberg 维护例程 | 控制 S3 表类数据存储服务 API | 
| --- | --- | --- | --- | --- | --- | --- | --- | 
| 压缩 | targetFileSizeMB | 否 | 是 | 512 MB | 64MB | [https://iceberg.apache.org/docs/latest/maintenance/#compact-data-files](https://iceberg.apache.org/docs/latest/maintenance/#compact-data-files) | [https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3tables_PutTableMaintenanceConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3tables_PutTableMaintenanceConfiguration.html) | 
| 快照管理 | minimumSnapshots | 否 | 是 | 1 | 1 | [https://iceberg.apache.org/docs/latest/maintenance/#expire-snapshots](https://iceberg.apache.org/docs/latest/maintenance/#expire-snapshots) retainLast | [https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3tables_PutTableMaintenanceConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3tables_PutTableMaintenanceConfiguration.html) | 
| 快照管理 | maximumSnapshotAge | 否 | 是 | 120 小时 | 1 小时 | [https://iceberg.apache.org/docs/latest/maintenance/#expire-snapshots](https://iceberg.apache.org/docs/latest/maintenance/#expire-snapshots) expireOlderThan | [https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3tables_PutTableMaintenanceConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3tables_PutTableMaintenanceConfiguration.html) | 
| 未引用文件移除 | unreferencedDays | 是 | 否 | 3 天 | 1 天 | [https://iceberg.apache.org/docs/latest/maintenance/#delete-orphan-files](https://iceberg.apache.org/docs/latest/maintenance/#delete-orphan-files) | [https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3tables_PutTableBucketMaintenanceConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3tables_PutTableBucketMaintenanceConfiguration.html) | 
| 未引用文件移除 | nonCurrentDays | 是 | 否 | 10 天 | 1 天 | 不适用 | [https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3tables_PutTableBucketMaintenanceConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3tables_PutTableBucketMaintenanceConfiguration.html) | 

**注意**  
S3 表类数据存储服务应用的 parquets row-group-default 为 128 MB。