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