clickhouse объединяет один раздел за раз - PullRequest
0 голосов
/ 10 февраля 2020

Как заставить ClickHouse объединять только один раздел за один раз, когда я запускаю оптимизацию таблицы **** final (без указания раздела 201304, а затем 201305 и его последовательного запуска)?

Я использую CollapsingMergeTree. Он использует много оперативной памяти для объединения нескольких разделов и уничтожения службы / машины.

1 Ответ

1 голос
/ 10 февраля 2020

Основная проблема optimize final (таблица или раздел не имеет значения) в том, что он полностью перезаписывает / объединяет раздел, даже если раздел содержит только 1 часть, что является чрезмерным в 99,9999% случаев !!!! Он повторно объединяет старые данные, которые были окончательно объединены уже !!!

Это необходимо, потому что иногда нужно свернуть строки (дубликаты), вставленные с одной вставкой в ​​раздел с вечно единственной частью. Это очень и очень редкая необходимость.

Поэтому я рекомендую запустить оптимизацию final для разделов, имеющих более одной части. Вы можете использовать что-то вроде этого

select concat('optimize table ',database, '.','\`', table, '\` partition ',partition , ' final;')
from system.parts
where active and (engine like '%ReplacingMergeTree' or  engine like '%CollapsingMergeTree')
group by database,table,partition
having   count()>1

PS: Если вы используете GraphiteMergeTree, это другая история, и есть более простые решения.

...