ClickHouse/docs/ru/sql-reference/statements/optimize.md

35 lines
2.5 KiB
Markdown
Raw Normal View History

---
toc_priority: 47
toc_title: OPTIMIZE
---
# OPTIMIZE {#misc_operations-optimize}
2021-03-28 11:11:56 +00:00
Запрос пытается запустить внеплановый мёрж кусков данных для таблиц.
!!! warning "Внимание"
Запрос `OPTIMIZE` не может устранить причину появления ошибки `Too many parts`.
**Синтаксис**
``` sql
2021-03-28 11:11:56 +00:00
OPTIMIZE TABLE [db.]name [ON CLUSTER cluster] [PARTITION partition | PARTITION ID 'partition_id'] [FINAL] [DEDUPLICATE [BY expression]]
```
2021-03-28 11:11:56 +00:00
Может применяться к таблицам семейства [MergeTree](../../engines/table-engines/mergetree-family/mergetree.md),[MaterializedView](../../engines/table-engines/special/materializedview.md) и [Buffer](../../engines/table-engines/special/buffer.md). Другие движки таблиц не поддерживаются.
2021-03-28 11:11:56 +00:00
В случае, когда запрос `OPTIMIZE` применяется к таблицам семейства [ReplicatedMergeTree](../../engines/table-engines/mergetree-family/replication.md), ClickHouse создаёт задачу на мёрж и ожидает её исполнения на всех узлах (если активирована настройка `replication_alter_partitions_sync`).
2020-10-13 17:23:29 +00:00
- Если `OPTIMIZE` не выполняет мёрж по любой причине, ClickHouse не оповещает об этом клиента. Чтобы включить оповещения, используйте настройку [optimize_throw_if_noop](../../operations/settings/settings.md#setting-optimize_throw_if_noop).
- Если указать `PARTITION`, то оптимизация выполняется только для указанной партиции. [Как задавать имя партиции в запросах](alter/index.md#alter-how-to-specify-part-expr).
- Если указать `FINAL`, то оптимизация выполняется даже в том случае, если все данные уже лежат в одном куске. Кроме того, слияние является принудительным, даже если выполняются параллельные слияния.
- Если указать `DEDUPLICATE`, то произойдет схлопывание полностью одинаковых строк (сравниваются значения во всех колонках), имеет смысл только для движка MergeTree.
2021-03-28 11:11:56 +00:00
### BY {#by-expression}