> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-detect-table-modification.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# ajustes de sesión max_insert_*

> Ajustes de sesión de ClickHouse en el grupo generado max_insert_*.

export const VersionHistory = ({rows = []}) => {
  if (rows.length === 0) {
    return null;
  }
  const headers = ["Versión", "Valor predeterminado", "Comentario"];
  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
  }}>
        Historial de versiones
      </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
  }}>Tipo</div>
      <div style={{
    overflowWrap: "anywhere"
  }}>{type}</div>
      <div style={{
    fontWeight: 600,
    opacity: 0.72,
    marginInlineStart: "0.5rem"
  }}>Predeterminado</div>
      <div style={{
    overflowWrap: "anywhere"
  }}>{default_value}</div>
      {changeable_without_restart && <div style={{
    fontWeight: 600,
    opacity: 0.72,
    marginInlineStart: "0.5rem"
  }}>
          Modificable sin reiniciar
        </div>}
      {changeable_without_restart && <div style={{
    overflowWrap: "anywhere"
  }}>
          {changeable_without_restart}
        </div>}
    </div>;
};

Estas configuraciones están disponibles en [system.settings](/es/reference/system-tables/settings) y se generan automáticamente a partir del [código fuente](https://github.com/ClickHouse/ClickHouse/blob/master/src/Core/Settings.cpp).

<div id="max_insert_block_size">
  ## max\_insert\_block\_size
</div>

**Aliases**: `max_insert_block_size_rows`

<SettingsInfoBlock type="NonZeroUInt64" default_value="1048449" />

El tamaño máximo de los bloques (en cantidad de filas) que se forman para la inserción en una tabla.

Esta configuración controla la formación de bloques en dos contextos:

1. Análisis del formato: Cuando el server analiza formatos de entrada basados en filas (CSV, TSV, JSONEachRow, etc.) desde cualquier interface (HTTP, clickhouse-client con datos inline, gRPC, PostgreSQL wire protocol), los bloques se emiten cuando:

   * Se alcanzan tanto min\_insert\_block\_size\_rows AND min\_insert\_block\_size\_bytes, OR
   * Se alcanza max\_insert\_block\_size\_rows OR max\_insert\_block\_size\_bytes

   Nota: Cuando se usa clickhouse-client o clickhouse-local para leer desde un archivo, el propio client analiza los datos y esta configuración se aplica en el client side.

2. Operaciones INSERT: Durante las queries INSERT y cuando los datos fluyen a través de vistas materializadas, el comportamiento de esta configuración depende de `use_strict_insert_block_limits`:

   * Cuando está habilitada: Los bloques se emiten cuando:
     * Umbrales mínimos (AND): Se alcanzan tanto min\_insert\_block\_size\_rows AND min\_insert\_block\_size\_bytes
     * Umbrales máximos (OR): Se alcanza max\_insert\_block\_size\_rows OR max\_insert\_block\_size\_bytes

   * Cuando está deshabilitada: Los bloques se emiten cuando se alcanza min\_insert\_block\_size\_rows OR min\_insert\_block\_size\_bytes. Las configuraciones max\_insert\_block\_size no se aplican.

Possible values:

* Entero positivo.

<div id="max_insert_block_size_bytes">
  ## max\_insert\_block\_size\_bytes
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.1"},{"label": "0"},{"label": "Nueva configuración que permite controlar el tamaño de los bloques en bytes durante el análisis de datos en Row Input Format."}]}]} />

El tamaño máximo de los bloques (en bytes) que se forman para la inserción en una tabla.

Esta configuración funciona junto con max\_insert\_block\_size\_rows y controla la formación de bloques en el mismo contexto. Consulta max\_insert\_block\_size\_rows para obtener información detallada sobre cuándo y cómo se aplican estas configuraciones.

Posibles valores:

* Entero positivo.
* 0 — la configuración no participa en la formación de bloques.

<div id="max_insert_delayed_streams_for_parallel_write">
  ## max\_insert\_delayed\_streams\_for\_parallel\_write
</div>

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

El número máximo de streams (columnas) para retrasar el volcado final de la parte. Valor predeterminado: auto (100 si el almacenamiento subyacente admite escritura en paralelo, por ejemplo S3, y deshabilitado en caso contrario)

Valor predeterminado de Cloud: `50`.

<div id="max_insert_threads">
  ## max\_insert\_threads
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.8"},{"label": "0"},{"label": "Se cambió el valor predeterminado de 1 (sin ejecución en paralelo) a auto (0), que equivale al número de núcleos de CPU disponibles en el servidor y se reduce si hay presión de memoria mediante `max_insert_threads_min_free_memory_per_thread`. Esto paraleliza `INSERT SELECT` de forma predeterminada. Establézcalo en 1 para restaurar el comportamiento anterior de un solo hilo."}]}]} />

El número máximo de hilos para ejecutar la consulta `INSERT`.

Esto se aplica tanto a `INSERT SELECT` como a un `INSERT` simple cuyos datos se envían desde
`clickhouse-client` o a través de la interfaz HTTP. El lado de escritura de la canalización
(la combinación de bloques y la escritura en la tabla de destino) se paraleliza
en hasta este número de hilos.

Valores posibles:

* 0 — Automático. Usa el número de núcleos de CPU disponibles en el servidor (el mismo valor automático que [`max_threads`](/es/reference/settings/session-settings/max-threads#max_threads)), reducido si hay presión de memoria mediante [`max_insert_threads_min_free_memory_per_thread`](/es/reference/settings/session-settings/max-insert#max_insert_threads_min_free_memory_per_thread).
* 1 — El `INSERT` se ejecuta en un solo hilo (sin ejecución en paralelo). Úselo para conservar el orden de inserción de `INSERT ... SELECT`.
* Entero positivo mayor que 1 — Ejecución en paralelo con el número de hilos especificado.

Antes de la versión 26.8, el valor predeterminado era `1` (sin ejecución en paralelo). Desde la versión 26.8, el valor predeterminado (`0`) equivale al número de núcleos de CPU, por lo que `INSERT` se paraleliza de forma predeterminada. Establezca `max_insert_threads` en `1` (o use la configuración `compatibility`) para restaurar el comportamiento anterior.

Valor predeterminado de Cloud:

* `1` para nodos con 8 GiB de memoria
* `2` para nodos con 16 GiB de memoria
* `4` para nodos más grandes

`INSERT SELECT` en paralelo solo tiene efecto si la parte `SELECT` se ejecuta en paralelo; consulte la configuración [`max_threads`](/es/reference/settings/session-settings/max-threads#max_threads).
En un `INSERT` simple, los datos de entrada se leen y analizan como un único flujo, y después la canalización se redimensiona a este número de flujos para la escritura.
La paralelización del lado de escritura se aplica solo a `INSERT` simples síncronos: las inserciones asíncronas ([`async_insert`](/es/reference/settings/session-settings/async-insert#async_insert) `= 1`) se almacenan en una cola y se vacían en segundo plano, por lo que esta configuración no les afecta y siempre permanecen en un único flujo.
El lado de escritura se paraleliza solo cuando es seguro hacerlo; de lo contrario, permanece en un único flujo y esta configuración no le afecta. En particular, la escritura se mantiene en un único flujo cuando [`use_strict_insert_block_limits`](/es/reference/settings/session-settings/use#use_strict_insert_block_limits) está habilitada, una tabla de destino (o una tabla a la que reenvía) deduplica bloques insertados y la deduplicación de inserciones está habilitada para la consulta (consulte [`deduplicate_insert`](/es/reference/settings/session-settings/deduplicate-insert#deduplicate_insert)); cuando el destino tiene vistas materializadas dependientes —incluidas las vistas de una tabla a la que el destino reenvía, por ejemplo, detrás de un `Alias`—, salvo que [`parallel_view_processing`](/es/reference/settings/session-settings/parallel#parallel_view_processing) esté habilitada y las cadenas de vistas dependientes no presenten riesgos de deduplicación —la deduplicación en las vistas está deshabilitada ([`deduplicate_blocks_in_dependent_materialized_views`](/es/reference/settings/session-settings/other#deduplicate_blocks_in_dependent_materialized_views)) o ninguna ruta de vista dependiente puede deduplicar—; y siempre para destinos `Buffer` y `Distributed`. Un `Buffer` se vacía en su propio contexto y un `Distributed` reenvía la escritura a un fragmento remoto (que puede almacenar los datos en búfer), por lo que la configuración de deduplicación de esta consulta no determina la escritura final, que se mantiene en un único flujo independientemente de dicha configuración. Una inserción de quórum no paralela ([`insert_quorum`](/es/reference/settings/session-settings/insert-quorum#insert_quorum) es `2` o mayor, o `'auto'`, y [`insert_quorum_parallel`](/es/reference/settings/session-settings/insert-quorum#insert_quorum_parallel) está deshabilitada) también permanece en un único flujo, porque solo permite una parte de quórum en curso por tabla.
Los valores más altos aumentan el uso de memoria.

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

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "4294967296"},{"label": "Nueva configuración para limitar el número de hilos de inserción en función de la memoria libre disponible"}]}]} />

Igual que `max_threads_min_free_memory_per_thread`, pero aplicado a `max_insert_threads` en lugar de a `max_threads`. El valor predeterminado es mayor porque las canalizaciones de inserción suelen mantener búferes por hilo más grandes (partes de MergeTree, bloques de compresión) que las canalizaciones de lectura.

Si la cantidad de memoria libre es menor que `max_insert_threads` multiplicado por este valor, `max_insert_threads` se reduce en consecuencia, hasta un mínimo de `1`.

Establézcalo en `0` para desactivar este límite.
