Построчная вставка из Kafka привела к ошибке «too many parts»
Сервис доставки событий пишет в ClickHouse каждое событие отдельным INSERT, поток — около 10 тысяч событий в минуту. Через сутки после запуска: вставки стали отбиваться ошибкой о слишком большом числе кусков, SELECT-ы по таблице заметно деградировали, фоновые слияния не успевают.
Что нужно изменить? Выберите два варианта.
правильных вариантов может быть несколько
- Накапливать события на стороне сервиса и вставлять батчами по десятки тысяч строк или раз в несколько секунд — по тому, что наступит раньше.
- Поднять серверный порог на число кусков в таблице, чтобы вставки перестали отбиваться, пока фоновые слияния догоняют поток.
- Переложить батчирование на ClickHouse: читать поток движком Kafka с материализованным представлением в целевую таблицу либо использовать режим асинхронной вставки, который сам собирает буфер.
- Выполнять OPTIMIZE TABLE ... FINAL после каждой пачки вставок, чтобы куски сливались сразу, а не ждали фонового слияния.
- Создавать отдельную таблицу на каждый день и писать в свежую, а старые отцеплять и объединять представлением — так число кусков в активной таблице будет расти медленнее.
