Уменьшение объема хранимых данных

Если необходимо уменьшить размер базы, можно удалить старые записи, выполнив команду:

docker-compose exec clickhouse clickhouse-client --query="ALTER TABLE collector.netflow_v5 DELETE WHERE timestamp_sec < toUnixTimestamp('1970-01-01');"
docker-compose exec clickhouse clickhouse-client --query="ALTER TABLE collector.netflow_v9 DELETE WHERE timestamp_sec < toUnixTimestamp('1970-01-01');"
docker-compose exec clickhouse clickhouse-client --query="ALTER TABLE collector.ipfix DELETE WHERE export_time < toUnixTimestamp('1970-01-01');"
docker-compose exec clickhouse clickhouse-client --query="ALTER TABLE collector.sflow DELETE WHERE timestamp_sec < toUnixTimestamp('1970-01-01');"

Здесь 1970-01-01 – требуемая дата.

Если необходимо изменить время хранения flow, выполните (скрипт) командой:

docker-compose exec -T clickhouse clickhouse-client -mn < volume_reduction.sql

Данный пример скрипта предполагает дальнейшую модификацию под собственные нужды. Текущий вариант скрипта:

  • удаляет все данные старше тех, которые собраны сегодня.
  • изменяет время жизни данных на 1 день (time to live, TTL).

Скрипт выполняется единожды, далее записи в базе старше одного дня будут удаляться автоматически. Для изменения времени хранения flow следует изменить toIntervalDay(1), где 1 – количество дней хранения. Опционально можно изменить размер раздела с помощью PARTITION BY toYYYYMMDD(date).