

# Manutenção de tabelas
<a name="s3-tables-maintenance"></a>

A funcionalidade Tabelas do S3 oferece operações de manutenção para aprimorar o gerenciamento e o desempenho de tabelas individuais. As opções a seguir estão habilitadas por padrão para todas as tabelas em buckets de tabela. Você pode editar ou desabilitar essas opções especificando arquivos de configuração de manutenção para a tabela do S3.

A edição dessa configuração requer as permissões `s3tables:GetTableMaintenanceConfiguration` e `s3tables:PutTableMaintenanceConfiguration`.

**nota**  
É possível acompanhar as operações de manutenção automatizada da funcionalidade Tabelas do S3 em suas tabelas por meio de logs do CloudTrail. Para ter mais informações, consulte [Eventos de gerenciamento do CloudTrail para manutenção da funcionalidade Tabelas do S3](s3-tables-logging.md#s3-tables-maintenance-events).

**Topics**
+ [Compactação](#s3-tables-maintenance-compaction)
+ [Gerenciamento de snapshots](#s3-tables-maintenance-snapshot)
+ [Considerações e limitações](#s3-tables-considerations-see-more)

## Compactação
<a name="s3-tables-maintenance-compaction"></a>

A compactação é configurada no nível da tabela e combina vários objetos menores em menos objetos maiores a fim de melhorar o desempenho de consulta do Apache Iceberg. Ao combinar objetos, a compactação também aplica os efeitos das exclusões em nível de linha na tabela.

A compactação está habilitada por padrão para todas as tabelas, com um tamanho de arquivo de destino padrão de 512 MB ou um valor personalizado de 64 MB a 512 MB especificado por você. Os arquivos compactados são gravados como o snapshot mais recente da tabela.

**nota**  
A compactação só é compatível com os tipos de arquivo Apache Parquet, Avro e ORC.

### Estratégias de compactação
<a name="s3-tables-maintenance-compaction-strategies"></a>

Você pode escolher entre várias estratégias de compactação que podem aumentar ainda mais o desempenho da consulta, dependendo dos padrões de consulta e da ordem de classificação da tabela.

O serviço Tabelas do S3 permite estas estratégias de compactação para tabelas:
+ **Auto (padrão)**
  + O Amazon S3 seleciona a melhor estratégia de compactação com base na ordem de classificação da tabela. Essa é a estratégia de compactação padrão para todas as tabelas.
  + Para tabelas com uma ordem de classificação definida nos respectivos metadados, `auto` aplicará automaticamente a compactação `sort`.
  + Para tabelas sem uma ordem de classificação, `auto` usará por padrão a compactação `binpack`.
+ **Binpack**
  + Combina arquivos pequenos em arquivos maiores, geralmente visando tamanhos acima de 100 MB, enquanto aplica quaisquer exclusões pendentes. Essa é a estratégia de compactação padrão para tabelas não classificadas.
+ **Classificar**
  + Organiza os dados com base em colunas especificadas que são classificadas automaticamente por hierarquia durante a compactação, melhorando o desempenho da consulta para operações filtradas. Essa estratégia é recomendada quando suas consultas filtram colunas específicas com frequência. Quando você usa essa estratégia, o serviço Tabelas do S3 aplica automaticamente a classificação hierárquica nas colunas quando `sort_order` é definido nas propriedades da tabela.
+ **Z-order**
  + Otimiza a organização dos dados combinando vários atributos em um único valor escalar que pode ser usado para classificação, permitindo consultas eficientes em várias dimensões. Essa estratégia é recomendada quando você precisa consultar dados em várias dimensões simultaneamente. Ela exige que você defina uma ordem de classificação nas propriedades de tabela do Iceberg usando a propriedade de tabela `sort_order`.

A compactação incorrerá em custos adicionais. As estratégias de compactação `z-order` e `sort` estão sujeitas a um custo maior do que a `binpack`. Para ter mais informações sobre preços, consulte [Definição de preço do Amazon S3](https://aws.amazon.com/s3/pricing/).

### Exemplos de compactação
<a name="tables-compaction-examples"></a>

Os exemplos a seguir mostram configurações para compactação de tabelas.

**Como configurar o tamanho do arquivo de destino de compactação usando a AWS CLI**  
O tamanho mínimo do arquivo de compactação de destino é 64 MB; o máximo é 512 MB.  
O exemplo a seguir alterará o tamanho do arquivo de destino para 256 MB usando a API `PutTableMaintenanceConfiguration`.  

```
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}}}'
```
Para ter mais informações, consulte [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) na *Referência de comandos da AWS CLI*.

**Como configurar a estratégia de compactação usando a AWS CLI**  
O exemplo a seguir mudará a estratégia de compactação para `sort` usando a API `PutTableMaintenanceConfiguration`. Ao definir a compactação, você pode escolher entre as seguintes estratégias de compactação: `auto`, `binpack`, `sort` ou `z-order`  
Para definir a estratégia de compactação como `sort` ou `z-order`, você precisa atender aos seguintes pré-requisitos:  
+ Uma ordem de classificação definida nas propriedades de tabela do Iceberg.
+ A permissão `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"}}}'
```
Para ter mais informações, consulte [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) na *Referência de comandos da AWS CLI*.

**Como desabilitar a compactação usando a AWS CLI**  
O exemplo a seguir desabilitará a compactação usando a API `PutTableMaintenanceConfiguration`.  

```
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}}}'
```
Para ter mais informações, consulte [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) na *Referência de comandos da AWS CLI*.

## Gerenciamento de snapshots
<a name="s3-tables-maintenance-snapshot"></a>

O gerenciamento de snapshots determina o número de snapshots ativos para uma tabela. Isso se baseia em `MinimumSnapshots` (1 por padrão) e em `MaximumSnapshotAge` (120 horas por padrão). O gerenciamento de snapshots expira e remove os snapshots de tabela com base nessas configurações.

Quando um snapshot expira, o Amazon S3 marca quaisquer objetos referenciados apenas por esse snapshot como desatualizados. Esses objetos desatualizados são excluídos após o número de dias especificado pela propriedade `NoncurrentDays` na política de remoção de arquivos não referenciados.

**nota**  
As exclusões de objetos desatualizados são permanentes, sem nenhuma maneira de recuperá-los.

Para visualizar ou recuperar objetos que foram marcados como desatualizados, você deve entrar em contato com o AWS Support. Para obter informações sobre como entrar em contato com o AWS Support, consulte [Entrar em contato com a AWS](https://aws.amazon.com/contact-us/) ou a [Documentação do AWS Support](https://aws.amazon.com/documentation/aws-support/).

O gerenciamento de snapshots determina os objetos a serem excluídos de uma tabela com referências apenas a essa tabela. Qualquer referência feita a esses objetos fora da tabela não impedirá que o gerenciamento de snapshots exclua um objeto.

**nota**  
O gerenciamento de snapshots não oferece suporte a valores de retenção que você configura como propriedades de tabela do Iceberg no arquivo `metadata.json` ou por meio de um comando SQL `ALTER TABLE SET TBLPROPERTIES`, incluindo retenção baseada em ramificação ou tag. O gerenciamento de snapshots é desabilitado quando você configura uma política de retenção baseada em ramificação ou tag, ou configura uma política de retenção no arquivo `metadata.json` que seja maior do que os valores configurados por meio da API `PutTableMaintenanceConfiguration`. Nesses casos, o S3 não expirará nem removerá snapshots e você precisará excluir manualmente os snapshots ou remover as propriedades de tabela do Iceberg para evitar cobranças de armazenamento.

Você só pode configurar o gerenciamento de snapshots ao nível da tabela. Para ter mais informações, consulte as informações sobre preços na [Definição de preço do Amazon S3](https://aws.amazon.com/s3/pricing/).

### Exemplos de gerenciamento de snapshots
<a name="tables-snapshot-examples"></a>

Os exemplos a seguir mostram configurações para o gerenciamento de snapshots de tabela.

**Como configurar o gerenciamento de snapshots usando a AWS CLI**  
O exemplo a seguir definirá `MinimumSnapshots` como 10 e `MaximumSnapshotAge` como 2.500 horas usando a API `PutTableMaintenanceConfiguration`.  

```
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}}}'
```

**Como desabilitar o gerenciamento de snapshots usando a AWS CLI**  
O exemplo a seguir desabilitará o gerenciamento de snapshots usando a API `PutTableMaintenanceConfiguration`.  

```
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}}}'
```

Para ter mais informações, consulte [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) na *Referência de comandos da AWS CLI*.

## Considerações e limitações
<a name="s3-tables-considerations-see-more"></a>

Para saber mais sobre considerações e limites adicionais para compactação e gerenciamento de snapshots, consulte [Considerações e limitações para trabalhos de manutenção](s3-tables-considerations.md).

**nota**  
O serviço Tabelas do S3 aplica o tamanho padrão do grupo de linhas de parquets de 128 MB.