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

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

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](/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="materialize_statistics_on_insert">
  ## materialize\_statistics\_on\_insert
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.8"},{"label": "1"},{"label": "Matérialise par défaut les statistiques de colonnes lors des INSERT pour les tables dont la taille est inférieure à materialize_statistics_on_insert_max_table_size, afin que le réordonnancement des jointures basé sur les coûts dispose de bonnes estimations pour les tables de dimension fraîchement chargées."}]}, {"id": "row-2","items": [{"label": "26.4"},{"label": "0"},{"label": "Désactive par défaut la génération de statistiques lors des INSERT et s’appuie plutôt sur les fusions"}]}, {"id": "row-3","items": [{"label": "24.6"},{"label": "1"},{"label": "Ajout d’un nouveau paramètre permettant de désactiver la matérialisation des statistiques lors de l’insertion"}]}]} />

Si cette option est activée, les INSERT génèrent et insèrent des statistiques. Si elle est désactivée, les statistiques sont générées et stockées lors des fusions ou par un MATERIALIZE STATISTICS explicite. Seules les tables dont la taille actuelle, augmentée de la taille du bloc en cours d’écriture, ne dépasse pas `materialize_statistics_on_insert_max_table_size` sont concernées.

<div id="materialize_statistics_on_insert_max_table_size">
  ## materialize\_statistics\_on\_insert\_max\_table\_size
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.8"},{"label": "26843545600"},{"label": "Nouveau paramètre : matérialise les statistiques de colonnes lors d’un INSERT uniquement pour les tables dont la taille actuelle, augmentée de la taille du bloc inséré, est inférieure à ce seuil. previous_value=0 (aucune limite), donc la `compatibility` avec les versions antérieures à 26.8 restaure le comportement précédent (avant cette PR, il n’y avait pas de plafond de taille ; les utilisateurs qui réactivent explicitement `materialize_statistics_on_insert` continuent donc de matérialiser les statistiques, quelle que soit la taille de la table)."}]}]} />

Construit et stocke les statistiques de colonnes lors d’un INSERT (voir `materialize_statistics_on_insert`) uniquement pour les tables dont la taille totale actuelle des parties actives sur disque (compressée, en octets), augmentée de la taille en mémoire non compressée du bloc en cours d’écriture, ne dépasse pas cette valeur. Cette règle s’applique à chaque bloc écrit, et non à chaque INSERT : un même INSERT est divisé en un bloc par partition (et, pour les inserts en streaming, en plusieurs blocs), et chacun est vérifié par rapport à la taille des parties déjà actives, car les parties de l’INSERT en cours ne sont pas encore actives. Un chargement en masse unique dans une table vide peut donc générer des statistiques pour toutes ses parties, même si leur taille totale dépasse le seuil ; la limite s’applique aux inserts suivants. L’utilisation de la taille non compressée du bloc (sa taille compressée est inconnue avant l’écriture de la partie) rend la vérification volontairement prudente, d’au plus un bloc. Cela permet de maintenir à jour les statistiques des petites tables de dimensions, ce qui est important pour le réordonnancement des jointures basé sur les coûts, tout en évitant la surcharge liée à chaque insert dans les grandes tables de faits (leurs statistiques sont plutôt générées lors des fusions). `0` signifie qu’il n’y a pas de limite de taille.
