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

# Configuraciones de sesión columns_cache_*

> Configuraciones de sesión de ClickHouse del grupo generado columns_cache_*.

export const BetaBadge = ({link, galaxyTrack, galaxyEvent}) => {
  if (link) {
    return <a href={link} target="_blank" rel="noopener noreferrer" className="betaBadge" onClick={galaxyTrack && galaxyEvent ? galaxyOnClick(galaxyEvent) : undefined}>
                <span>Beta</span>
            </a>;
  }
  return <a href="https://clickhouse.com/docs/reference/settings/beta-and-experimental-features#beta-features" className="betaBadge">
            <span>Funcionalidad beta</span>
        </a>;
};

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>;
};

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

<h2 id="columns_cache_max_bytes_to_write_to_cache">
  columns\_cache\_max\_bytes\_to\_write\_to\_cache
</h2>

<BetaBadge />

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.10"},{"label": "0"},{"label": "Nueva configuración: umbral flexible por consulta para los bytes escritos en la caché de columnas; es orientativo y puede superarse, como máximo, en las entradas que un lector escribe en un batch (0 = la mitad del límite de tamaño actual de la caché de columnas, que se reduce cuando hay presión de memoria)."}]}]} />

Umbral flexible por consulta para los bytes que una sola consulta escribe en la caché de columnas. Se contabilizan los bytes escritos durante la consulta y, en cuanto el contador alcanza este valor, se omiten las demás escrituras en la caché durante el resto de la consulta. Se trata de un umbral orientativo, no de un límite estricto: un lector acumula las entradas de los gránulos que ha leído y las escribe en la caché en un único batch, y el batch que supera el umbral se almacena completo antes de sumarse al contador. Por lo tanto, la cantidad real escrita puede superar este valor, como máximo, en las entradas que un lector acumula entre dos escrituras (las columnas que lee, con una entrada por franja de unas 65536 filas cada una) y, si hay varios lectores ejecutándose a la vez, en esa cantidad por cada lector. El objetivo es evitar que un único escaneo de gran tamaño desplace datos útiles de la caché, no limitar con exactitud su uso.

Un valor de `0` indica que se usa la mitad del límite de tamaño actual de la caché de columnas: el valor configurado en `columns_cache_size`, o uno menor mientras la caché esté reducida por presión de memoria (consulte la métrica `ColumnsCacheSizeLimit`).

<h2 id="columns_cache_max_estimated_bytes_to_write_to_cache">
  columns\_cache\_max\_estimated\_bytes\_to\_write\_to\_cache
</h2>

<BetaBadge />

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.10"},{"label": "0"},{"label": "Nueva configuración: límite de bytes sin comprimir estimados que puede leer una consulta para que se permitan escrituras en la caché de columnas (0 = la mitad del límite de tamaño actual de la caché de columnas, que se reduce bajo presión de memoria)."}]}]} />

Si el tamaño estimado de los datos que una consulta lee de las partes `MergeTree` supera este valor, se inhiben las escrituras en la caché de columnas durante toda la consulta. La estimación se expresa en bytes sin comprimir, que es lo que se contabiliza en la caché, y se calcula a partir del tamaño de las columnas que lee la consulta (incluidas las columnas de `PREWHERE`, de mutación y de partes de parche), escalado a los rangos de marcas seleccionados. Todo ese volumen se imputa a la consulta antes de que lea nada. Así se evita que un único escaneo grande desplace datos útiles de la caché y que copie en ella datos que no podrían permanecer allí.

Un valor de `0` indica que se usa la mitad del límite de tamaño que tiene actualmente la caché de columnas. Ese límite coincide con el `columns_cache_size` configurado mientras el servidor dispone de memoria de sobra, pero la caché se reduce bajo presión de memoria (véase la métrica `ColumnsCacheSizeLimit`) y el presupuesto predeterminado se reduce con ella. Con el valor predeterminado de `columns_cache_size_ratio`, la mitad del límite equivale al tamaño del segmento de prueba de la caché, de modo que los datos de una consulta que supera este control pueden almacenarse en caché por completo en una sola pasada.

Este control no se aplica a las lecturas que descartan rangos de marcas durante su ejecución, como ocurre cuando `use_indexes_refiner_in_read_pools` está habilitado: en ese caso, cuántas de las marcas seleccionadas llega a tocar realmente la lectura solo se decide al dividir cada tarea, por lo que la estimación anterior sería una cota superior que imputaría marcas que la consulta nunca lee. En esas lecturas, la cantidad escrita queda limitada, en cambio, por `columns_cache_max_bytes_to_write_to_cache`.
