> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-parallel-read-in-order-multi-part.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# paramètres de session parallel_replicas_*

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

export const BetaBadge = ({link, galaxyTrack, galaxyEvent}) => {
  if (link) {
    return <a href={link} target="_blank" rel="noopener noreferrer" className="betaBadge" onClick={galaxyTrack && galaxyEvent ? galaxyOnClick(galaxyEvent) : undefined}>
                <span>Beta</span>
            </a>;
  }
  return <a href="https://clickhouse.com/docs/reference/settings/beta-and-experimental-features#beta-features" className="betaBadge">
            <span>Fonctionnalité en bêta</span>
        </a>;
};

export const ExperimentalBadge = () => {
  return <a href="https://clickhouse.com/docs/reference/settings/beta-and-experimental-features#experimental-features" className="experimentalBadge">
            <div className="experimentalIcon">
            <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
                <path strokeWidth="1.25" d="M5.5 2H10.5" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path strokeWidth="1.25" d="M9.50015 2V6.19625L13.4283 12.7425C13.4738 12.8183 13.4985 12.9049 13.4996 12.9934C13.5008 13.0818 13.4785 13.169 13.435 13.246C13.3914 13.323 13.3283 13.3871 13.2519 13.4317C13.1755 13.4764 13.0886 13.4999 13.0002 13.5H3.00015C2.91164 13.5 2.8247 13.4766 2.74822 13.432C2.67174 13.3874 2.60847 13.3233 2.56487 13.2463C2.52126 13.1693 2.49889 13.082 2.50004 12.9935C2.50119 12.905 2.52582 12.8184 2.5714 12.7425L6.50015 6.19625V2" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path strokeWidth="1.25" d="M4.47656 9.56754C5.30344 9.41254 6.47656 9.47942 7.99969 10.25C10.0153 11.2707 11.4216 11.0569 12.2184 10.7282" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
            </svg>
        </div>
            Fonctionnalité expérimentale
        </a>;
};

export const VersionHistory = ({rows = []}) => {
  if (rows.length === 0) {
    return null;
  }
  const headers = ["Version", "Valeur par défaut", "Commentaire"];
  const border = "1px solid rgba(128, 128, 128, 0.3)";
  const cell = {
    border,
    padding: "0.25rem 0.5rem",
    textAlign: "start",
    verticalAlign: "top"
  };
  return <details className="not-prose" style={{
    border,
    borderRadius: "0.5rem",
    margin: "0.5rem 0",
    padding: "0.5rem 0.75rem",
    fontSize: "0.8125rem",
    lineHeight: "1.125rem"
  }}>
      <summary style={{
    cursor: "pointer",
    fontWeight: 600,
    opacity: 0.72
  }}>
        Historique des versions
      </summary>
      <table style={{
    borderCollapse: "collapse",
    width: "100%",
    margin: "0.5rem 0 0"
  }}>
        <thead>
          <tr>
            {headers.map(header => <th key={header} style={{
    ...cell,
    fontWeight: 600,
    opacity: 0.72
  }}>
                {header}
              </th>)}
          </tr>
        </thead>
        <tbody>
          {rows.map((row, row_index) => <tr key={row.id ?? row_index}>
              {(row.items ?? []).map((item, item_index) => <td key={item_index} style={{
    ...cell,
    overflowWrap: "anywhere"
  }}>
                  {item?.label}
                </td>)}
            </tr>)}
        </tbody>
      </table>
    </details>;
};

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](/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).

## parallel\_replicas\_allow\_in\_with\_subquery

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "1"},{"label": "Si la valeur est true, la sous-requête de IN sera exécutée sur chaque réplique suiveuse"}]}]} />

Si la valeur est true, la sous-requête de IN sera exécutée sur chaque réplique suiveuse.

## parallel\_replicas\_allow\_materialized\_views

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "1"},{"label": "Autoriser l’utilisation des vues matérialisées avec les répliques parallèles"}]}]} />

Autoriser l’utilisation des vues matérialisées avec les répliques parallèles

## parallel\_replicas\_allow\_merge\_tables

<ExperimentalBadge />

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.9"},{"label": "0"},{"label": "Nouveau paramètre permettant de lire une table `Merge` avec des répliques parallèles basées sur le plan, en développant la lecture de `Merge` en une union des lectures des tables `MergeTree` sous-jacentes. N'a d'effet qu'avec `parallel_replicas_plan_based`."}]}, {"id": "row-2","items": [{"label": "26.9"},{"label": "0"},{"label": "Nouveau paramètre permettant de lire une table `Merge` avec des répliques parallèles basées sur le plan, en développant la lecture de `Merge` en une union des lectures des tables `MergeTree` sous-jacentes. N'a d'effet qu'avec `parallel_replicas_plan_based`."}]}]} />

Autorise la lecture d'une table `Merge` avec des répliques parallèles. N'est effectif qu'avec [parallel\_replicas\_plan\_based](/fr/reference/settings/session-settings/parallel-replicas#parallel_replicas_plan_based) : la lecture de la table `Merge` est développée en une union des lectures des tables `MergeTree` sous-jacentes, puis distribuée comme toute autre union. Une table `Merge` est affectée à une seule réplique si l'une de ses tables sous-jacentes ne peut pas être lue de cette manière (table autre que `MergeTree`, lecture avec `FINAL`). Définissez ce paramètre sur `false` pour lire chaque table `Merge` sur une seule réplique, comme avant l'ajout de cette prise en charge. Expérimental.

## parallel\_replicas\_allow\_view\_over\_mergetree

<BetaBadge />

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "0"},{"label": "Nouveau paramètre"}]}]} />

Permet aux répliques parallèles d'exécuter la requête externe d'une vue simple basée sur des tables `MergeTree` (au lieu de la requête interne de la vue), ce qui améliore la parallélisation entre les nœuds. S'applique également aux vues `UNION ALL` dont les branches lisent toutes dans des tables `MergeTree` différentes.

## parallel\_replicas\_connect\_timeout\_ms

<SettingsInfoBlock type="Millisecondes" default_value="300" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.6"},{"label": "300"},{"label": "Délai de connexion distinct pour les requêtes avec répliques parallèles"}]}]} />

Délai d’expiration, en millisecondes, pour établir une connexion à une réplique distante lors de l’exécution d’une requête avec des répliques parallèles. Si le délai expire, la réplique correspondante n’est pas utilisée pour l’exécution de la requête

## parallel\_replicas\_count

<BetaBadge />

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

Il s'agit d'un paramètre interne qui ne doit pas être utilisé directement et qui correspond à un détail d'implémentation du mode « répliques parallèles ». Pour les requêtes distribuées, ce paramètre est automatiquement défini par le serveur initiateur sur le nombre de répliques parallèles participant au traitement de la requête.

## parallel\_replicas\_custom\_key

<BetaBadge />

Une expression entière arbitraire qui peut être utilisée pour répartir le travail entre les répliques d’une table donnée.
La valeur peut être n’importe quelle expression entière.

Il est préférable d’utiliser des expressions simples basées sur les clés primaires.

Si ce paramètre est utilisé sur un cluster composé d’un seul shard avec plusieurs répliques, ces répliques seront converties en shards virtuels.
Sinon, il se comportera comme pour la clé `SAMPLE` et utilisera plusieurs répliques de chaque shard.

L’expression est vérifiée au regard des autorisations `SELECT` de l’utilisateur au niveau des colonnes. Pour une vue avec `SQL SECURITY DEFINER` ou `NONE`, elle est appliquée aux colonnes de la vue ; le corps de la vue est lu sans cette vérification.

## parallel\_replicas\_custom\_key\_range\_lower

<BetaBadge />

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.6"},{"label": "0"},{"label": "Ajoute des paramètres permettant de contrôler le filtre de plage lors de l’utilisation de répliques parallèles avec des shards dynamiques"}]}]} />

Permet au filtre de type `range` de répartir uniformément la charge entre les répliques à partir de la plage personnalisée `[parallel_replicas_custom_key_range_lower, INT_MAX]`.

Utilisé conjointement avec [parallel\_replicas\_custom\_key\_range\_upper](/fr/reference/settings/session-settings/parallel-replicas#parallel_replicas_custom_key_range_upper), il permet au filtre de répartir uniformément la charge entre les répliques sur la plage `[parallel_replicas_custom_key_range_lower, parallel_replicas_custom_key_range_upper]`.

Remarque : ce paramètre n’entraîne aucun filtrage de données supplémentaire pendant le traitement des requêtes ; il modifie simplement les points auxquels le filtre de plage découpe la plage `[0, INT_MAX]` pour le traitement parallèle.

## parallel\_replicas\_custom\_key\_range\_upper

<BetaBadge />

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.6"},{"label": "0"},{"label": "Ajoute des paramètres pour contrôler le filtre de plage lors de l’utilisation de répliques parallèles avec des shards dynamiques. Une valeur de 0 désactive la limite supérieure"}]}]} />

Permet au filtre de type `range` de répartir uniformément le travail entre les répliques en fonction de la plage personnalisée `[0, parallel_replicas_custom_key_range_upper]`. Une valeur de 0 désactive la borne supérieure et la fixe à la valeur maximale de l’expression de clé personnalisée.

Lorsqu’il est utilisé conjointement avec [parallel\_replicas\_custom\_key\_range\_lower](/fr/reference/settings/session-settings/parallel-replicas#parallel_replicas_custom_key_range_lower), ce paramètre permet au filtre de répartir uniformément le travail entre les répliques sur la plage `[parallel_replicas_custom_key_range_lower, parallel_replicas_custom_key_range_upper]`.

Remarque : ce paramètre n’entraîne pas le filtrage de données supplémentaires pendant le traitement des requêtes ; il modifie plutôt les points auxquels le filtre de plage découpe la plage `[0, INT_MAX]` pour le traitement parallèle

## parallel\_replicas\_filter\_pushdown

<BetaBadge />

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "0"},{"label": "Nouveau paramètre"}]}]} />

Permet le pushdown des filtres sur la partie de la requête que les répliques parallèles choisissent d'exécuter

## parallel\_replicas\_for\_cluster\_engines

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.3"},{"label": "1"},{"label": "Nouveau paramètre."}]}]} />

Remplacer les moteurs de fonction de table par leurs équivalents -Cluster

## parallel\_replicas\_for\_non\_replicated\_merge\_tree

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

Si la valeur est true, ClickHouse utilisera également l’algorithme des répliques parallèles pour les tables MergeTree non répliquées

## parallel\_replicas\_index\_analysis\_only\_on\_coordinator

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.12"},{"label": "1"},{"label": "L’analyse d’index n’est effectuée que sur la réplique coordinatrice et est ignorée sur les autres répliques. Prend effet uniquement lorsque parallel_replicas_local_plan est activé"}]}, {"id": "row-2","items": [{"label": "24.10"},{"label": "1"},{"label": "L’analyse d’index n’est effectuée que sur la réplique coordinatrice et est ignorée sur les autres répliques. Prend effet uniquement lorsque parallel_replicas_local_plan est activé"}]}]} />

L’analyse d’index n’est effectuée que sur la réplique coordinatrice et est ignorée sur les autres répliques. Prend effet uniquement lorsque parallel\_replicas\_local\_plan est activé

## parallel\_replicas\_insert\_select\_local\_pipeline

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "1"},{"label": "Utiliser le pipeline local lors d'un INSERT SELECT distribué avec des répliques parallèles. Actuellement désactivé en raison de problèmes de performances"}]}, {"id": "row-2","items": [{"label": "25.4"},{"label": "0"},{"label": "Utiliser le pipeline local lors d'un INSERT SELECT distribué avec des répliques parallèles. Actuellement désactivé en raison de problèmes de performances"}]}]} />

Utiliser le pipeline local lors d'un INSERT SELECT distribué avec des répliques parallèles

## parallel\_replicas\_local\_plan

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.9"},{"label": "0"},{"label": "Utiliser un plan local pour la réplique locale dans une requête avec des répliques parallèles"}]}, {"id": "row-2","items": [{"label": "24.11"},{"label": "1"},{"label": "Utiliser un plan local pour la réplique locale dans une requête avec des répliques parallèles"}]}, {"id": "row-3","items": [{"label": "24.10"},{"label": "1"},{"label": "Utiliser un plan local pour la réplique locale dans une requête avec des répliques parallèles"}]}]} />

Construire un plan local pour la réplique locale

## parallel\_replicas\_mark\_segment\_size

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.9"},{"label": "0"},{"label": "La valeur de ce paramètre est désormais déterminée automatiquement"}]}, {"id": "row-2","items": [{"label": "24.1"},{"label": "128"},{"label": "Ajout d'un nouveau paramètre pour contrôler la taille des segments dans la nouvelle implémentation du coordinateur de répliques parallèles"}]}]} />

Les parts de données sont divisées virtuellement en segments, qui sont répartis entre les répliques pour la lecture parallèle. Ce paramètre contrôle la taille de ces segments. Il est déconseillé de le modifier à moins d'être absolument sûr de ce que vous faites. La valeur doit être comprise dans la plage \[128 ; 16384]

## parallel\_replicas\_min\_number\_of\_rows\_per\_replica

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

Limite le nombre de répliques utilisées dans une requête à (nombre estimé de lignes à lire / min\_number\_of\_rows\_per\_replica). Le maximum reste toutefois limité par 'max\_parallel\_replicas'

## parallel\_replicas\_mode

<SettingsInfoBlock type="ParallelReplicasMode" default_value="read_tasks" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.10"},{"label": "read_tasks"},{"label": "Ce paramètre a été introduit dans le cadre du passage en Beta de la fonctionnalité des répliques parallèles"}]}]} />

Type de filtre à utiliser avec la clé personnalisée pour les répliques parallèles. default - utilise l'opération modulo sur la clé personnalisée, range - utilise un filtre de plage sur la clé personnalisée en utilisant toutes les valeurs possibles du type de valeur de la clé personnalisée.

## parallel\_replicas\_plan\_based

<ExperimentalBadge />

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.7"},{"label": "0"},{"label": "Nouveau paramètre"}]}]} />

Détermine s’il faut utiliser des répliques parallèles et à quels endroits en analysant le plan de requête, plutôt qu’en se basant sur l’arbre de requête. Par conséquent, un fragment de plan est envoyé aux répliques distantes au lieu d’une requête SQL. Expérimental.

## parallel\_replicas\_prefer\_local\_join

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.2"},{"label": "1"},{"label": "Si cette option est true, que JOIN peut être exécuté avec l’algorithme des répliques parallèles et que toutes les tables de la partie droite du JOIN sont de type *MergeTree, un JOIN local est utilisé à la place de GLOBAL JOIN."}]}]} />

Si cette option est true, que `JOIN` peut être exécuté avec l’algorithme des répliques parallèles et que chaque table de la partie du `JOIN` qui serait sinon matérialisée dans une temporary table peut être lue par chaque réplique de manière autonome, un `JOIN` local est utilisé à la place de `GLOBAL JOIN`. Cette partie est la partie droite, sauf dans le cas d’un `RIGHT JOIN`, où il s’agit de la partie gauche et où chaque table doit être éligible aux répliques parallèles, et non simplement être de type `*MergeTree`. Une table située du côté matérialisé d’un `GLOBAL JOIN` imbriqué, ou sous un `GLOBAL IN`, n’est pas prise en compte, car l’initiateur les matérialise lui-même.

## parallel\_replicas\_prefer\_local\_replica

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "1"},{"label": "Nouveau paramètre. Lorsqu’il est désactivé, les répliques pour la lecture parallèle sont sélectionnées uniquement par l’algorithme de répartition de charge, sans imposer l’inclusion de la réplique locale dans l’ensemble."}]}]} />

Lorsqu’il est activé (par défaut), la réplique locale est toujours incluse dans l’ensemble des répliques utilisées pour la lecture parallèle.
Lorsqu’il est désactivé, la réplique locale ne bénéficie d’aucune préférence et les répliques sont sélectionnées uniquement par l’algorithme de répartition de charge.
Cela permet d’acheminer les requêtes avec `max_parallel_replicas = 1` vers un autre hôte, ce qui peut améliorer la localité du cache lorsque de nombreuses requêtes courtes sont réparties sur un cluster.

## parallel\_replicas\_support\_projection

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "1"},{"label": "Nouveau paramètre. L’optimisation des projections peut être appliquée aux répliques parallèles. S’applique uniquement lorsque parallel_replicas_local_plan est activé et que aggregation_in_order est inactif."}]}]} />

L’optimisation des projections peut être appliquée aux répliques parallèles. S’applique uniquement lorsque parallel\_replicas\_local\_plan est activé et que aggregation\_in\_order est inactif.
