max_threads
WHERE e pré-agregar para GROUP BY em paralelo usando pelo menos o número de threads definido em ‘max_threads’, então ‘max_threads’ será usado.
Para consultas concluídas rapidamente por causa de um LIMIT, você pode definir um valor menor para ‘max_threads’.
Por exemplo, se o número necessário de entradas estiver localizado em cada bloco e max_threads = 8, então 8 blocos serão recuperados, embora bastasse ler apenas um.
Quanto menor o valor de max_threads, menor o consumo de memória.
A configuração max_threads, por padrão, corresponde ao número de threads de hardware (número de CPU cores) disponíveis para o ClickHouse.
Como caso especial, em processadores x86 com menos de 32 CPU cores e SMT (por exemplo, Intel HyperThreading), o ClickHouse usa por padrão o número de núcleos lógicos (= 2 x número de núcleos físicos).
Sem SMT (por exemplo, Intel HyperThreading), isso corresponde ao número de CPU cores.
Para usuários do ClickHouse Cloud, o valor padrão será exibido como auto(N), em que N corresponde ao tamanho de vCPU do seu serviço, por exemplo, 2vCPU/8GiB, 4vCPU/16GiB etc.
Consulte a tab de configurações no console do Cloud para ver uma lista de todos os tamanhos de serviço.
max_threads_for_indexes
max_threads_min_free_memory_per_thread
max_threads quando o servidor está sob pressão de memória, para evitar iniciar consultas com alto paralelismo que provavelmente atingiriam o limite de memória.
A memória livre é calculada como max_server_memory_usage do servidor menos a memória atualmente rastreada pelo memory tracker global. Se essa memória livre for menor que max_threads multiplicado por esse valor, max_threads será reduzido ao maior N tal que N * value <= free_memory, com mínimo de 1.
Defina como 0 para desabilitar esse limite.
Por exemplo, com o valor padrão de 1 GiB e 32 GiB de memória livre, max_threads fica limitado a 32; com 1 GiB de memória livre, ele é reduzido para 1.
Essa configuração se aplica ao paralelismo no lado da leitura (SELECT, UNION, INTERSECT/EXCEPT e o lado SELECT de INSERT ... SELECT). Para o lado da escrita, consulte max_insert_threads_min_free_memory_per_thread.