max_streams_for_files_processing_in_cluster_functions
Se não for zero, limita o número de threads que leem dados de arquivos em funções de tabela de cluster.max_streams_for_merge_tree_reading
Se não for zero, limita o número de streams de leitura da tabela MergeTree.max_streams_for_union_step
Limita o número de streams de dados ativos simultaneamente em uma etapaUNION (aplica-se a UNION ALL, a UNION DISTINCT, porque é implementado por meio de uma etapa UNION ALL seguida de uma etapa DISTINCT, e a uma leitura de tabela Merge com réplicas paralelas baseadas em plano, que é expandida em uma união das leituras de suas tabelas subjacentes). Quando uma consulta UNION tem muitas subconsultas, todas abrem seus buffers de leitura ao mesmo tempo, o que faz o uso de memória ser proporcional ao número de subconsultas. Essa configuração insere processadores Concat para afunilar o pipeline, de modo que no máximo essa quantidade de streams fique ativa ao mesmo tempo, reduzindo drasticamente o pico de memória. O limite real é o valor mínimo entre este valor e max_threads * max_streams_for_union_step_to_max_threads_ratio (se qualquer um deles for 0, ele será ignorado). Quando ambos são 0, nenhum afunilamento é aplicado. O limite também não é aplicado quando o plano da consulta exige que cada fluxo de saída do UNION permaneça ordenado individualmente (por exemplo, quando a otimização de leitura em ordem é aplicada em todo o UNION); nesse caso, a preservação da ordenação tem precedência e o afunilamento é ignorado.
max_streams_for_union_step_to_max_threads_ratio
Essa razão multiplicada pormax_threads determina o limite de streams ativos simultaneamente em uma etapa UNION (aplica-se tanto a UNION ALL quanto a UNION DISTINCT). O limite real é o valor mínimo entre esse valor calculado e max_streams_for_union_step (se qualquer um dos dois for 0, ele será ignorado). Por exemplo, com max_threads = 8 e essa razão definida como 1, no máximo 8 streams estarão ativos. Defina como 0 para desativar esse limite baseado em razão. Assim como max_streams_for_union_step, o limite não é aplicado quando o plano de consulta exige que cada stream de saída do UNION permaneça ordenado individualmente.
max_streams_multiplier_for_merge_tables
Solicita mais streams ao ler de uma Merge table. Os streams serão distribuídos entre as tabelas usadas pela Merge table. Isso permite uma distribuição mais uniforme do trabalho entre as threads e é especialmente útil quando as tabelas mescladas diferem em tamanho. O número de streams que leem simultaneamente também é limitado por esse multiplicador — exceto no caso de uma leitura de tabelaMerge com réplicas paralelas baseadas em plano (parallel_replicas_allow_merge_tables), que é expandida em uma união das leituras de suas tabelas subjacentes e, portanto, é limitada por max_streams_for_union_step, como qualquer outra união.