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

# Configurações de sessão columns_cache_*

> Configurações de sessão do ClickHouse no grupo gerado 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>Recurso beta</span>
        </a>;
};

export const VersionHistory = ({rows = []}) => {
  if (rows.length === 0) {
    return null;
  }
  const headers = ["Versão", "Valor padrão", "Comentário"];
  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
  }}>
        Histórico de versões
      </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"
  }}>Padrão</div>
      <div style={{
    overflowWrap: "anywhere"
  }}>{default_value}</div>
      {changeable_without_restart && <div style={{
    fontWeight: 600,
    opacity: 0.72,
    marginInlineStart: "0.5rem"
  }}>
          Pode ser alterado sem reiniciar
        </div>}
      {changeable_without_restart && <div style={{
    overflowWrap: "anywhere"
  }}>
          {changeable_without_restart}
        </div>}
    </div>;
};

Essas configurações estão disponíveis em [system.settings](/pt-BR/reference/system-tables/settings) e são geradas automaticamente a partir do [código-fonte](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": "Nova configuração: limiar flexível por consulta para os bytes gravados no cache de colunas; é apenas indicativo e pode ser excedido em até o volume de entradas que um leitor grava em um lote (0 = metade do limite atual de tamanho do cache de colunas, que é reduzido sob pressão de memória)."}]}]} />

Limiar flexível por consulta para os bytes que uma única consulta grava no cache de colunas. Os bytes gravados durante a consulta são contabilizados e, quando o contador atinge esse valor, as gravações subsequentes no cache são ignoradas pelo restante da consulta. Trata-se de um limiar indicativo, e não de um limite rígido: um leitor acumula as entradas dos grânulos que leu e as grava no cache em um único lote, e o lote que ultrapassa o limiar é armazenado integralmente antes de ser contabilizado no contador. Assim, a quantidade efetivamente gravada pode exceder esse valor em até o volume de entradas que um leitor acumula entre duas gravações — as colunas que ele lê, com uma entrada por faixa de cerca de 65536 linhas — e, com vários leitores em execução simultânea, nessa mesma proporção por leitor. O objetivo é evitar que uma única varredura grande expulse dados úteis do cache, e não limitar o uso do cache com exatidão.

Um valor `0` significa usar metade do limite de tamanho atual do cache de colunas: o `columns_cache_size` configurado, ou menos enquanto o cache estiver redimensionado sob pressão de memória (consulte a 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": "Nova configuração: limite para a estimativa de bytes não comprimidos que uma consulta lê para permitir gravações no cache de colunas (0 = metade do limite de tamanho atual do cache de colunas, que diminui sob pressão de memória)."}]}]} />

Se o tamanho estimado dos dados que uma consulta lê das partes `MergeTree` exceder esse valor, as gravações no cache de colunas são bloqueadas para a consulta inteira. A estimativa é feita em bytes não comprimidos, que é a unidade contabilizada pelo cache, com base no tamanho das colunas que a consulta lê (incluindo colunas de `PREWHERE`, de mutação e de partes de patch), proporcional aos intervalos de marcas selecionados, e a consulta é cobrada por todo esse volume antes de ler qualquer dado. Isso evita que uma única varredura grande expulse dados úteis do cache e que copie para o cache dados que não conseguiriam permanecer nele.

Um valor `0` significa usar metade do limite de tamanho atual do cache de colunas. Esse limite é o `columns_cache_size` configurado enquanto o servidor tem memória de sobra, mas o cache diminui sob pressão de memória (veja a métrica `ColumnsCacheSizeLimit`), e o orçamento padrão diminui junto. Com o `columns_cache_size_ratio` padrão, metade do limite corresponde ao tamanho do segmento probatório do cache, de modo que os dados de uma consulta que passa por esse controle podem ser armazenados integralmente em cache em uma única passagem.

O controle não se aplica a uma leitura que descarta intervalos de marcas durante a execução, o que ocorre quando `use_indexes_refiner_in_read_pools` está habilitado: quantas das marcas selecionadas essa leitura realmente acessa só é definido no momento em que cada tarefa é dividida, de modo que a estimativa acima seria um limite superior que contabilizaria marcas que a consulta nunca lê. Nessas leituras, a quantidade gravada é limitada por `columns_cache_max_bytes_to_write_to_cache`.
