для запроса max_threads=1, в query_log проверяю что Settings['max_threads'] действительно равно 1. Но при этом length(thread_ids) равно 102. Ожидал увидеть 1 или как хоть 1 на каждый этап пайплайна. Через query_thread_log вижу что почти все потоки читают данные(ThreadPoolRead). Сам пайплайн такой:
(Expression)
ExpressionTransform
(Limit)
Limit
(Aggregating)
AggregatingTransform
(Expression)
ExpressionTransform
(ReadFromMergeTree)
Concat 9 → 1
MergeTreeInOrder × 9 0 → 1
В запросе есть where worker in []. Полагаю проблема в нем. Почему кликхаус использует больше одного потока ?
Интересно. Мы когда делали https://github.com/ClickHouse/ClickHouse/pull/37285 с таким не сталкивались, max_threads вполне работает для запросов (но не работает для внешних взаимодействий).
Да, стоит добавить что это local db, вне кластера. Но поставить max_distributed_connections в 1 пробовал тоже. Так же добавлял limit(я знаю максимум строк). Версия 23.4.2.11. Так же нашел нечто похожее в issue, но помеченное как "unexpected behaviour" https://github.com/ClickHouse/ClickHouse/issues/48073. soft threads пока не менял, но тоже попробую. А еще это ReplacingMergeTree.
имхо все равно работает только один поток одновременно. запустите этот запрос в clickhouse-benchmark -с 1 и посмотрите сколько cpu используется, вангую будет 1
Обсуждают сегодня