> ## 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.

# ajustes de sesión max_bytes_*

> Ajustes de sesión de ClickHouse del grupo generado max_bytes_*.

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 opciones de configuración 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).

## max\_bytes\_before\_external\_distinct

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.9"},{"label": "0"},{"label": "Nueva configuración para habilitar el volcado a disco de `DISTINCT` cuando el uso de memoria supera el umbral indicado en bytes. Si es 0, solo se aplica `max_bytes_ratio_before_external_distinct`."}]}]} />

Umbral de memoria de la consulta, en bytes, a partir del cual los datos de `DISTINCT` se vuelcan a disco. El uso real de memoria puede superar
este umbral.

Con `0` se deshabilita este umbral. Si `max_bytes_ratio_before_external_distinct` también define un umbral,
se utiliza el menor de ambos. Establezca ambas configuraciones en `0` para deshabilitar el volcado.

Consulte [DISTINCT en memoria externa](/es/reference/statements/select/distinct#distinct-in-external-memory).

## max\_bytes\_before\_external\_group\_by

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

Valor predeterminado de Cloud: la mitad de la memoria por réplica.

Habilita o deshabilita la ejecución de cláusulas `GROUP BY` en memoria externa.
(Véase [GROUP BY en memoria externa](/es/reference/statements/select/group-by#group-by-in-external-memory))

Valores posibles:

* Volumen máximo de RAM (en bytes) que puede usar una sola operación [GROUP BY](/es/reference/statements/select/group-by).
* `0` — `GROUP BY` en memoria externa deshabilitado.

<Note>
  Si el uso de memoria durante las operaciones de GROUP BY supera este umbral en bytes,
  active el modo de 'aggregación externa' (volcar datos a disco).

  El valor recomendado es la mitad de la memoria disponible del sistema.
</Note>

## max\_bytes\_before\_external\_join

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "0"},{"label": "Nueva configuración para controlar el volcado automático a disco de los hash joins. Un valor distinto de cero habilita el volcado y establece el umbral en bytes."}]}]} />

Si se establece en un valor distinto de cero, el hash join se convertirá automáticamente en grace hash join para habilitar el volcado a disco cuando los datos del lado derecho superen esta cantidad de bytes. Junto con `max_bytes_ratio_before_external_join`, constituye el disparador de volcado basado en umbral para todo `join_algorithm` basado en hash, incluido `grace_hash`, que requiere que uno de los dos sea distinto de cero. Una vez que un umbral distinto de cero hace que un join pueda volcar, `enable_adaptive_memory_spill_scheduler` puede forzarlo a volcar bajo presión de memoria antes de que se alcance el umbral; con ambas configuraciones en `0`, el join nunca vuelca, por lo que el planificador no tiene nada que disparar. La excepción es `legacy_join_size_limits_trigger_spilling`: con esta opción activada, `grace_hash` independiente ignora ambas y vuelca según `max_rows_in_join` / `max_bytes_in_join`. Cuando se establece en 0 (valor predeterminado), este umbral absoluto en bytes se desactiva, pero el volcado automático puede seguir produciéndose mediante `max_bytes_ratio_before_external_join` (cuyo valor predeterminado es `0.5`); establezca ambos en `0` para desactivar por completo el volcado automático. Impide la optimización de read in order a través de join.

## max\_bytes\_before\_external\_sort

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

Valor predeterminado en Cloud: la mitad de la memoria por réplica.

Habilita o deshabilita la ejecución de cláusulas `ORDER BY` en memoria externa. Consulte [Detalles de implementación de ORDER BY](/es/reference/statements/select/order-by#implementation-details)
Si el uso de memoria durante la operación ORDER BY supera este umbral en bytes, se activa el modo de "ordenación externa" (volcado de datos a disco).

Valores posibles:

* Volumen máximo de RAM (en bytes) que puede usar una única operación [ORDER BY](/es/reference/statements/select/order-by).
  El valor recomendado es la mitad de la memoria disponible del sistema
* `0` — `ORDER BY` en memoria externa deshabilitado.

## max\_bytes\_before\_remerge\_sort

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

En caso de usar ORDER BY con LIMIT, cuando el uso de memoria supere el umbral especificado, realiza pasos adicionales de combinación de bloques antes de la fusión final para conservar solo las primeras filas del LIMIT.

## max\_bytes\_for\_lazy\_final

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "256000000"},{"label": "Nueva configuración para el número máximo de bytes en el conjunto para la optimización FINAL diferida"}]}]} />

Número máximo de bytes en el conjunto para la optimización FINAL diferida. Si se supera, se recurre a FINAL normal.

## max\_bytes\_in\_distinct

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

El número máximo de bytes del estado en memoria (en bytes sin comprimir) que
utiliza una tabla hash al usar DISTINCT.

## max\_bytes\_in\_join

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

El tamaño máximo en bytes de la estructura de datos del lado derecho (normalmente, una tabla
hash) que se utiliza al unir tablas.

Esta configuración se aplica a las operaciones [SELECT ... JOIN](/es/reference/statements/select/join)
y al [motor de tabla Join](/es/reference/engines/table-engines/special/join).

Si una consulta contiene varios joins, ClickHouse comprueba esta configuración en cada
resultado intermedio. Es un tope estricto para todo `join_algorithm` basado en hash: cuando se alcanza
el límite, la consulta lanza un error o se interrumpe según
[`join_overflow_mode`](/es/reference/settings/session-settings/join#join_overflow_mode).
Nunca hace que un join haga spill a disco; esa decisión corresponde a
[`max_bytes_before_external_join`](/es/reference/settings/session-settings/max-bytes#max_bytes_before_external_join)
y a
[`max_bytes_ratio_before_external_join`](/es/reference/settings/session-settings/max-bytes#max_bytes_ratio_before_external_join).
Dado que es un tope y no un disparador, establecerlo en el umbral de spill o por debajo de él
normalmente hace que la consulta falle antes de que el join pueda hacer spill,
salvo que el join admita spill y `enable_adaptive_memory_spill_scheduler`
fuerce primero un spill, o que
`legacy_join_size_limits_trigger_spilling` convierta de nuevo este límite en un disparador
de spill para la parte de un join que ya se ejecuta en disco.

El límite contabiliza lo que contienen las tablas hash, por lo que un join que hizo spill lo alcanza a
medida que se carga cada bucket y no mientras se lee el lado derecho: puede leer más
del lado derecho antes de detenerse de lo que lo haría un hash join en memoria.

Valores posibles:

* Entero positivo.
* 0 — El control de memoria está deshabilitado.

## max\_bytes\_in\_set

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

El número máximo de bytes (de datos no comprimidos) que puede usar un Set de la cláusula IN
creado a partir de una subconsulta.

## max\_bytes\_ratio\_before\_external\_distinct

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.9"},{"label": "0.5"},{"label": "Nueva configuración para habilitar el volcado a disco de `DISTINCT` cuando el uso de memoria supera la proporción indicada de la memoria disponible. Si es 0, solo se aplica `max_bytes_before_external_distinct`."}]}]} />

Fracción de la memoria disponible del servidor o del usuario que se emplea para calcular el umbral de `DISTINCT` externo al
inicio de la ejecución. Por ejemplo, `0.5` utiliza la mitad de la memoria disponible.

Los valores deben ser como mínimo `0` y menores que `1`. `0` desactiva este umbral. Si no hay un memory limit aplicable
de servidor o de usuario, la proporción no surte efecto.

`max_memory_usage` no influye en este cálculo. Para configurar el volcado a disco en relación con ese límite,
utilice `max_bytes_before_external_distinct`, dejando margen para un uso de memoria adicional.

## max\_bytes\_ratio\_before\_external\_group\_by

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "0.5"},{"label": "Activar el volcado automático a disco de forma predeterminada."}]}, {"id": "row-2","items": [{"label": "24.12"},{"label": "0"},{"label": "Nueva configuración."}]}]} />

La proporción de la memoria disponible que puede usarse para `GROUP BY`. Una vez alcanzado este valor,
se utiliza memoria externa para la agregación.

Por ejemplo, si se establece en `0.6`, `GROUP BY` permitirá usar el 60 % de la memoria disponible
(para server/user/merges) al inicio de la ejecución; a partir de ese momento,
empezará a usar agregación externa.

## max\_bytes\_ratio\_before\_external\_join

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "0.5"},{"label": "Nueva configuración: proporción de memoria disponible utilizada como umbral de volcado a disco para hash joins. Está habilitada de forma predeterminada con `0.5`, en consonancia con `max_bytes_ratio_before_external_group_by` y `max_bytes_ratio_before_external_sort`. Se combina con el valor absoluto `max_bytes_before_external_join` (se aplica el menor de los dos)."}]}]} />

La proporción de memoria disponible que se permite para `JOIN`. Una vez alcanzada, el hash join se convertirá en grace hash join para volcar en disco los datos del lado derecho.

Por ejemplo, si se establece en `0.6`, `JOIN` permitirá usar el `60%` de la memoria disponible (para server/user/merges) para la tabla hash del lado derecho al comienzo de la ejecución; a partir de ese momento, comenzará a volcar datos a disco.

Si se establecen tanto `max_bytes_before_external_join` como `max_bytes_ratio_before_external_join`, se usa el umbral resultante más bajo. Si la proporción es `0`, solo se aplica la configuración absoluta.

Tiene efecto en todos los `join_algorithm` basados en hash, incluido `grace_hash`, siempre que haya configurada una ruta de datos temporales.

## max\_bytes\_ratio\_before\_external\_sort

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "0.5"},{"label": "Habilitar el volcado automático a disco de forma predeterminada."}]}, {"id": "row-2","items": [{"label": "24.12"},{"label": "0"},{"label": "Nueva configuración."}]}]} />

La proporción de la memoria disponible que puede usarse para `ORDER BY`. Al alcanzarse, se utiliza la ordenación externa.

Por ejemplo, si se establece en `0.6`, `ORDER BY` permitirá usar el `60%` de la memoria disponible (para server/user/merges) al inicio de la ejecución; a partir de ese momento, empezará a usar ordenación externa.

Tenga en cuenta que `max_bytes_before_external_sort` sigue respetándose; el volcado a disco solo se realizará si el bloque de ordenación es mayor que `max_bytes_before_external_sort`.

## max\_bytes\_to\_read

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

El número máximo de bytes (de datos sin comprimir) que se pueden leer de una tabla al ejecutar una consulta.
La restricción se comprueba para cada fragmento de datos procesado, se aplica solo a la
expresión de tabla más interna y, al leer desde un servidor remoto, se comprueba solo en
el servidor remoto.

## max\_bytes\_to\_read\_leaf

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

La cantidad máxima de bytes (de datos sin comprimir) que se pueden leer de una
tabla local en un nodo hoja al ejecutar una consulta distribuida. Aunque las consultas distribuidas
pueden emitir varias subconsultas a cada segmento (hoja), este límite
solo se comprobará en la etapa de lectura en los nodos hoja y se ignorará en la
etapa de combinación de resultados en el nodo raíz.

Por ejemplo, un clúster consta de 2 segmentos y cada segmento contiene una tabla con
100 bytes de datos. Una consulta distribuida que deba leer todos los datos
de ambas tablas con la configuración `max_bytes_to_read=150` fallará, ya que en total
serán 200 bytes. Una consulta con `max_bytes_to_read_leaf=150` tendrá éxito, puesto que
los nodos hoja leerán como máximo 100 bytes.

La restricción se comprueba para cada fragmento de datos procesado.

<Note>
  Esta configuración es inestable con `prefer_localhost_replica=1`.
</Note>

## max\_bytes\_to\_sort

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

El número máximo de bytes antes de la ordenación. Si es necesario procesar una cantidad de
bytes sin comprimir superior a la especificada para la operación ORDER BY, el comportamiento
vendrá determinado por `sort_overflow_mode`, que de forma predeterminada está establecido en `throw`.

## max\_bytes\_to\_transfer

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

La cantidad máxima de bytes (datos no comprimidos) que se puede transferir a un servidor remoto
o guardar en una tabla temporal cuando se ejecuta la sección GLOBAL IN/JOIN.
