Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

настройки сеанса max_threads_*

Эти настройки доступны в system.settings и автоматически сгенерированы на основе исходного кода.

max_threads

Тип
MaxThreads
По умолчанию
auto(N)

Максимальное количество потоков обработки запроса, за исключением потоков, используемых для получения данных с удалённых серверов (см. параметр 'max_distributed_connections').

Этот параметр применяется к потокам, которые параллельно выполняют одни и те же стадии конвейера обработки запроса. Например, при чтении из таблицы, если можно параллельно задействовать как минимум число потоков, равное 'max_threads', для вычисления выражений с функциями, фильтрации с помощью WHERE и предварительной агрегации для GROUP BY, то будут использованы 'max_threads'.

Для запросов, которые быстро завершаются из-за LIMIT, можно задать меньшее значение 'max_threads'. Например, если нужное количество записей находится в каждом блоке и max_threads = 8, то будут считаны 8 блоков, хотя достаточно было бы прочитать только один. Чем меньше значение max_threads, тем меньше потребляется памяти.

По умолчанию настройка max_threads соответствует числу аппаратных потоков (количеству ядер CPU), доступных ClickHouse. В особом случае для процессоров x86 с менее чем 32 ядрами CPU и SMT (например, Intel HyperThreading) ClickHouse по умолчанию использует количество логических ядер (= 2 x число физических ядер).

При отсутствии SMT это соответствует количеству ядер CPU.

Для пользователей ClickHouse Cloud значение по умолчанию отображается как auto(N), где N соответствует размеру vCPU вашего сервиса, например 2vCPU/8GiB, 4vCPU/16GiB и т. д. Список всех размеров сервиса см. на вкладке настроек в консоли Cloud.

max_threads_for_indexes

Тип
UInt64
По умолчанию
0

Максимальное количество потоков, обрабатывающих индексы.

max_threads_min_free_memory_per_thread

Тип
UInt64
По умолчанию
1073741824
История версий
ВерсияЗначение по умолчаниюКомментарий
26.51073741824Новая настройка для ограничения числа потоков на основе объёма доступной свободной памяти

Уменьшает max_threads, когда сервер испытывает нехватку памяти, чтобы не запускать сильно распараллеленные запросы, которые с высокой вероятностью достигнут лимита памяти.

Свободная память вычисляется как max_server_memory_usage сервера за вычетом объёма памяти, который в данный момент отслеживается глобальным трекером памяти. Если этой свободной памяти меньше, чем max_threads, умноженное на это значение, max_threads уменьшается до наибольшего N, такого что N * value <= free_memory, с минимумом 1.

Установите 0, чтобы отключить это ограничение.

Например, при значении по умолчанию 1 GiB и 32 GiB свободной памяти значение max_threads ограничивается 32; при 1 GiB свободной памяти оно снижается до 1.

Эта настройка применяется к параллелизму на стороне чтения (SELECT, UNION, INTERSECT/EXCEPT и часть SELECT в INSERT ... SELECT). Для стороны записи см. max_insert_threads_min_free_memory_per_thread.

Navigation