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

# Configurações de sessão de materialize_statistics_on_insert_*

> Configurações de sessão do ClickHouse no grupo gerado materialize_statistics_on_insert_*.

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](/docs/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).

<div id="materialize_statistics_on_insert">
  ## materialize\_statistics\_on\_insert
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.8"},{"label": "1"},{"label": "Materializa estatísticas de colunas em INSERT por padrão para tabelas menores que materialize_statistics_on_insert_max_table_size, permitindo que a reordenação de junções baseada em custo tenha boas estimativas em tabelas de dimensão recém-carregadas."}]}, {"id": "row-2","items": [{"label": "26.4"},{"label": "0"},{"label": "Desabilita por padrão a criação de estatísticas em INSERT, usando merges em vez disso"}]}, {"id": "row-3","items": [{"label": "24.6"},{"label": "1"},{"label": "Adicionada nova configuração para permitir desabilitar a materialização de estatísticas durante a inserção"}]}]} />

Quando habilitado, INSERTs criam e inserem estatísticas. Quando desabilitado, as estatísticas são criadas e armazenadas durante merges ou por meio de MATERIALIZE STATISTICS explícito. Apenas as tabelas cujo tamanho atual, somado ao tamanho do bloco gravado, não exceda `materialize_statistics_on_insert_max_table_size` são afetadas.

<div id="materialize_statistics_on_insert_max_table_size">
  ## materialize\_statistics\_on\_insert\_max\_table\_size
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.8"},{"label": "26843545600"},{"label": "Nova configuração: materialize estatísticas de colunas no INSERT somente para tabelas cujo tamanho atual, somado ao tamanho do bloco inserido, seja inferior a esse limite. previous_value=0 (sem limite); portanto, a `compatibility` com versões anteriores à 26.8 restaura o comportamento anterior (antes deste PR, não havia limite de tamanho; assim, os usuários que reativarem explicitamente `materialize_statistics_on_insert` continuarão materializando estatísticas independentemente do tamanho da tabela)."}]}]} />

Crie e armazene estatísticas de colunas no INSERT (consulte `materialize_statistics_on_insert`) somente para tabelas em que o tamanho total atual das partes ativas em disco (comprimido, em bytes), somado ao tamanho não comprimido em memória do bloco que está sendo gravado, não exceda este valor. O contrato é por bloco gravado, não por INSERT: um único INSERT é dividido em um bloco por partição (e, no caso de inserts de streaming, em vários blocos), e cada um deles é verificado em relação ao tamanho das partes já ativas, pois as partes do INSERT em andamento ainda não estão ativas. Portanto, uma única carga em massa em uma tabela vazia pode criar estatísticas para todas as suas partes, mesmo que o tamanho total delas exceda o limite; o limite passa a vigorar nos inserts subsequentes. O uso do tamanho não comprimido do bloco (o tamanho comprimido é desconhecido antes de a parte ser gravada) torna a verificação deliberadamente conservadora em, no máximo, um bloco. Isso mantém as estatísticas atualizadas em pequenas tabelas de dimensão, o que é importante para a reordenação de junções baseada em custo, e evita a sobrecarga por insert em grandes tabelas de fatos (as estatísticas delas são criadas durante os merges). `0` significa que não há limite de tamanho.
