

# OPTIMIZE
<a name="optimize-statement"></a>

Otimize as linhas em uma tabela do Apache Iceberg ao gravar novamente arquivos de dados em um layout mais otimizado com base em no tamanho e no número de arquivos excluídos associados.

**nota**  
`OPTIMIZE` é transacional e é compatível somente para tabelas do Apache Iceberg.

## Sintaxe
<a name="optimize-statement-syntax"></a>

O resumo da sintaxe a seguir mostra como otimizar o layout de dados para uma tabela Iceberg.

```
OPTIMIZE [db_name.]table_name REWRITE DATA USING BIN_PACK
  [WHERE predicate]
```

**nota**  
Somente colunas de partição são permitidas no *predicado* da cláusula `WHERE`. Especificar uma coluna sem partição fará com que a consulta falhe. 

A ação de compactação é cobrada pela quantidade de dados verificados durante o processo de regravação. A ação `REWRITE DATA` usa predicados para selecionar arquivos que contenham linhas iguais. Se alguma linha no arquivo corresponder ao predicado, o arquivo será selecionado para otimização. Assim, para controlar o número de arquivos afetados pela operação de compactação, você pode especificar uma cláusula `WHERE`.

## Configurar propriedades de compactação
<a name="optimize-statement-configuring-compaction-properties"></a>

Para controlar o tamanho dos arquivos a serem selecionados para compactação e o tamanho do arquivo resultante após a compactação, você pode usar parâmetros de propriedade de tabela. Você pode usar o comando [ALTER TABLE SET TBLPROPERTIES](querying-iceberg-alter-table-set-properties.md) para configurar as [propriedades de tabela](querying-iceberg-creating-tables.md#querying-iceberg-table-properties) a seguir.

## Recursos adicionais
<a name="optimize-statement-additional-resources"></a>

[Otimizar tabelas do Iceberg](querying-iceberg-data-optimization.md)