> ## 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_threads_*

> Paramètres de session ClickHouse du groupe généré max_threads_*.

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 [code source](https://github.com/ClickHouse/ClickHouse/blob/master/src/Core/Settings.cpp).

<div id="max_threads">
  ## max\_threads
</div>

<SettingsInfoBlock type="MaxThreads" default_value="auto(N)" />

Le nombre maximal de threads de traitement des requêtes, à l'exclusion des threads utilisés pour récupérer des données depuis des serveurs distants (voir le paramètre ['max\_distributed\_connections'](/docs/fr/reference/settings/session-settings/max-distributed#max_distributed_connections)).

Ce paramètre s'applique aux threads qui exécutent en parallèle les mêmes étapes du pipeline de traitement des requêtes.
Par exemple, lors de la lecture d'une table, s'il est possible d'évaluer des expressions avec des fonctions, de filtrer avec `WHERE` et de pré-agréger pour `GROUP BY` en parallèle en utilisant au moins 'max\_threads' threads, alors 'max\_threads' sont utilisés.

Pour les requêtes qui se terminent rapidement à cause d'une LIMIT, vous pouvez définir une valeur plus faible pour 'max\_threads'.
Par exemple, si le nombre nécessaire d'entrées se trouve dans chaque bloc et que max\_threads = 8, alors 8 blocs sont récupérés, alors qu'il aurait suffi d'en lire un seul.
Plus la valeur de `max_threads` est faible, moins la mémoire consommée est importante.

Par défaut, le paramètre `max_threads` correspond au nombre de threads matériels (nombre de CPU cores) disponibles pour ClickHouse.
Dans un cas particulier, pour les processeurs x86 avec moins de 32 CPU cores et avec SMT (par ex. Intel HyperThreading), ClickHouse utilise par défaut le nombre de cœurs logiques (= 2 x le nombre de cœurs physiques).

Sans SMT (par ex. Intel HyperThreading), cela correspond au nombre de CPU cores.

Pour les utilisateurs de ClickHouse Cloud, la valeur par défaut s'affiche sous la forme `auto(N)`, où N correspond à la taille vCPU de votre service, par ex. 2vCPU/8GiB, 4vCPU/16GiB, etc.
Consultez l'onglet Settings dans la Cloud Console pour obtenir la liste de toutes les tailles de service.

<div id="max_threads_for_indexes">
  ## max\_threads\_for\_indexes
</div>

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

Le nombre maximal de threads pour traiter les indices.

<div id="max_threads_min_free_memory_per_thread">
  ## max\_threads\_min\_free\_memory\_per\_thread
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "1073741824"},{"label": "Nouveau paramètre limitant le nombre de threads en fonction de la mémoire libre disponible"}]}]} />

Réduit `max_threads` lorsque le serveur subit une pression mémoire, afin d'éviter de lancer des requêtes fortement parallélisées qui risquent d'atteindre la limite de mémoire.

La mémoire libre est calculée en soustrayant de `max_server_memory_usage` du serveur la mémoire actuellement suivie par le memory tracker global. Si cette mémoire libre est inférieure à `max_threads` multiplié par cette valeur, `max_threads` est réduit au plus grand N tel que `N * value <= free_memory`, avec un minimum de `1`.

Définissez cette valeur sur `0` pour désactiver cette limite.

Par exemple, avec la valeur par défaut de 1 GiB et 32 GiB de mémoire libre, `max_threads` est plafonné à 32 ; avec 1 GiB de mémoire libre, il retombe à 1.

Ce paramètre s'applique au parallélisme côté lecture (`SELECT`, `UNION`, `INTERSECT`/`EXCEPT`, ainsi que la partie `SELECT` de `INSERT ... SELECT`). Pour la partie écriture, voir `max_insert_threads_min_free_memory_per_thread`.
