Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

В чем разница между OPTIMIZE FINAL и FINAL?

OPTIMIZE FINAL — это DDL-команда, которая физически и необратимо реорганизует и оптимизирует данные на диске. Она физически объединяет data parts в таблицах MergeTree, одновременно выполняя дедупликацию данных за счет удаления дублирующихся строк из хранилища.

FINAL — это модификатор на этапе выполнения запроса, который возвращает дедуплицированные результаты без изменения структуры хранимых данных. Он применяет логику слияния при чтении. Его действие временно и влияет только на результат текущего запроса.

Пользователям часто рекомендуют избегать OPTIMIZE FINAL, поскольку он создает существенную нагрузку на производительность, однако не стоит путать его с FINAL. Во многих случаях необходимо использовать FINAL, чтобы получить результаты без дубликатов, особенно при использовании табличных движков, таких как ReplacingMergeTree, которые могут содержать дублирующиеся строки, еще не замещенные в ходе фонового процесса слияния, происходящего со временем.

Таблица ниже суммирует ключевые различия:

Aspect OPTIMIZE FINAL FINAL
Тип DDL-команда Модификатор запроса
Эффект Постоянная оптимизация хранилища Временная дедупликация на этапе выполнения запроса
Производительность Высокая стоимость один раз, затем запросы быстрее Меньшая стоимость одного запроса, но повторяется для каждого запроса
Изменение данных Да — физически изменяет хранилище Нет — операция только для чтения
Сценарий использования Периодическое обслуживание/оптимизация Дедуплицированные запросы в реальном времени

Когда использовать каждый вариант

Используйте OPTIMIZE FINAL, когда:

  • Вы хотите надолго повысить производительность запросов
  • Вы можете позволить себе разовые затраты на оптимизацию
  • Вы выполняете периодическое обслуживание таблиц
  • Вы хотите физически удалить дубликаты данных

Используйте FINAL, когда:

  • Вам сразу нужны дедуплицированные результаты
  • Вы не можете ждать завершения постоянной оптимизации или не хотите её выполнять
  • Дедуплицированные данные нужны вам лишь время от времени
  • Вы работаете с данными, которые часто меняются

Оба варианта — полезные инструменты, но в ClickHouse они решают разные задачи в рамках стратегии дедупликации.

Navigation