тыка? Я вчера ускорил таким образом один запрос более чем в 10 раз, а сегодня другой запрос наоборот в 10 раз медленнее стал. Не понимаю как он работает.
А можно запросы посмотреть? Очень интересно
Ускорился такой: select t.ID , anyLast(t.field1) as field1 , anyLast(t.field2) as field2 ... , anyLast(t.fieldN) as fieldN from ReplacingMT t group by t.ID settings optimize_aggregation_in_order = 1 ReplacingMT - соответственно, ReplacingMergeTree с ключом ID А такой замедлился: select t.ID , argMaxMerge(t.field1state) as field1 , toDate(max(t.maxdt), 'Europe/Moscow') as dt from AggregatingMT t group by t.ID settings optimize_aggregation_in_order = 1 AggregatingMT - соответственно, AggregatingMergeTree(field1state AggregateFunction(argMax, Int64, Int32), maxdt SimpleAggregateFunction(max, Int32)) с ключом ID
optimize_aggregation_in_order это не ускорение запросов, а про использование памяти, это стриминг и если кардинальность очень большая, например 100 миллионов, миллиад, то параметр сокращает использование памяти например в 1000 раз, т.е. иногда без него вообще невозможно выполнить запрос, потому что нужен TB озу.
зависит от кол-ва строк. наверняка в ReplacingMT очень много строк
200млн в ускорившейся (и да, если без фильтров её группировать, то она упиралась в память или требовала группировок на диске, а с оптимизацией сгруппировалась без фильтров) 420млн в замедлившейся
странно, может баг. а сколько строк на один ID в той и этой таблицах в среднем?
ну это было на 20.8, прямо сейчас её на 21.11 обновляем, попозже смогу ответить и проверить на новой версии
Обсуждают сегодня