Использую clickhouse на 1 сервере (ssd диски).
Имеются таблицы AggregatedMergeTree в которые делаются вставки раз в 5 минут, около 5 млн записей.
И так же таблицы CollapsingMergeTree в которые так же около 4-5 млн записей в 5 мин делается по крону.
Столкнулся с проблемой производительности CPU - load порядка 80%. AMD EPYC 7302P 16-Core (32 threads) но на сервере нет большого количества чтений, основное это вставка записей. Но почему-то грузится CPU. Уточню что на этих таблицах где идет вставка есть еще 3-4 materializedView. проблемы прямо появились с нагрузкой при добавлении таблицы
CollapsingMergeTree - там вставка делается по 300К - 1000К записей за раз, чтобы уменьшить нагрузку, бо было по 10К. За одну отработку крона может быть от 3 до 10 млн записей.
Так вот вопрос, какое оптимальное кол-во записей для вставки за 1 запрос выбрать, чтобы уменьшить cpu load? Данные в таблице
CollapsingMergeTree имеют ключ ORDER BY (type, event, t_event, source_id, campaign_id, creative_id, dsp_creative_id, subscription_id, id) хотя основное поле для слияния дублей это id (оно уникально) - остальные нужны для создания индекса и чтобы быстрее выборка была по условию этих полей. Это нормальный подход? или же нужно бы оставить только поле id в order by?
коротко про поля:
type uint8 - 2 значения
event uint8 - 3 значения
t_event datetime
source uint32 - 10-20К значений
campaign_id uint32 - 5к значений
creative_id
uint32 - 10к значений
dsp_creative_id
uint32 - 30к значений
subscription_id
uint32 - много разных
id uint64 - много разных - уникальный id
Еще вопрос: если данные зарание перед вставкой отсортировать по условию
ORDER BY (type, event, t_event, source_id, campaign_id, creative_id, dsp_creative_id, subscription_id, id) - уменьшиться ли нагрузка на CPU при вставке? имеет ли смысл?
Уменьшиться ли нагрузка CPU при вставках если заменить движок
CollapsingMergeTree на MergeTree?