Основная проблема 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, это другая история, и есть более простые решения.