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

Оценка занимаемого объема данных в ClickHouse

Скачайте и выполните скрипт оценки объема данных в ClickHouse:

wget https://docs.mitigator.ru/collector/v24.10/maintenance/reduce_db/utilization.sql && \
docker-compose exec -T clickhouse clickhouse-client -mn < utilization.sql
Информация

Выполнение скрипта может занять продолжительное время.

Скрипт рассчитает следующие показатели:

  • min_date - дата и время, когда была сохранена первая запись flow;
  • flow_quantity - количество записей flow, сохраненных в базе;
  • single_flow_size - средний размер одной записи flow в байтах;
  • max_flow_size - максимально доступный объем для хранения flow в байтах;
  • max_flow_quantity - максимально доступное количество flow, которые можно сохранить в базе;
  • max_flow_rate - наблюдаемая максимальная скорость записи flow в секунду;
  • avg_flow_rate - наблюдаемая средняя скорость записи flow в секунду;
  • ttl_for_max_flow_rate - рекомендуемое время жизни записей при наблюдаемой максимальной скорости записи;
  • ttl_for_avg_flow_rate - рекомендуемое время жизни записей при наблюдаемой средней скорости записи.
  1. На основе рассчитанных показателей выберите новые периоды рекомпрессии данных и время жизни записей.
ПараметрМетодика расчетаЗначение по умолчанию
Первый период рекомпресииЖелаемый период работы с оперативными данными. Меньше рекомендуемого времени жизни записей при максимальной скорости1 месяц
Второй период рекомпресии0.5 * рекомендуемое время жизни записей при средней скорости6 месяцев
Время жизни записейРекомендуемое время жизни записей при средней скорости1 год

Процедура настройки периодов рекомпресии и времени жизни записей

  1. Оцените занимаемый объем данных в ClickHouse и выберите новые периоды рекомпресии и время жизни записей.

  2. Проверьте, что количество записей flow, сохраненных в базе, не превышает максимально доступное количество flow, которые можно сохранить в базе. При превышении удалите старые записи вручную.

  3. Скачайте скрипт настройки периодов рекомпресии и времени жизни.

    wget https://docs.mitigator.ru/collector/v24.10/maintenance/reduce_db/volume_reduction.sql
  4. Отредактируйте скрипт, указав новые периоды для всех таблиц.

  5. Выполните скрипт.

    docker-compose exec -T clickhouse clickhouse-client -mn < volume_reduction.sql
Информация

Новые периоды рекомпресии и время жизни записей будут применены в течение 4 часов. В момент применения новых параметров могут быть большие нагрузки на CPU и увеличенное потребление диска. Это не повлияет на обработку новых данных.

Ручное удаление данных в ClickHouse

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

docker-compose exec clickhouse clickhouse-client --query="ALTER TABLE collector.flows DELETE WHERE timestamp_sec < toUnixTimestamp('1970-01-01');" && \
docker-compose exec clickhouse clickhouse-client --query="ALTER TABLE collector.rate_metrics DELETE WHERE date < toDateTime('1970-01-01');" && \
docker-compose exec clickhouse clickhouse-client --query="ALTER TABLE collector.snmp_counters DELETE WHERE date < toDateTime('1970-01-01');"

где 1970-01-01 – требуемая дата.