Удаление партиций
Предыстория
Партиционирование задается для таблицы во время ее первоначального определения с помощью ключевого слова PARTITION BY
. Этот ключевой слово может содержать SQL-выражение для любых колонок, результаты которого определяют, в какую партицию будет отправлена строка.
Части данных логически связаны с каждой партицией на диске и могут запрашиваться отдельно. В приведенном ниже примере мы партиционируем таблицу posts
по годам, используя выражение toYear(CreationDate)
. Когда строки вставляются в ClickHouse, это выражение будет оценено для каждой строки и будет направлено в соответствующую партицию, если она существует (если строка является первой для года, партиция будет создана).
Читайте о настройке выражения партиции в разделе Как установить выражение партиции.
В ClickHouse пользователи должны, прежде всего, рассматривать партиционирование как функцию управления данными, а не как технику оптимизации запросов. Разделяя данные логически на основе ключа, каждая партиция может обрабатываться независимо, т.е. удаляться. Это позволяет пользователям перемещать партиции, и таким образом подмножества, между уровнями хранения эффективно по времени или истекать данные/эффективно удалять из кластера.
Удаление партиций
ALTER TABLE ... DROP PARTITION
предоставляет экономичный способ удалить целую партицию.
Этот запрос помечает партицию как неактивную и полностью удаляет данные, примерно за 10 минут. Запрос реплицируется — он удаляет данные на всех репликах.
В примере ниже мы удаляем посты из 2008 года для ранее созданной таблицы, удаляя соответствующую партицию.