Перейти к основному содержимому
Перейти к основному содержимому

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

Предыстория

Партиционирование задается для таблицы во время ее первоначального определения с помощью ключевого слова PARTITION BY. Этот ключевой слово может содержать SQL-выражение для любых колонок, результаты которого определяют, в какую партицию будет отправлена строка.

Части данных логически связаны с каждой партицией на диске и могут запрашиваться отдельно. В приведенном ниже примере мы партиционируем таблицу posts по годам, используя выражение toYear(CreationDate). Когда строки вставляются в ClickHouse, это выражение будет оценено для каждой строки и будет направлено в соответствующую партицию, если она существует (если строка является первой для года, партиция будет создана).

Читайте о настройке выражения партиции в разделе Как установить выражение партиции.

В ClickHouse пользователи должны, прежде всего, рассматривать партиционирование как функцию управления данными, а не как технику оптимизации запросов. Разделяя данные логически на основе ключа, каждая партиция может обрабатываться независимо, т.е. удаляться. Это позволяет пользователям перемещать партиции, и таким образом подмножества, между уровнями хранения эффективно по времени или истекать данные/эффективно удалять из кластера.

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

ALTER TABLE ... DROP PARTITION предоставляет экономичный способ удалить целую партицию.

Этот запрос помечает партицию как неактивную и полностью удаляет данные, примерно за 10 минут. Запрос реплицируется — он удаляет данные на всех репликах.

В примере ниже мы удаляем посты из 2008 года для ранее созданной таблицы, удаляя соответствующую партицию.