> ## Documentation Index
> Fetch the complete documentation index at: https://clickhouse.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# configurações de sessão max_streams_*

> Configurações de sessão do ClickHouse no grupo max_streams_* gerado automaticamente.

export const SettingsInfoBlock = ({type, default_value, changeable_without_restart}) => {
  return <div className="not-prose" style={{
    display: "flex",
    flexWrap: "wrap",
    alignItems: "baseline",
    columnGap: "0.5rem",
    rowGap: "0.125rem",
    margin: "0.375rem 0",
    fontSize: "0.8125rem",
    lineHeight: "1.125rem"
  }}>
      <div style={{
    fontWeight: 600,
    opacity: 0.72
  }}>Tipo</div>
      <div style={{
    overflowWrap: "anywhere"
  }}>{type}</div>
      <div style={{
    fontWeight: 600,
    opacity: 0.72,
    marginInlineStart: "0.5rem"
  }}>Padrão</div>
      <div style={{
    overflowWrap: "anywhere"
  }}>{default_value}</div>
      {changeable_without_restart && <div style={{
    fontWeight: 600,
    opacity: 0.72,
    marginInlineStart: "0.5rem"
  }}>
          Pode ser alterado sem reiniciar
        </div>}
      {changeable_without_restart && <div style={{
    overflowWrap: "anywhere"
  }}>
          {changeable_without_restart}
        </div>}
    </div>;
};

Essas configurações estão disponíveis em [system.settings](/docs/pt-BR/reference/system-tables/settings) e são geradas automaticamente a partir do [código-fonte](https://github.com/ClickHouse/ClickHouse/blob/master/src/Core/Settings.cpp).

<div id="max_streams_for_files_processing_in_cluster_functions">
  ## max\_streams\_for\_files\_processing\_in\_cluster\_functions
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "0"},{"label": "Adiciona uma nova configuração que permite limitar o número de streams no processamento de arquivos em *funções de tabela de cluster*"}]}]} />

Se não for zero, limita o número de threads que leem dados de arquivos em *funções de tabela de cluster*.

<div id="max_streams_for_merge_tree_reading">
  ## max\_streams\_for\_merge\_tree\_reading
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Se não for zero, limita o número de streams de leitura da tabela MergeTree.

<div id="max_streams_for_union_step">
  ## max\_streams\_for\_union\_step
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "0"},{"label": "Nova configuração para limitar o número de streams de dados ativos simultaneamente em uma etapa `UNION` e reduzir o pico de uso de memória."}]}]} />

Limita o número de streams de dados ativos simultaneamente em uma etapa `UNION` (aplica-se tanto a `UNION ALL` quanto a `UNION DISTINCT`, porque `UNION DISTINCT` é implementado por meio de uma etapa `UNION ALL` seguida de uma etapa `DISTINCT`). 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.

<div id="max_streams_for_union_step_to_max_threads_ratio">
  ## max\_streams\_for\_union\_step\_to\_max\_threads\_ratio
</div>

<SettingsInfoBlock type="Float" default_value="8" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "8"},{"label": "Nova configuração: o limite de streams ativos simultaneamente em uma etapa `UNION` é calculado como min(max_streams_for_union_step, max_threads * max_streams_for_union_step_to_max_threads_ratio); se qualquer um dos dois for 0, essa entrada será desabilitada."}]}]} />

Essa razão multiplicada por `max_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.

<div id="max_streams_multiplier_for_merge_tables">
  ## max\_streams\_multiplier\_for\_merge\_tables
</div>

<SettingsInfoBlock type="Float" default_value="5" />

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.

<div id="max_streams_to_max_threads_ratio">
  ## max\_streams\_to\_max\_threads\_ratio
</div>

<SettingsInfoBlock type="Float" default_value="1" />

Permite usar mais fontes do que o número de threads para distribuir o trabalho entre elas de maneira mais uniforme. Pressupõe-se que esta seja uma solução temporária, já que no futuro será possível fazer com que o número de fontes seja igual ao número de threads, mas com cada fonte selecionando dinamicamente o trabalho disponível para si.
