> ## 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.

# paramètres de session max_streams_*

> Paramètres de session ClickHouse dans le groupe généré « max_streams_* ».

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
  }}>Type</div>
      <div style={{
    overflowWrap: "anywhere"
  }}>{type}</div>
      <div style={{
    fontWeight: 600,
    opacity: 0.72,
    marginInlineStart: "0.5rem"
  }}>Par défaut</div>
      <div style={{
    overflowWrap: "anywhere"
  }}>{default_value}</div>
      {changeable_without_restart && <div style={{
    fontWeight: 600,
    opacity: 0.72,
    marginInlineStart: "0.5rem"
  }}>
          Modifiable sans redémarrage
        </div>}
      {changeable_without_restart && <div style={{
    overflowWrap: "anywhere"
  }}>
          {changeable_without_restart}
        </div>}
    </div>;
};

Ces paramètres sont disponibles dans [system.settings](/docs/fr/reference/system-tables/settings) et sont générés automatiquement à partir du [source](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": "Ajoute un nouveau paramètre permettant de limiter le nombre de flux pour le traitement des fichiers dans les *fonctions de table Cluster*"}]}]} />

S'il est différent de zéro, limite le nombre de threads qui lisent les données des fichiers dans les *fonctions de table Cluster*.

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

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

Si cette valeur n'est pas nulle, limite le nombre de flux de lecture pour la table 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": "Nouveau paramètre permettant de limiter le nombre de flux de données actifs simultanément dans une étape `UNION` afin de réduire le pic d'utilisation mémoire."}]}]} />

Limite le nombre de flux de données actifs simultanément dans une étape `UNION` (s'applique à la fois à `UNION ALL` et à `UNION DISTINCT`, car `UNION DISTINCT` est implémenté par une étape `UNION ALL` suivie d'une étape `DISTINCT`). Lorsqu'une requête `UNION` comporte de nombreuses sous-requêtes, elles ouvrent toutes leurs tampons de lecture en même temps, ce qui entraîne une utilisation mémoire proportionnelle au nombre de sous-requêtes. Ce paramètre insère des processeurs `Concat` pour resserrer le pipeline afin qu'il n'y ait pas plus de ce nombre de flux actifs à la fois, ce qui réduit considérablement le pic de mémoire. La limite réelle correspond au minimum entre cette valeur et `max_threads * max_streams_for_union_step_to_max_threads_ratio` (si l'une ou l'autre vaut 0, elle est ignorée). Lorsque les deux valent 0, aucun resserrement n'est appliqué. La limite n'est pas non plus appliquée lorsque le plan de requête exige que chaque flux de sortie du `UNION` reste trié individuellement (par exemple lorsque l'optimisation de lecture dans l'ordre est appliquée sur le `UNION`) ; dans ce cas, le respect de l'ordre est prioritaire et le resserrement est ignoré.

<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": "Nouveau paramètre : la limite du nombre de flux simultanément actifs dans une étape `UNION` est calculée comme min(max_streams_for_union_step, max_threads * max_streams_for_union_step_to_max_threads_ratio) ; si l’un des deux vaut 0, il n’est pas pris en compte."}]}]} />

Ce ratio, multiplié par `max_threads`, détermine la limite du nombre de flux simultanément actifs dans une étape `UNION` (s’applique à la fois à `UNION ALL` et à `UNION DISTINCT`). La limite réelle est la plus petite des deux valeurs suivantes : cette valeur calculée et `max_streams_for_union_step` (si l’une ou l’autre vaut 0, elle est ignorée). Par exemple, avec `max_threads = 8` et ce ratio défini sur 1, il y aura au plus 8 flux actifs. Définissez cette valeur sur 0 pour désactiver cette limite basée sur le ratio. Comme pour `max_streams_for_union_step`, la limite n’est pas appliquée lorsque le plan de requête exige que chaque flux de sortie du `UNION` reste trié individuellement.

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

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

Demande davantage de flux lors de la lecture à partir d'une table Merge. Les flux seront répartis entre les tables utilisées par la table Merge. Cela permet de mieux répartir la charge entre les threads et s'avère particulièrement utile lorsque les tables fusionnées n'ont pas la même taille.

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

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

Permet d’utiliser plus de sources que de threads, afin de répartir le travail plus uniformément entre eux. Il s’agit vraisemblablement d’une solution temporaire, car il sera possible à l’avenir d’avoir autant de sources que de threads, chaque source pouvant alors sélectionner dynamiquement le travail disponible pour elle-même.
