

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

根据数据文件的大小和相关删除文件的数量，将数据文件重写为更优化的布局，从而优化 Apache Iceberg 表中的行。

**注意**  
`OPTIMIZE` 是事务性的，仅支持用于 Apache Iceberg 表。

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

以下语法摘要显示了如何优化 Iceberg 表的数据布局。

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

**注意**  
`WHERE` 子句*谓词*中只允许使用分区列。指定非分区列将导致查询失败。

压缩操作按重写过程中扫描的数据量收费。`REWRITE DATA` 操作使用谓词选择包含匹配行的文件。如果文件中的任何行与谓词匹配，则会选择该文件进行优化。因此，要控制受压缩操作影响的文件数量，可以指定 `WHERE` 子句。

## 配置压缩属性
<a name="optimize-statement-configuring-compaction-properties"></a>

要控制要选择以进行压缩的文件的大小以及压缩后生成的文件大小，可以使用表属性参数。您可以使用 [ALTER TABLE SET TBLPROPERTIES](querying-iceberg-alter-table-set-properties.md) 命令配置相关的[表属性](querying-iceberg-creating-tables.md#querying-iceberg-table-properties)。

## 其他资源
<a name="optimize-statement-additional-resources"></a>

[优化 Iceberg 表](querying-iceberg-data-optimization.md)