Перейти к основному содержанию
В ClickHouse есть несколько способов удаления данных, и у каждого из них свои преимущества и особенности производительности. Выбирайте подходящий метод в зависимости от вашей модели данных и объема данных, который нужно удалить. Ниже приведена сводка различных способов удаления данных в ClickHouse:

Легковесные удаления

При легковесном удалении строки сразу помечаются как удалённые, поэтому они автоматически исключаются из всех последующих запросов SELECT. Физическое удаление этих строк происходит позже, во время обычных циклов слияния, и потому требует меньше операций I/O. В результате данные могут в течение неопределённого времени фактически оставаться в хранилище и быть лишь помеченными как удалённые. Если вам нужно гарантированно удалить данные, рассмотрите указанную выше команду мутации.
Удаление больших объёмов данных с помощью легковесного оператора DELETE также может негативно сказаться на производительности запросов SELECT. Кроме того, эта команда несовместима с таблицами, содержащими проекции. Обратите внимание: в ходе этой операции для пометки удалённых строк используется мутация (добавляется столбец _row_exists), что приводит к некоторым накладным расходам на I/O. В целом легковесные удаления предпочтительнее мутаций, если допустимо, что удалённые данные будут оставаться на диске (например, при отсутствии требований compliance). Однако этого подхода всё же следует избегать, если нужно удалить все данные. Подробнее о легковесных удалениях.

Удаляющие мутации

Удаляющие мутации можно выполнить командой ALTER TABLE ... DELETE, например.
Они могут выполняться либо синхронно (по умолчанию для нереплицируемых таблиц), либо асинхронно (это определяется настройкой mutations_sync). Это крайне ресурсоемкие по вводу-выводу операции: переписываются все части, соответствующие выражению WHERE. В этом процессе нет атомарности — части заменяются мутировавшими частями сразу после их готовности, и SELECT-запрос, который начинает выполняться во время мутации, увидит данные как из уже измененных частей, так и из тех, которые еще не были изменены. Пользователи могут отслеживать ход выполнения через таблицу system.mutations. Это операции с высокой нагрузкой на I/O, поэтому их следует использовать с осторожностью, так как они могут повлиять на производительность SELECT в кластере. Подробнее о удаляющих мутациях.

TRUNCATE TABLE

Если нужно удалить все данные из таблицы, используйте команду TRUNCATE TABLE, приведённую ниже. Это малозатратная операция.
Подробнее см. TRUNCATE TABLE.

Удаление партиции

Если для данных задан собственный ключ партиционирования, партиции можно эффективно удалять. Избегайте партиционирования с высокой мощностью.
Подробнее см. DROP PARTITION.

Дополнительные материалы

Последнее изменение 1 июля 2026 г.