> ## 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 de materialized_views_*

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

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

Estas 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).

<div id="materialized_views_ignore_errors">
  ## materialized\_views\_ignore\_errors
</div>

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

Se estiver habilitada, as exceções lançadas ao enviar dados para uma visão materializada dependente (no `SELECT` dela ou no sink da tabela interna) serão registradas como aviso, e a instrução `INSERT` será concluída com sucesso. Se estiver desabilitada (padrão), essa exceção será propagada, e a instrução `INSERT` falhará.

Essa configuração controla apenas como os erros são reportados. Ela não reverte uma gravação na tabela de origem nem garante se o bloco original já foi confirmado na tabela de origem quando ocorre um erro no pipeline de uma visão dependente. Quando desabilitada (padrão), o `INSERT` falha em caso de erro na visão — tente novamente com desduplicação de insert (`insert_deduplicate`, `deduplicate_blocks_in_dependent_materialized_views`) para entrega exatamente uma vez na tabela de origem e em todas as visões dependentes. Quando habilitada, o `INSERT` informa sucesso apesar da entrega parcial para visões com falha e suas cadeias subsequentes; use isso apenas quando as gravações na tabela de origem não puderem ser bloqueadas por problemas no lado da visão (por exemplo, tabelas `system.*_log`). Consulte a documentação de `CREATE VIEW` para ver a semântica completa.

<div id="materialized_views_populate_atomically">
  ## materialized\_views\_populate\_atomically
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.8"},{"label": "1"},{"label": "Nova configuração que torna o `CREATE MATERIALIZED VIEW ... POPULATE` simples atomicamente local: é criado um snapshot dos dados existentes e a visão é inscrita para novos inserts ao mesmo tempo, sob um breve lock exclusivo na origem, para que as linhas inseridas pelo mesmo servidor não sejam perdidas nem duplicadas. A garantia abrange apenas o caminho local de insert — inserts que chegam por outra réplica ou por meio de uma gravação distribuída não são abrangidos — e exige uma origem capaz de fornecer um snapshot fixado (a família `MergeTree` e `Memory`); outras origens, bem como `CREATE OR REPLACE` \/ `REPLACE`, mantêm o preenchimento legado não atômico. Defina como `false` para usar o comportamento legado não atômico em todos os casos."}]}]} />

Torna `CREATE MATERIALIZED VIEW ... POPULATE` atômico: a visão é inscrita para novos inserts na tabela de origem e, ao mesmo tempo, é criado um snapshot dos dados existentes, sob um breve lock exclusivo na tabela de origem, para que cada linha inserida durante o preenchimento seja entregue à visão exatamente uma vez (sem ser perdida nem duplicada). Em seguida, o preenchimento (possivelmente de longa duração) lê o snapshot fixado sem manter nenhum lock.

Trata-se de atomicidade local no caminho de insert: o lock exclusivo serializa apenas com inserts que adquirem o lock de armazenamento da tabela de origem no mesmo servidor, portanto a garantia de exatamente uma vez abrange inserts que chegam por esse servidor. Não é uma garantia para todo o cluster — linhas inseridas em outra réplica de uma origem `ReplicatedMergeTree` ou por meio de um caminho de gravação distribuída (por exemplo, em uma tabela `Distributed` ou via `ON CLUSTER`) durante o preenchimento ainda podem ser perdidas ou duplicadas.

Isso exige que a tabela de origem ofereça suporte à leitura de um snapshot fixado em um momento específico (a família `MergeTree` e `Memory`). Para qualquer outra origem (uma visão, `Distributed`, `Merge`, a família `Log` ou uma tabela que não esteja em um banco de dados `Atomic`), o preenchimento recorre ao comportamento legado não atômico (registrado no log do servidor): os dados existentes são lidos com um snapshot separado e não coordenado, de modo que linhas inseridas durante o preenchimento podem ser perdidas ou duplicadas. Defina esta configuração como `false` para forçar o comportamento legado em todas as origens. Aplica-se somente a `CREATE MATERIALIZED VIEW` simples; `CREATE OR REPLACE` / `REPLACE` sempre usam o preenchimento legado não atômico, assim como uma visão criada em um banco de dados `Replicated` (no qual `POPULATE` exige `database_replicated_allow_heavy_create`), pois não seria possível reverter de forma consistente, em todas as réplicas, um preenchimento que falhasse.

<div id="materialized_views_squash_parallel_inserts">
  ## materialized\_views\_squash\_parallel\_inserts
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.10"},{"label": "1"},{"label": "Adicionada a configuração para preservar o comportamento antigo, se necessário."}]}]} />

Agrupa inserts paralelos de uma única consulta INSERT na tabela de destino de visões materializadas para reduzir a quantidade de partes geradas.
Se definido como false e `parallel_view_processing` estiver ativado, a consulta INSERT gerará uma parte na tabela de destino para cada `max_insert_thread`.
