> ## 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 always_fetch_* des tables MergeTree

> Paramètres des tables MergeTree de ClickHouse du groupe généré always_fetch_*.

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.merge\_tree\_settings](/docs/fr/reference/system-tables/merge_tree_settings) et sont générés automatiquement à partir du code source de ClickHouse.

<div id="always_fetch_merged_part">
  ## always\_fetch\_merged\_part
</div>

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

Si cette valeur est true, cette réplique ne fusionne jamais les parties et télécharge toujours les parties fusionnées
depuis d'autres répliques.

Valeurs possibles :

* true, false

<div id="always_fetch_mutated_part">
  ## always\_fetch\_mutated\_part
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.8"},{"label": "0"},{"label": "Nouveau paramètre permettant à une réplique de récupérer les parties mutées au lieu d’exécuter les mutations localement"}]}]} />

Si sa valeur est true, cette réplique n’exécute jamais les entrées `MUTATE_PART` du journal de réplication
(mutations classiques telles que `ALTER TABLE ... UPDATE/DELETE`) et
télécharge systématiquement les parties mutées résultantes depuis d’autres répliques.

Au moins une réplique doit avoir ce paramètre désactivé ; sinon, les mutations
ne peuvent pas aboutir.

Ce paramètre n’affecte pas les parties de correctif créées par les lightweight updates :
elles sont toujours appliquées localement lors de la fusion des parties. Activez
également `always_fetch_merged_part` afin de décharger également les fusions (y compris
l’application des parties de correctif) sur d’autres répliques.

Comme cette réplique n’exécute pas de mutations et que le statut d’échec d’une mutation
est local à chaque réplique, une attente synchrone sur cette réplique
ne peut pas détecter les échecs de mutation qui surviennent sur les répliques exécutant
la mutation. Par conséquent, les mutations synchrones (`mutations_sync` = 1
ou 2) et les requêtes `ALTER` synchrones qui modifient des données
(`alter_sync` = 1 ou 2) sont rejetées sur une telle réplique avec une
erreur `SUPPORT_IS_DISABLED`, plutôt que de provoquer une attente qui resterait bloquée si la
mutation échoue. Utilisez `mutations_sync` = 0 (`alter_sync` = 0) ou exécutez
ces requêtes sur une réplique qui exécute les mutations.

Valeurs possibles :

* true, false
