

# Otimizar tabelas do Iceberg
<a name="querying-iceberg-data-optimization"></a>

O Athena fornece vários recursos de otimização para melhorar a performance das consultas nas tabelas do Apache Iceberg. À medida que os dados se acumulam, as consultas podem se tornar menos eficientes devido ao aumento da sobrecarga de processamento de arquivos e ao custo computacional de aplicar exclusões no nível de linha armazenadas nos arquivos de exclusão do Iceberg. Para enfrentar esses desafios, o Athena é compatível com os operadores manuais de compactação e vacuum para otimizar a estrutura da tabela. O Athena também trabalha com estatísticas do Iceberg para permitir a otimização de consultas com base em custos e a indexação de colunas do Parquet para o descarte preciso dos dados durante a execução da consulta. Esses recursos trabalham juntos para reduzir o tempo de execução da consulta, minimizar a verificação de dados e reduzir os custos. Este tópico descreve como usar esses recursos de otimização para manter consultas de alta performance em suas tabelas do Iceberg.

## OPTIMIZE
<a name="querying-iceberg-data-optimization-rewrite-data-action"></a>

A ação de compactação `OPTIMIZE table REWRITE DATA` regrava os arquivos de dados em um layout mais otimizado com base no tamanho e no número de delete files associados. Para obter detalhes sobre a sintaxe e as propriedades da tabela, consulte [OPTIMIZE](optimize-statement.md).

### Exemplo
<a name="querying-iceberg-data-optimization-example"></a>

O exemplo a seguir mescla delete files em arquivos de dados e produz arquivos próximos ao tamanho do arquivo de destino, em que o valor de `category` é `c1`.

```
OPTIMIZE iceberg_table REWRITE DATA USING BIN_PACK
  WHERE category = 'c1'
```

## VACUUM
<a name="querying-iceberg-vacuum"></a>

`VACUUM` executa a [expiração do snapshot](https://iceberg.apache.org/docs/latest/spark-procedures/#expire_snapshots) e a [remoção de arquivos órfãos](https://iceberg.apache.org/docs/latest/spark-procedures/#remove_orphan_files). Essas ações reduzem o tamanho dos metadados e removem os arquivos que não estão no estado atual da tabela e que também são mais antigos do que o período de retenção especificado para a tabela. Para obter detalhes sobre a sintaxe, consulte [VACUUM](vacuum-statement.md).

### Exemplo
<a name="querying-iceberg-vacuum-example"></a>

O exemplo a seguir usa uma propriedade de tabela para configurar a tabela `iceberg_table` para reter os últimos três dias de dados e, em seguida, usa `VACUUM` para expirar os snapshots antigos e remover os arquivos órfãos da tabela.

```
ALTER TABLE iceberg_table SET TBLPROPERTIES (
  'vacuum_max_snapshot_age_seconds'='259200'
)

VACUUM iceberg_table
```

## Usar estatísticas de tabelas do Iceberg
<a name="querying-iceberg-data-optimization-statistics"></a>

O otimizador baseado em custos do Athena usa estatísticas do Iceberg para produzir planos de consulta ideais. Quando as estatísticas são geradas para suas tabelas do Iceberg, o Athena usa automaticamente essas informações para tomar decisões inteligentes sobre a ordenação de junções, os filtros e o comportamento de agregação, geralmente melhorando a performance das consultas e reduzindo custos.

As estatísticas do Iceberg são ativadas por padrão quando você usa as Tabelas do S3. Para outras tabelas do Iceberg, o Athena usa a propriedade `use_iceberg_statistics` da tabela para determinar se as estatísticas devem ser usadas para a otimização baseada em custos. Para começar, consulte [Otimizar a performance da consulta usando estatísticas de coluna](https://docs.aws.amazon.com//glue/latest/dg/column-statistics.html) no *Guia do usuário do AWS Glue*, ou use o [console do Athena](https://docs.aws.amazon.com/athena/latest/ug/cost-based-optimizer.html) para gerar estatísticas sob demanda em suas tabelas do Iceberg.

## Usar indexação de colunas do Parquet
<a name="querying-iceberg-data-optimization-parquet-column-indexing"></a>

A indexação de colunas do Parquet possibilita que o Athena realize um descarte de dados mais preciso durante a execução da consulta, aproveitando as estatísticas mínimo/máximo no nível da página, além das estatísticas no nível do grupo de linhas. Isso permite que o Athena pule páginas desnecessárias em grupos de linhas, reduzindo significativamente a quantidade de dados verificados e melhorando a performance das consultas. Ele funciona melhor para consultas com predicados de filtro seletivo em colunas classificadas, melhorando o tempo de execução e a eficiência da verificação de dados, ao mesmo tempo em que reduz a quantidade de dados que a Athena precisa ler no Amazon S3.

O Athena usará índices de coluna do Parquet por padrão com Tabelas do S3 se os índices de coluna estiverem presentes nos arquivos Parquet subjacentes. Para outras tabelas do Iceberg, o Athena usa a propriedade `use_iceberg_parquet_column_index` para determinar se deve utilizar os índices das colunas no arquivo Parquet. Defina essa propriedade da tabela usando o console do AWS Glue ou a API `UpdateTable`.