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

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

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

## webassembly\_udf\_input\_split\_memory\_ratio

<ExperimentalBadge />

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.9"},{"label": "0.5"},{"label": "Nouveau paramètre contrôlant la fraction de la mémoire linéaire d'une instance d'UDF WebAssembly que peut occuper l'entrée sérialisée d'un appel, ce qui active également le découpage dynamique de cette entrée selon sa taille sérialisée ; un `compatibility` inférieur à 26.9 le met à 0 et rétablit le comportement précédent, où `webassembly_udf_max_input_block_size = 0` signifiait un appel par bloc de pipeline."}]}]} />

Fraction de la mémoire linéaire d'une instance d'UDF WebAssembly que peut occuper l'entrée sérialisée d'un appel. Doit être comprise entre 0 et 1 ; la valeur par défaut laisse l'autre moitié au guest pour son propre working set, à côté du buffer d'entrée.

C'est cette marge en dessous de 1 qui rend le batching sûr : les données propres du guest, sa stack et son allocator se partagent cette mémoire et restent invisibles pour l'hôte. Un ratio proche de 1 ne leur laisse rien, si bien qu'un appel dimensionné en conséquence peut malgré tout échouer dans l'allocator du guest.

Read only pour `ABI BUFFERED_V1` ; ce paramètre ne dimensionne les appels que tant que `webassembly_udf_max_input_block_size` vaut 0 : une block size non nulle plafonne à la place le nombre de lignes par appel.

Un batch ne descend jamais en dessous d'une seule ligne : une ligne dont la taille sérialisée dépasse à elle seule le budget est transmise isolément, et une ligne trop volumineuse pour la mémoire linéaire du module échoue dans l'allocator du guest.

Mettez la valeur à 0 pour laisser l'entrée non découpée : le bloc de pipeline entier est alors transmis en un seul appel.

## webassembly\_udf\_max\_fuel

<ExperimentalBadge />

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": "100000"},{"label": "Nouveau paramètre permettant de limiter le nombre d'instructions CPU (fuel) pour chaque exécution d'une instance de WebAssembly UDF."}]}]} />

Limite de fuel pour chaque exécution d'une instance de WebAssembly UDF. Chaque instruction WebAssembly consomme une certaine quantité de fuel. La valeur est multipliée par 1024 avant d'être transmise à l'environnement d'exécution ; ainsi, `webassembly_udf_max_fuel = 1` correspond à environ 1024 unités de fuel. Définissez-la sur 0 pour supprimer toute limite finie. S'applique uniquement aux fonctions dont le paramètre par fonction `webassembly_udf_enable_fuel` est true, ce qui est la valeur par défaut.

## webassembly\_udf\_max\_input\_block\_size

<ExperimentalBadge />

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": "0"},{"label": "Nouveau paramètre permettant de limiter la taille du bloc d’entrée pour les WebAssembly UDF."}]}]} />

Nombre maximal de lignes transmises à une WebAssembly UDF en un seul appel. Une valeur non nulle plafonne le nombre de lignes par appel et s’applique à tous les ABI.

Définissez cette valeur sur 0 pour dimensionner plutôt les appels selon leur entrée sérialisée. Cela ne concerne que `ABI BUFFERED_V1`, le seul ABI qui sérialise un bloc d’entrée entier dans la mémoire du guest : ses blocs sont découpés de sorte que l’entrée d’un appel reste dans la limite de `webassembly_udf_input_split_memory_ratio` de la mémoire linéaire du module. `ROW_DIRECT` transmet ses arguments sous forme de valeurs WebAssembly et `ASSEMBLYSCRIPT` construit un objet par ligne : aucun des deux ne dispose donc d’une entrée sérialisée permettant de dimensionner un appel, et la valeur 0 laisse leur bloc de pipeline intact.

## webassembly\_udf\_max\_instances

<ExperimentalBadge />

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": "32"},{"label": "Nouveau paramètre permettant de limiter le nombre d’instances de WebAssembly UDF pouvant s’exécuter en parallèle pour chaque fonction."}]}]} />

Nombre maximal d’instances de WebAssembly UDF pouvant s’exécuter en parallèle pour chaque fonction.

## webassembly\_udf\_max\_memory

<ExperimentalBadge />

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": "134217728"},{"label": "Nouveau paramètre permettant de limiter la mémoire par instance de WebAssembly UDF."}]}]} />

Limite de mémoire, en octets, par instance de WebAssembly UDF.
