> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-mintlify-8a08bda2.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Configurações da sessão

> Configurações encontradas na tabela ``system.settings``.

export const SettingsInfoBlock = ({type, default_value, changeable_without_restart}) => {
  const cells = [["Type", <Badge color="surface">{type}</Badge>], ["Default value", <Badge color="surface">{default_value}</Badge>]];
  if (changeable_without_restart) {
    const isYes = String(changeable_without_restart).trim().toLowerCase() === "yes";
    const badge = isYes ? <Badge icon="check" stroke color="green" size="sm">Yes</Badge> : <Badge icon="x" stroke color="red" size="sm">No</Badge>;
    cells.push(["Changeable without restart", badge]);
  }
  return <table>
      <thead>
        <tr>
          {cells.map(([h]) => <th key={h}>{h}</th>)}
        </tr>
      </thead>
      <tbody>
        <tr>
          {cells.map(([h, v]) => <td key={h}>{v}</td>)}
        </tr>
      </tbody>
    </table>;
};

export const CloudOnlyBadge = () => {
  return <div className="cloudBadge">
            <div className="cloudIcon">
            <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
                <path fillRule="evenodd" clipRule="evenodd" d="M5.33395 12.6667H12.3739C13.6593 12.6667 14.7073 11.6187 14.7073 10.3334C14.7073 9.04804 13.6593 8.00004 12.3739 8.00004H12.0839V7.33337C12.0839 5.12671 10.2906 3.33337 8.08395 3.33337C6.09928 3.33337 4.45395 4.78537 4.14195 6.68204C2.55728 6.76271 1.29395 8.06204 1.29395 9.66671C1.29395 11.3234 2.63728 12.6667 4.29395 12.6667H5.33395Z" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round" />
            </svg>
        </div>
            {'ClickHouse Cloud only'}
        </div>;
};

export const galaxyOnClick = eventName => () => {
  try {
    if (typeof window !== "undefined" && window.galaxy && eventName) {
      window.galaxy.track(eventName, {
        interaction: "click"
      });
    }
  } catch (e) {}
};

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}>
                <Icon />
                <span>Beta</span>
            </a>;
  }
  return <div className="betaBadge">
            <Icon />
            <span>
                Beta feature. 
                <u>
                    <a href="/docs/beta-and-experimental-features#beta-features">
                        Learn more.
                    </a>
                </u>
            </span>
        </div>;
};

export const ExperimentalBadge = () => {
  return <div className="experimentalBadge">
            <div className="experimentalIcon">
            <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
                <path strokeWidth="1.25" d="M5.5 2H10.5" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path strokeWidth="1.25" d="M9.50015 2V6.19625L13.4283 12.7425C13.4738 12.8183 13.4985 12.9049 13.4996 12.9934C13.5008 13.0818 13.4785 13.169 13.435 13.246C13.3914 13.323 13.3283 13.3871 13.2519 13.4317C13.1755 13.4764 13.0886 13.4999 13.0002 13.5H3.00015C2.91164 13.5 2.8247 13.4766 2.74822 13.432C2.67174 13.3874 2.60847 13.3233 2.56487 13.2463C2.52126 13.1693 2.49889 13.082 2.50004 12.9935C2.50119 12.905 2.52582 12.8184 2.5714 12.7425L6.50015 6.19625V2" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path strokeWidth="1.25" d="M4.47656 9.56754C5.30344 9.41254 6.47656 9.47942 7.99969 10.25C10.0153 11.2707 11.4216 11.0569 12.2184 10.7282" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
            </svg>
        </div>
            Experimental feature. <u><a href="/docs/beta-and-experimental-features#experimental-features">Learn more.</a></u>
        </div>;
};

Todas as configurações abaixo também estão disponíveis na tabela [system.settings](/pt-BR/reference/system-tables/settings). Essas configurações são geradas automaticamente a partir do [código-fonte](https://github.com/ClickHouse/ClickHouse/blob/master/src/Core/Settings.cpp).

<div id="add_http_cors_header">
  ## add\_http\_cors\_header
</div>

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

Adiciona o cabeçalho HTTP CORS.

<div id="additional_result_filter">
  ## additional\_result\_filter
</div>

Uma expressão de filtro adicional aplicada ao resultado da consulta `SELECT`.
Essa configuração não é aplicada a nenhuma subconsulta.

**Exemplo**

```sql theme={null}
INSERT INTO table_1 VALUES (1, 'a'), (2, 'bb'), (3, 'ccc'), (4, 'dddd');
SElECT * FROM table_1;
```

```response theme={null}
┌─x─┬─y────┐
│ 1 │ a    │
│ 2 │ bb   │
│ 3 │ ccc  │
│ 4 │ dddd │
└───┴──────┘
```

```sql theme={null}
SELECT *
FROM table_1
SETTINGS additional_result_filter = 'x != 2'
```

```response theme={null}
┌─x─┬─y────┐
│ 1 │ a    │
│ 3 │ ccc  │
│ 4 │ dddd │
└───┴──────┘
```

<div id="additional_table_filters">
  ## additional\_table\_filters
</div>

<SettingsInfoBlock type="Map" default_value="{}" />

Uma expressão de filtro adicional aplicada após a leitura
da tabela especificada.

**Exemplo**

```sql theme={null}
INSERT INTO table_1 VALUES (1, 'a'), (2, 'bb'), (3, 'ccc'), (4, 'dddd');
SELECT * FROM table_1;
```

```response theme={null}
┌─x─┬─y────┐
│ 1 │ a    │
│ 2 │ bb   │
│ 3 │ ccc  │
│ 4 │ dddd │
└───┴──────┘
```

```sql theme={null}
SELECT *
FROM table_1
SETTINGS additional_table_filters = {'table_1': 'x != 2'}
```

```response theme={null}
┌─x─┬─y────┐
│ 1 │ a    │
│ 3 │ ccc  │
│ 4 │ dddd │
└───┴──────┘
```

<div id="aggregate_function_input_format">
  ## aggregate\_function\_input\_format
</div>

<SettingsInfoBlock type="AggregateFunctionInputFormat" default_value="state" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "state"},{"label": "Nova configuração para controlar o formato de entrada de AggregateFunction durante operações de INSERT. O valor da configuração é `state` por padrão"}]}]} />

Formato da entrada de AggregateFunction durante operações de INSERT.

Possíveis valores:

* `state` — String binária com o estado serializado (padrão). Esse é o comportamento padrão, em que os valores de AggregateFunction são esperados como dados binários.
* `value` — O formato espera um único valor do argumento da função de agregação ou, no caso de vários argumentos, uma tupla com eles. Eles serão desserializados usando o IDataType ou DataTypeTuple correspondente e, em seguida, agregados para formar o estado.
* `array` — O formato espera um Array de valores, conforme descrito na opção `value` acima. Todos os elementos do array serão agregados para formar o estado.

**Exemplos**

Para uma tabela com a estrutura:

```sql theme={null}
CREATE TABLE example (
    user_id UInt64,
    avg_session_length AggregateFunction(avg, UInt32)
);
```

Com `aggregate_function_input_format = 'value'`:

```sql theme={null}
INSERT INTO example FORMAT CSV
123,456
```

Com `aggregate_function_input_format = 'array'`:

```sql theme={null}
INSERT INTO example FORMAT CSV
123,"[456,789,101]"
```

Observação: os formatos `value` e `array` são mais lentos do que o formato `state` padrão, pois exigem a criação e a agregação de valores na inserção.

<div id="aggregate_functions_null_for_empty">
  ## aggregate\_functions\_null\_for\_empty
</div>

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

Ativa ou desativa a reescrita de todas as funções de agregação em uma consulta, adicionando a elas o sufixo [-OrNull](/pt-BR/reference/functions/aggregate-functions/combinators#-ornull). Ative essa opção para garantir compatibilidade com o padrão SQL.
Isso é implementado por meio de reescrita de consulta (semelhante à configuração [count\_distinct\_implementation](#count_distinct_implementation)) para obter resultados consistentes em consultas distribuídas.

Valores possíveis:

* 0 — Desativado.
* 1 — Ativado.

**Exemplo**

Considere a seguinte consulta com funções de agregação:

```sql theme={null}
SELECT SUM(-1), MAX(0) FROM system.one WHERE 0;
```

Com `aggregate_functions_null_for_empty = 0`, o resultado seria:

```text theme={null}
┌─SUM(-1)─┬─MAX(0)─┐
│       0 │      0 │
└─────────┴────────┘
```

Com `aggregate_functions_null_for_empty = 1`, o resultado seria:

```text theme={null}
┌─SUMOrNull(-1)─┬─MAXOrNull(0)─┐
│          NULL │         NULL │
└───────────────┴──────────────┘
```

<div id="aggregation_in_order_max_block_bytes">
  ## aggregation\_in\_order\_max\_block\_bytes
</div>

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

Tamanho máximo do bloco, em bytes, acumulado durante a agregação na ordem da chave primária. Um tamanho de bloco menor permite paralelizar melhor a etapa final de merge da agregação.

<div id="aggregation_memory_efficient_merge_threads">
  ## aggregation\_memory\_efficient\_merge\_threads
</div>

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

Número de threads a serem usadas para mesclar resultados intermediários da agregação no modo com uso eficiente de memória. Quanto maior, mais memória é consumida. 0 significa o mesmo que 'max\_threads'.

<div id="ai_function_max_api_calls_per_query">
  ## ai\_function\_max\_api\_calls\_per\_query
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "0"},{"label": "Nova configuração"}]}]} />

Número máximo de requisições HTTP que as funções de IA podem enviar por consulta. Defina 0 para desabilitar.

<div id="ai_function_max_input_tokens_per_query">
  ## ai\_function\_max\_input\_tokens\_per\_query
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "1000000"},{"label": "Nova configuração"}]}]} />

Total máximo de tokens de entrada (`prompt`) em todas as chamadas de API da função de IA em uma única consulta. Esse total é contabilizado cumulativamente com base nas respostas do provedor. Observe que esse limite pode ser excedido pelo equivalente aos tokens de entrada de uma chamada, pois o número de tokens de entrada de uma chamada não é conhecido com antecedência. Defina como 0 para desabilitar.

<div id="ai_function_max_output_tokens_per_query">
  ## ai\_function\_max\_output\_tokens\_per\_query
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "500000"},{"label": "Nova configuração"}]}]} />

Máximo total de tokens de saída (conclusão) em todas as chamadas de API da AI function em uma única consulta. Esse total é rastreado cumulativamente com base nas respostas do provedor. Observe que esse limite pode ser excedido pelo volume de tokens de saída de uma chamada, já que a quantidade de tokens de saída de uma chamada não é conhecida com antecedência. Defina como 0 para desabilitar.

<div id="ai_function_max_retries">
  ## ai\_function\_max\_retries
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "0"},{"label": "Nova configuração"}]}]} />

Número máximo de tentativas em caso de erros transitórios por solicitação individual à API. Cada nova tentativa usa backoff exponencial a partir de `ai_function_retry_initial_delay_ms`.

<div id="ai_function_request_timeout_sec">
  ## ai\_function\_request\_timeout\_sec
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "60"},{"label": "Nova configuração"}]}]} />

Tempo limite, em segundos, para requisições HTTP individuais feitas por funções de IA (completions de chat com IA e chamadas à API de embedding). Se uma requisição não for concluída dentro desse prazo, ela será considerada malsucedida e poderá ser repetida de acordo com `ai_function_max_retries`.

<div id="ai_function_retry_initial_delay_ms">
  ## ai\_function\_retry\_initial\_delay\_ms
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "1000"},{"label": "Nova configuração"}]}]} />

Atraso inicial, em milissegundos, antes da primeira nova tentativa de uma solicitação à API da função de IA que falhou. O atraso dobra a cada tentativa subsequente (backoff exponencial). Por exemplo, com as configurações padrão: 1000ms, 2000ms, 4000ms.

<div id="ai_function_throw_on_error">
  ## ai\_function\_throw\_on\_error
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "1"},{"label": "Nova configuração"}]}]} />

Se true (padrão), uma chamada de função de IA que falhar de forma permanente após esgotar todas as tentativas aborta a consulta com uma exceção. Se false, a linha com falha recebe o valor padrão do tipo da coluna (string vazia para String), e o processamento continua.

<div id="ai_function_throw_on_quota_exceeded">
  ## ai\_function\_throw\_on\_quota\_exceeded
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "1"},{"label": "Nova configuração"}]}]} />

Se true (padrão), exceder um limite de cota da função de IA (`ai_function_max_input_tokens_per_query`, `ai_function_max_output_tokens_per_query` ou `ai_function_max_api_calls_per_query`) interrompe a consulta com uma exceção. Se false, as linhas restantes recebem o valor padrão do tipo da coluna (string vazia para String).

<div id="allow_aggregate_partitions_independently">
  ## allow\_aggregate\_partitions\_independently
</div>

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

Habilita a agregação independente de partições em threads separadas quando a chave de partição é compatível com a chave de agrupamento. Isso é vantajoso quando o número de partições é próximo ao número de núcleos e as partições têm aproximadamente o mesmo tamanho

<div id="allow_archive_path_syntax">
  ## allow\_archive\_path\_syntax
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.8"},{"label": "1"},{"label": "Nova configuração adicionada para permitir desabilitar a sintaxe de caminho de arquivo compactado."}]}, {"id": "row-2","items": [{"label": "24.5"},{"label": "1"},{"label": "Nova configuração adicionada para permitir desabilitar a sintaxe de caminho de arquivo compactado."}]}]} />

Os motores File/S3 e a função de tabela interpretarão caminhos com '::' como `<archive> :: <file>` se o arquivo compactado tiver a extensão correta.

<div id="allow_asynchronous_read_from_io_pool_for_merge_tree">
  ## allow\_asynchronous\_read\_from\_io\_pool\_for\_merge\_tree
</div>

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

Use o pool de E/S em segundo plano para ler tabelas MergeTree. Essa configuração pode aumentar o desempenho de consultas limitadas por E/S.

<div id="allow_calculating_subcolumns_sizes_for_merge_tree_reading">
  ## allow\_calculating\_subcolumns\_sizes\_for\_merge\_tree\_reading
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": "1"},{"label": "Permite calcular os tamanhos das subcolunas para a leitura do MergeTree, a fim de melhorar a divisão das tarefas de leitura"}]}]} />

Quando habilitada, o ClickHouse calculará o tamanho dos arquivos necessários para ler cada subcoluna, melhorando o cálculo dos tamanhos de tarefas e blocos.

<div id="allow_changing_replica_until_first_data_packet">
  ## allow\_changing\_replica\_until\_first\_data\_packet
</div>

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

Se estiver habilitado, em requisições hedged podemos iniciar uma nova conexão até receber o primeiro pacote de dados, mesmo que já tenhamos feito algum progresso
(mas o progresso não tenha sido atualizado dentro do timeout `receive_data_timeout`); caso contrário, a troca de réplica é desabilitada após a primeira vez em que houver progresso.

<div id="allow_create_index_without_type">
  ## allow\_create\_index\_without\_type
</div>

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

Permite a consulta CREATE INDEX sem TYPE. A consulta será ignorada. Feito para testes de compatibilidade com SQL.

<div id="allow_custom_error_code_in_throwif">
  ## allow\_custom\_error\_code\_in\_throwif
</div>

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

Permite usar um código de erro personalizado na função throwIf(). Se for true, as exceções lançadas poderão ter códigos de erro inesperados.

<div id="allow_ddl">
  ## allow\_ddl
</div>

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

Se estiver definido como true, o usuário poderá executar consultas DDL.

<div id="allow_deprecated_database_ordinary">
  ## allow\_deprecated\_database\_ordinary
</div>

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

Permite criar bancos de dados com o engine Ordinary, que está obsoleto

<div id="allow_deprecated_error_prone_window_functions">
  ## allow\_deprecated\_error\_prone\_window\_functions
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.5"},{"label": "0"},{"label": "Permite o uso de funções de janela obsoletas e propensas a erros (neighbor, runningAccumulate, runningDifferenceStartingWithFirstValue, runningDifference)"}]}]} />

Permite o uso de funções de janela obsoletas e propensas a erros (neighbor, runningAccumulate, runningDifferenceStartingWithFirstValue, runningDifference)

<div id="allow_deprecated_snowflake_conversion_functions">
  ## allow\_deprecated\_snowflake\_conversion\_functions
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.6"},{"label": "0"},{"label": "Funções obsoletas snowflakeToDateTime[64] e dateTime[64]ToSnowflake desativadas."}]}]} />

As funções `snowflakeToDateTime`, `snowflakeToDateTime64`, `dateTimeToSnowflake` e `dateTime64ToSnowflake` estão obsoletas e desativadas por padrão.
Use as funções `snowflakeIDToDateTime`, `snowflakeIDToDateTime64`, `dateTimeToSnowflakeID` e `dateTime64ToSnowflakeID` no lugar.

Para reativar as funções obsoletas (por exemplo, durante um período de transição), defina esta configuração como `true`.

<div id="allow_deprecated_syntax_for_merge_tree">
  ## allow\_deprecated\_syntax\_for\_merge\_tree
</div>

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

Permite criar tabelas \*MergeTree usando a sintaxe obsoleta de definição de engine

<div id="allow_distributed_ddl">
  ## allow\_distributed\_ddl
</div>

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

Se estiver definido como true, o usuário poderá executar consultas DDL distribuídas.

<div id="allow_drop_detached">
  ## allow\_drop\_detached
</div>

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

Permite consultas ALTER TABLE ... DROP DETACHED PART\[ITION] ...

<div id="allow_dynamic_type_in_join_keys">
  ## allow\_dynamic\_type\_in\_join\_keys
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.10"},{"label": "0"},{"label": "Desabilita por padrão o uso do tipo Dynamic em chaves de JOIN"}]}]} />

Permite usar o tipo Dynamic em chaves de JOIN. Adicionado por compatibilidade. Não é recomendado usar o tipo Dynamic em chaves de JOIN, porque a comparação com outros tipos pode levar a resultados inesperados.

<div id="allow_execute_multiif_columnar">
  ## allow\_execute\_multiif\_columnar
</div>

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

Permite executar a função multiIf de forma colunar

<div id="allow_experimental_ai_functions">
  ## allow\_experimental\_ai\_functions
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "0"},{"label": "Nova configuração"}]}]} />

Ativa funções de IA experimentais (por exemplo, `aiGenerateContent`). Essas funções fazem chamadas HTTP externas para provedores de IA.

<div id="allow_experimental_analyzer">
  ## allow\_experimental\_analyzer
</div>

**Aliases**: `enable_analyzer`

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "1"},{"label": "Habilita o analyzer e o planner por padrão."}]}]} />

Permite o novo analyzer de consulta.

<div id="allow_experimental_cleanup_old_data_files_compaction">
  ## allow\_experimental\_cleanup\_old\_data\_files\_compaction
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "0"},{"label": "Nova configuração"}]}]} />

Permite limpar arquivos de dados antigos durante a compactação do Iceberg.

<div id="allow_experimental_codecs">
  ## allow\_experimental\_codecs
</div>

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

Se estiver definido como true, permite especificar codecs de compressão experimentais (mas ainda não há nenhum, e esta opção não faz nada).

<div id="allow_experimental_correlated_subqueries">
  ## allow\_experimental\_correlated\_subqueries
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "1"},{"label": "Suporte a subconsultas correlacionadas marcado como Beta."}]}, {"id": "row-2","items": [{"label": "25.4"},{"label": "0"},{"label": "Adicionada nova configuração para permitir a execução de subconsultas correlacionadas."}]}]} />

Permite executar subconsultas correlacionadas.

<div id="allow_experimental_database_glue_catalog">
  ## allow\_experimental\_database\_glue\_catalog
</div>

**Aliases**: `allow_database_glue_catalog`

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.3"},{"label": "0"},{"label": "Permite usar o engine de banco de dados experimental DataLakeCatalog com catalog_type = 'glue'"}]}]} />

Permite usar o engine de banco de dados experimental DataLakeCatalog com catalog\_type = 'glue'

Valor padrão no Cloud: `1`.

<div id="allow_experimental_database_hms_catalog">
  ## allow\_experimental\_database\_hms\_catalog
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "0"},{"label": "Permite o mecanismo experimental de banco de dados DataLakeCatalog com catalog_type = 'hive'"}]}]} />

Permite o mecanismo experimental de banco de dados DataLakeCatalog com catalog\_type = 'hms'

<div id="allow_experimental_database_iceberg">
  ## allow\_experimental\_database\_iceberg
</div>

**Aliases**: `allow_database_iceberg`

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.12"},{"label": "0"},{"label": "Nova configuração."}]}]} />

Permite usar o engine de banco de dados experimental DataLakeCatalog com catalog\_type = 'iceberg'

Valor padrão no Cloud: `1`.

<div id="allow_experimental_database_materialized_postgresql">
  ## allow\_experimental\_database\_materialized\_postgresql
</div>

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

Permite criar um banco de dados com Engine=MaterializedPostgreSQL(...).

<div id="allow_experimental_database_paimon_rest_catalog">
  ## allow\_experimental\_database\_paimon\_rest\_catalog
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.1"},{"label": "0"},{"label": "Nova configuração"}]}]} />

Permite usar o mecanismo de banco de dados experimental DataLakeCatalog com catalog\_type = 'paimon\_rest'

<div id="allow_experimental_database_unity_catalog">
  ## allow\_experimental\_database\_unity\_catalog
</div>

**Aliases**: `allow_database_unity_catalog`

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.3"},{"label": "0"},{"label": "Permite o mecanismo de banco de dados experimental DataLakeCatalog com catalog_type = 'unity'"}]}]} />

Permite o mecanismo de banco de dados experimental DataLakeCatalog com catalog\_type = 'unity'

Valor padrão no Cloud: `1`.

<div id="allow_experimental_delta_kernel_rs">
  ## allow\_experimental\_delta\_kernel\_rs
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "1"},{"label": "Nova configuração"}]}]} />

Permite a implementação experimental do delta-kernel-rs.

<div id="allow_experimental_delta_lake_writes">
  ## allow\_experimental\_delta\_lake\_writes
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.9"},{"label": "0"},{"label": "Nova configuração."}]}]} />

Habilita o recurso de escrita do delta-kernel.

<div id="allow_experimental_expire_snapshots">
  ## allow\_experimental\_expire\_snapshots
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": "0"},{"label": "Nova configuração."}]}]} />

Permite executar o comando experimental do Iceberg `ALTER TABLE ... EXECUTE expire_snapshots`.

<div id="allow_experimental_funnel_functions">
  ## allow\_experimental\_funnel\_functions
</div>

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

Ativa funções experimentais para análise de funil.

<div id="allow_experimental_geo_types_in_iceberg">
  ## allow\_experimental\_geo\_types\_in\_iceberg
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "0"},{"label": "Nova configuração para permitir interpretar campos `geometry`/`geography` do Iceberg como o tipo `Geometry` (Variant) do ClickHouse."}]}]} />

Permite interpretar os tipos de campo `geometry` e `geography` do Iceberg como o tipo `Geometry` (Variant) do ClickHouse.

<div id="allow_experimental_hash_functions">
  ## allow\_experimental\_hash\_functions
</div>

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

Ativa funções de hash experimentais

<div id="allow_experimental_iceberg_compaction">
  ## allow\_experimental\_iceberg\_compaction
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "0"},{"label": "Nova configuração"}]}]} />

Permite usar explicitamente 'OPTIMIZE' em tabelas Iceberg.

<div id="allow_experimental_join_right_table_sorting">
  ## allow\_experimental\_join\_right\_table\_sorting
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.9"},{"label": "0"},{"label": "Se estiver definido como true e as condições de `join_to_sort_minimum_perkey_rows` e `join_to_sort_maximum_table_rows` forem atendidas, a tabela da direita será reordenada por chave para melhorar o desempenho em um hash join `left` ou `inner`"}]}]} />

Se estiver definido como true e as condições de `join_to_sort_minimum_perkey_rows` e `join_to_sort_maximum_table_rows` forem atendidas, a tabela da direita será reordenada por chave para melhorar o desempenho em um hash join `left` ou `inner`.

<div id="allow_experimental_json_lazy_type_hints">
  ## allow\_experimental\_json\_lazy\_type\_hints
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": "0"},{"label": "Nova configuração experimental para type hints lazy de JSON"}]}]} />

Ativa type hints lazy experimentais para o tipo JSON. Esse recurso permite otimizar as conversões do tipo JSON adiando a avaliação das type hints.

<div id="allow_experimental_kafka_offsets_storage_in_keeper">
  ## allow\_experimental\_kafka\_offsets\_storage\_in\_keeper
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.8"},{"label": "0"},{"label": "Permitir o uso do engine de armazenamento experimental do Kafka que armazena os offsets confirmados no ClickHouse Keeper"}]}]} />

Permite o recurso experimental de armazenar offsets do Kafka no ClickHouse Keeper. Quando ativado, é possível especificar um caminho do ClickHouse Keeper e o nome da réplica para o engine de tabela Kafka. Como resultado, em vez do engine Kafka padrão, será usado um novo tipo de engine de armazenamento que armazena os offsets confirmados principalmente no ClickHouse Keeper

<div id="allow_experimental_kusto_dialect">
  ## allow\_experimental\_kusto\_dialect
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "0"},{"label": "Nova configuração"}]}]} />

Ativa a Kusto Query Language (KQL) - uma alternativa ao SQL.

<div id="allow_experimental_materialized_postgresql_table">
  ## allow\_experimental\_materialized\_postgresql\_table
</div>

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

Permite usar a table engine MaterializedPostgreSQL. Desabilitado por padrão, pois esse recurso é experimental

<div id="allow_experimental_nlp_functions">
  ## allow\_experimental\_nlp\_functions
</div>

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

Habilita funções experimentais para processamento de linguagem natural.

<div id="allow_experimental_nullable_tuple_type">
  ## allow\_experimental\_nullable\_tuple\_type
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.1"},{"label": "0"},{"label": "Nova configuração experimental"}]}]} />

Permite criar colunas [Tuple](/pt-BR/reference/data-types/tuple) [Nullable](/pt-BR/reference/data-types/nullable) em tabelas.

Essa configuração não controla se as subcolunas de tupla extraídas podem ser `Nullable` (por exemplo, de colunas Dynamic, Variant, JSON ou Tuple).
Use `allow_nullable_tuple_in_extracted_subcolumns` para controlar se as subcolunas de tupla extraídas podem ser `Nullable`.

<div id="allow_experimental_object_storage_queue_hive_partitioning">
  ## allow\_experimental\_object\_storage\_queue\_hive\_partitioning
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.1"},{"label": "0"},{"label": "Nova configuração."}]}]} />

Permite usar o particionamento Hive com os motores S3Queue/AzureQueue

<div id="allow_experimental_paimon_storage_engine">
  ## allow\_experimental\_paimon\_storage\_engine
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "0"},{"label": "Nova configuração."}]}]} />

Permite criar tabelas usando motores de tabela Paimon\*.

<div id="allow_experimental_parallel_reading_from_replicas">
  ## allow\_experimental\_parallel\_reading\_from\_replicas
</div>

**Aliases**: `enable_parallel_replicas`

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

Usa até `max_parallel_replicas` réplicas de cada shard para executar consultas SELECT. A leitura é paralelizada e coordenada dinamicamente. 0 - desabilitado, 1 - habilitado, desabilita silenciosamente em caso de falha, 2 - habilitado, gera uma exceção em caso de falha

<div id="allow_experimental_polyglot_dialect">
  ## allow\_experimental\_polyglot\_dialect
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": "0"},{"label": "Nova configuração para habilitar o dialeto polyglot do transpiler SQL."}]}]} />

Habilita o transpiler polyglot de SQL — transpila SQL de mais de 30 dialetos (MySQL, PostgreSQL, SQLite, Snowflake, DuckDB etc.) para ClickHouse SQL.

<div id="allow_experimental_prql_dialect">
  ## allow\_experimental\_prql\_dialect
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "0"},{"label": "Nova configuração"}]}]} />

Ativa o PRQL — uma alternativa ao SQL.

<div id="allow_experimental_query_deduplication">
  ## allow\_experimental\_query\_deduplication
</div>

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

Desduplicação experimental de dados para consultas SELECT com base nos UUIDs das partes

<div id="allow_experimental_time_series_aggregate_functions">
  ## allow\_experimental\_time\_series\_aggregate\_functions
</div>

**Aliases**: `allow_experimental_ts_to_grid_aggregate_function`

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.6"},{"label": "0"},{"label": "Nova configuração para habilitar funções de agregação experimentais timeSeries*."}]}]} />

Funções de agregação experimentais timeSeries\* para reamostragem de séries temporais no estilo Prometheus e cálculo de taxa e delta.

<div id="allow_experimental_time_series_table">
  ## allow\_experimental\_time\_series\_table
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.8"},{"label": "0"},{"label": "Adicionada nova configuração para permitir o motor de tabela TimeSeries"}]}]} />

Permite criar tabelas com o motor de tabela [TimeSeries](/pt-BR/reference/engines/table-engines/integrations/time-series). Valores possíveis:

* 0 — o motor de tabela [TimeSeries](/pt-BR/reference/engines/table-engines/integrations/time-series) está desabilitado.
* 1 — o motor de tabela [TimeSeries](/pt-BR/reference/engines/table-engines/integrations/time-series) está habilitado.

<div id="allow_experimental_unique_key">
  ## allow\_experimental\_unique\_key
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "0"},{"label": "Nova configuração para habilitar a cláusula experimental UNIQUE KEY em tabelas da família MergeTree"}]}]} />

Permite criar tabelas com a cláusula `UNIQUE KEY` em motores da família MergeTree.

<div id="allow_experimental_window_view">
  ## allow\_experimental\_window\_view
</div>

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

Ativa WINDOW VIEW. Ainda não é estável o suficiente.

<div id="allow_experimental_ytsaurus_dictionary_source">
  ## allow\_experimental\_ytsaurus\_dictionary\_source
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "0"},{"label": "Nova configuração."}]}]} />

Fonte experimental de dicionário para integração com YTsaurus.

<div id="allow_experimental_ytsaurus_table_engine">
  ## allow\_experimental\_ytsaurus\_table\_engine
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "0"},{"label": "Nova configuração."}]}]} />

Engine de tabela experimental para integração com o YTsaurus.

<div id="allow_experimental_ytsaurus_table_function">
  ## allow\_experimental\_ytsaurus\_table\_function
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "0"},{"label": "Nova configuração."}]}]} />

Mecanismo de tabela experimental para integração com YTsaurus.

<div id="allow_fuzz_query_functions">
  ## allow\_fuzz\_query\_functions
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "0"},{"label": "Nova configuração para habilitar a função fuzzQuery."}]}]} />

Habilita a função `fuzzQuery`, que aplica mutações aleatórias de AST a uma string de consulta.

<div id="allow_general_join_planning">
  ## allow\_general\_join\_planning
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "1"},{"label": "Permite um algoritmo de planejamento de join mais genérico quando o algoritmo de hash join está habilitado."}]}]} />

Permite um algoritmo de planejamento de join mais genérico, capaz de lidar com condições mais complexas, mas que funciona apenas com hash join. Se o hash join não estiver habilitado, o algoritmo usual de planejamento de join será usado, independentemente do valor desta configuração.

<div id="allow_get_client_http_header">
  ## allow\_get\_client\_http\_header
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "0"},{"label": "Introduzida uma nova função."}]}]} />

Permite usar a função `getClientHTTPHeader`, que possibilita obter o valor de um header da requisição HTTP atual. Ela não é habilitada por padrão por motivos de segurança, porque alguns headers, como `Cookie`, podem conter informações sensíveis. Observe que os headers `X-ClickHouse-*` e `Authentication` são sempre restritos e não podem ser obtidos com essa função.

<div id="allow_hyperscan">
  ## allow\_hyperscan
</div>

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

Permite funções que usam a biblioteca Hyperscan. Desative para evitar tempos de compilação potencialmente longos e o uso excessivo de recursos.

<div id="allow_iceberg_remove_orphan_files">
  ## allow\_iceberg\_remove\_orphan\_files
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "0"},{"label": "Nova configuração que controla a remoção de arquivos órfãos do Iceberg"}]}]} />

Permite usar `ALTER TABLE ... EXECUTE remove_orphan_files()` em tabelas Iceberg.

<div id="allow_insert_into_iceberg">
  ## allow\_insert\_into\_iceberg
</div>

**Aliases**: `allow_experimental_insert_into_iceberg`

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "0"},{"label": "A inserção no Iceberg passou para Beta"}]}, {"id": "row-2","items": [{"label": "25.7"},{"label": "0"},{"label": "Nova configuração."}]}]} />

Permite executar consultas `insert` no Iceberg.

<div id="allow_introspection_functions">
  ## allow\_introspection\_functions
</div>

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

Ativa ou desativa [funções de introspecção](/pt-BR/reference/functions/regular-functions/introspection) para o profiling de consultas.

Valores possíveis:

* 1 — Funções de introspecção ativadas.
* 0 — Funções de introspecção desativadas.

**Veja também**

* [Profiler de consulta por amostragem](/pt-BR/concepts/features/performance/troubleshoot/sampling-query-profiler)
* Tabela de sistema [trace\_log](/pt-BR/reference/system-tables/trace_log)

<div id="allow_key_condition_coalesce_rewrite">
  ## allow\_key\_condition\_coalesce\_rewrite
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "1"},{"label": "Nova configuração para reescrever predicados no formato `coalesce(a_1, ..., a_N) <op> const` (e, de forma equivalente, `ifNull`, ou com a constante à esquerda) em uma disjunção antes da análise de índices, para que a chave primária por coluna e os skip indexes em cada `a_i` possam ser usados. Formas parcialmente constantes, como `coalesce(a, 42, b)` e `coalesce(a, b, 42)`, também são tratadas."}]}]} />

Reescreve predicados no formato `coalesce(a_1, ..., a_N) <op> const` (e, de forma equivalente, `ifNull`, ou com a constante à esquerda) como a disjunção `(a_1 <op> const) OR (a_1 IS NULL AND a_2 <op> const) OR ... OR (a_1 IS NULL AND ... AND a_{N-1} IS NULL AND a_N <op> const)` antes da análise de índices, para que a chave primária por coluna e os skip indexes em cada `a_i` possam ser usados. Formas parcialmente constantes, como `coalesce(a, 42, b)` e `coalesce(a, b, 42)`, são tratadas: a lista de argumentos é normalizada como o próprio `coalesce` faz (literais `NULL` são descartados, e argumentos após o primeiro não-`Nullable` são descartados), e uma constante final não `NULL`, se houver, é incluída como o ramo final. A reescrita é estritamente aditiva para a poda de índices; a filtragem em tempo de execução ainda usa o predicado original.

<div id="allow_materialized_view_with_bad_select">
  ## allow\_materialized\_view\_with\_bad\_select
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.4"},{"label": "0"},{"label": "Não permitir a criação de MVs que referenciem colunas ou tabelas inexistentes"}]}, {"id": "row-2","items": [{"label": "24.9"},{"label": "1"},{"label": "Suporte (mas ainda não ativado) para validação mais rigorosa em CREATE MATERIALIZED VIEW"}]}]} />

Permite CREATE MATERIALIZED VIEW com uma consulta SELECT que referencie tabelas ou colunas inexistentes. Ela ainda precisa ser sintaticamente válida. Não se aplica a MVs atualizáveis. Não se aplica se o esquema da MV precisar ser inferido a partir da consulta SELECT (isto é, se o CREATE não tiver lista de colunas nem uma tabela TO). Pode ser usado para criar uma MV antes da tabela de origem.

<div id="allow_named_collection_override_by_default">
  ## allow\_named\_collection\_override\_by\_default
</div>

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

Permite, por padrão, substituir os campos das coleções nomeadas.

<div id="allow_non_metadata_alters">
  ## allow\_non\_metadata\_alters
</div>

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

Permite executar alters que afetam não apenas os metadados das tabelas, mas também os dados no disco

<div id="allow_nonconst_timezone_arguments">
  ## allow\_nonconst\_timezone\_arguments
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "23.4"},{"label": "0"},{"label": "Permite argumentos de fuso horário não constantes em determinadas funções relacionadas a tempo, como toTimeZone(), fromUnixTimestamp*() e snowflakeToDateTime*()."}]}]} />

Permite argumentos de fuso horário não constantes em determinadas funções relacionadas a tempo, como toTimeZone(), fromUnixTimestamp\*() e snowflakeToDateTime\*().
Essa configuração existe apenas por motivos de compatibilidade. No ClickHouse, o fuso horário é uma propriedade do tipo de dado e, consequentemente, da coluna.
Ativar essa configuração dá a impressão equivocada de que valores diferentes dentro de uma coluna podem ter fusos horários distintos.
Portanto, não ative essa configuração.

<div id="allow_nondeterministic_mutations">
  ## allow\_nondeterministic\_mutations
</div>

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

Configuração no nível do usuário que permite que mutações em tabelas replicadas usem funções não determinísticas, como `dictGet`.

Como, por exemplo, os dicionários podem ficar dessincronizados entre os nós, mutações que extraem valores deles não são permitidas por padrão em tabelas replicadas. Ativar essa configuração permite esse comportamento, mas passa a ser responsabilidade do usuário garantir que os dados usados estejam sincronizados em todos os nós.

**Exemplo**

```xml theme={null}
<profiles>
    <default>
        <allow_nondeterministic_mutations>1</allow_nondeterministic_mutations>

        <!-- ... -->
    </default>

    <!-- ... -->

</profiles>
```

<div id="allow_nondeterministic_optimize_skip_unused_shards">
  ## allow\_nondeterministic\_optimize\_skip\_unused\_shards
</div>

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

Permite usar funções não determinísticas (como `rand` ou `dictGet`, já que esta última tem algumas ressalvas em relação a atualizações) na chave de sharding.

Valores possíveis:

* 0 — Não permitido.
* 1 — Permitido.

<div id="allow_nullable_tuple_in_extracted_subcolumns">
  ## allow\_nullable\_tuple\_in\_extracted\_subcolumns
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": "0"},{"label": "Nova configuração que controla se subcolunas extraídas de Tuple podem ser anuláveis."}]}]} />

Controla se subcolunas extraídas do tipo `Tuple(...)` podem ser tipadas como `Nullable(Tuple(...))`.

* `false`: Retorna `Tuple(...)` e usa valores padrão da tupla para linhas em que a subcoluna está ausente.
* `true`: Retorna `Nullable(Tuple(...))` e usa `NULL` para linhas em que a subcoluna está ausente.

Essa configuração controla apenas o comportamento das subcolunas extraídas.
Ela não controla se colunas `Nullable(Tuple(...))` podem ser criadas em tabelas; isso é controlado por `allow_experimental_nullable_tuple_type`.

O ClickHouse usa o valor dessa configuração carregado na inicialização do servidor.
Alterações feitas com `SET` ou `SETTINGS` no nível da consulta não alteram o comportamento das subcolunas extraídas.
Para alterar o comportamento das subcolunas extraídas, atualize `allow_nullable_tuple_in_extracted_subcolumns` na configuração do perfil de inicialização (por exemplo, em users.xml) e reinicie o servidor.

<div id="allow_prefetched_read_pool_for_local_filesystem">
  ## allow\_prefetched\_read\_pool\_for\_local\_filesystem
</div>

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

Prefere o pool de threads de prefetch se todas as partes estiverem no sistema de arquivos local

<div id="allow_prefetched_read_pool_for_remote_filesystem">
  ## allow\_prefetched\_read\_pool\_for\_remote\_filesystem
</div>

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

Prefere o pool de threads de pré-busca se todas as partes estiverem em um sistema de arquivos remoto

<div id="allow_push_predicate_ast_for_distributed_subqueries">
  ## allow\_push\_predicate\_ast\_for\_distributed\_subqueries
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "1"},{"label": "Nova configuração"}]}]} />

Permite o push predicate no nível da AST para subconsultas distribuídas com o analisador habilitado

<div id="allow_push_predicate_when_subquery_contains_with">
  ## allow\_push\_predicate\_when\_subquery\_contains\_with
</div>

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

Permite push predicate em subconsultas que contêm a cláusula WITH

<div id="allow_rank_dense_rank_arguments">
  ## allow\_rank\_dense\_rank\_arguments
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "0"},{"label": "Nova configuração. Antes da versão 26.5, as funções de janela `RANK` e `DENSE_RANK` ignoravam silenciosamente quaisquer argumentos fornecidos (equivalente a `allow_rank_dense_rank_arguments = 1`). A partir da 26.5, elas rejeitam argumentos por padrão com `NUMBER_OF_ARGUMENTS_DOESNT_MATCH` porque, de acordo com o padrão SQL, essas funções não recebem argumentos. Defina isto como `1` para restaurar o comportamento legado."}]}]} />

Permite passar argumentos para as funções de janela `RANK` e `DENSE_RANK` para fins de retrocompatibilidade.

De acordo com o padrão SQL, `RANK` e `DENSE_RANK` não recebem argumentos — elas classificam as linhas com base
apenas na janela `OVER (ORDER BY ...)`. Em versões do ClickHouse anteriores à 26.5, consultas como
`RANK(x) OVER (...)` aceitavam e ignoravam silenciosamente o argumento, o que gerava confusão para os usuários
(o argumento visível sugeria que influenciava a classificação, mas não influenciava).

Quando essa configuração é `false` (o padrão), `RANK` e `DENSE_RANK` rejeitam quaisquer argumentos e
lançam `NUMBER_OF_ARGUMENTS_DOESNT_MATCH`. Quando definida como `true`, o comportamento permissivo legado é
restaurado — os argumentos são ignorados silenciosamente, em linha com o comportamento anterior à 26.5.

<div id="allow_reorder_prewhere_conditions">
  ## allow\_reorder\_prewhere\_conditions
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.10"},{"label": "1"},{"label": "Nova configuração"}]}]} />

Ao mover condições de WHERE para PREWHERE, permite reordená-las para otimizar a filtragem

<div id="allow_settings_after_format_in_insert">
  ## allow\_settings\_after\_format\_in\_insert
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "22.4"},{"label": "0"},{"label": "Não permitir `SETTINGS` após `FORMAT` em consultas `INSERT`, porque o ClickHouse interpreta `SETTINGS` como valores, o que pode causar confusão"}]}]} />

Controla se `SETTINGS` após `FORMAT` em consultas `INSERT` é permitido ou não. Não é recomendável usar isso, pois parte de `SETTINGS` pode ser interpretada como valores.

Exemplo:

```sql theme={null}
INSERT INTO FUNCTION null('foo String') SETTINGS max_threads=1 VALUES ('bar');
```

Mas a consulta a seguir só funcionará com `allow_settings_after_format_in_insert`:

```sql theme={null}
SET allow_settings_after_format_in_insert=1;
INSERT INTO FUNCTION null('foo String') VALUES ('bar') SETTINGS max_threads=1;
```

Valores possíveis:

* 0 — Não permitir.
* 1 — Permitir.

<Note>
  Use esta configuração apenas por compatibilidade com versões anteriores, se seus casos de uso dependerem da sintaxe antiga.
</Note>

<div id="allow_simdjson">
  ## allow\_simdjson
</div>

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

Permite o uso da biblioteca simdjson em funções 'JSON\*' se as instruções AVX2 estiverem disponíveis. Se desabilitada, a rapidjson será usada.

<div id="allow_special_serialization_kinds_in_output_formats">
  ## allow\_special\_serialization\_kinds\_in\_output\_formats
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.11"},{"label": "1"},{"label": "Habilita a saída direta de representações especiais de colunas, como Sparse/Replicated, em alguns formatos de saída"}]}, {"id": "row-2","items": [{"label": "25.10"},{"label": "0"},{"label": "Adiciona uma configuração para permitir a saída de representações especiais de colunas, como Sparse/Replicated, sem convertê-las em colunas completas"}]}]} />

Permite a saída de colunas com tipos especiais de serialização, como Sparse e Replicated, sem convertê-las para a representação completa da coluna.
Isso ajuda a evitar cópias desnecessárias de dados durante a formatação.

<div id="allow_statistics">
  ## allow\_statistics
</div>

**Aliases**: `allow_experimental_statistics`

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": "1"},{"label": "As estatísticas de coluna agora são GA"}]}]} />

Permite definir colunas com [estatísticas](/pt-BR/reference/engines/table-engines/mergetree-family/mergetree#table_engine-mergetree-creating-a-table) e [manipular essas estatísticas](/pt-BR/reference/engines/table-engines/mergetree-family/mergetree#column-statistics).

<div id="allow_statistics_optimize">
  ## allow\_statistics\_optimize
</div>

**Aliases**: `allow_statistic_optimize`

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "1"},{"label": "Habilita essa otimização por padrão."}]}, {"id": "row-2","items": [{"label": "24.6"},{"label": "0"},{"label": "A configuração foi renomeada. O nome anterior é `allow_statistic_optimize`."}]}]} />

Permite usar estatísticas para otimizar consultas.

<div id="allow_suspicious_codecs">
  ## allow\_suspicious\_codecs
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "20.5"},{"label": "0"},{"label": "Não permite especificar codecs de compressão sem utilidade"}]}]} />

Se estiver definido como true, permite especificar codecs de compressão sem utilidade.

<div id="allow_suspicious_fixed_string_types">
  ## allow\_suspicious\_fixed\_string\_types
</div>

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

Na instrução CREATE TABLE, permite criar colunas do tipo FixedString(n) com n > 256. FixedString com comprimento >= 256 é suspeita e muito provavelmente indica uso incorreto

<div id="allow_suspicious_indices">
  ## allow\_suspicious\_indices
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "23.4"},{"label": "0"},{"label": "Se true, o índice pode ser definido com expressões idênticas"}]}]} />

Rejeita índices primários/secundários e chaves de ordenação com expressões idênticas

<div id="allow_suspicious_low_cardinality_types">
  ## allow\_suspicious\_low\_cardinality\_types
</div>

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

Permite ou restringe o uso de [LowCardinality](/pt-BR/reference/data-types/lowcardinality) com tipos de dados de tamanho fixo de 8 bytes ou menos: tipos de dados numéricos e `FixedString(8_bytes_or_less)`.

Para valores fixos pequenos, o uso de `LowCardinality` geralmente é ineficiente, porque o ClickHouse armazena um índice numérico para cada linha. Como resultado:

* O uso de espaço em disco pode aumentar.
* O consumo de RAM pode ser maior, dependendo do tamanho do dicionário.
* Algumas funções podem ficar mais lentas devido a operações adicionais de codificação/decodificação.

Os tempos de merge em tabelas com o motor [MergeTree](/pt-BR/reference/engines/table-engines/mergetree-family/mergetree) podem aumentar por todos os motivos descritos acima.

Valores possíveis:

* 1 — O uso de `LowCardinality` não é restrito.
* 0 — O uso de `LowCardinality` é restrito.

<div id="allow_suspicious_primary_key">
  ## allow\_suspicious\_primary\_key
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "0"},{"label": "Proíbe `PRIMARY KEY`/`ORDER BY` considerados suspeitos para MergeTree (isto é, SimpleAggregateFunction)"}]}]} />

Permite `PRIMARY KEY`/`ORDER BY` considerados suspeitos para MergeTree (isto é, SimpleAggregateFunction).

<div id="allow_suspicious_ttl_expressions">
  ## allow\_suspicious\_ttl\_expressions
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "23.12"},{"label": "0"},{"label": "Esta é uma nova configuração, e nas versões anteriores o comportamento equivalia a permitir."}]}]} />

Rejeita expressões TTL que não dependem de nenhuma coluna da tabela. Isso indica, na maioria das vezes, um erro do usuário.

<div id="allow_suspicious_types_in_group_by">
  ## allow\_suspicious\_types\_in\_group\_by
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.11"},{"label": "0"},{"label": "Não permite, por padrão, tipos Variant/Dynamic em chaves de GROUP BY"}]}]} />

Permite ou restringe o uso dos tipos [Variant](/pt-BR/reference/data-types/variant) e [Dynamic](/pt-BR/reference/data-types/dynamic) nas chaves de GROUP BY.

<div id="allow_suspicious_types_in_order_by">
  ## allow\_suspicious\_types\_in\_order\_by
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.11"},{"label": "0"},{"label": "Não permite tipos Variant/Dynamic em ORDER BY por padrão"}]}]} />

Permite ou restringe o uso dos tipos [Variant](/pt-BR/reference/data-types/variant) e [Dynamic](/pt-BR/reference/data-types/dynamic) nas chaves `ORDER BY`.

<div id="allow_suspicious_variant_types">
  ## allow\_suspicious\_variant\_types
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.2"},{"label": "0"},{"label": "Não permitir a criação do tipo Variant com variantes suspeitas por padrão"}]}]} />

Na instrução CREATE TABLE, esta configuração permite especificar o tipo Variant com tipos de variante semelhantes (por exemplo, com diferentes tipos numéricos ou de data). Habilitar essa configuração pode introduzir alguma ambiguidade ao trabalhar com valores de tipos semelhantes.

<div id="allow_unrestricted_reads_from_keeper">
  ## allow\_unrestricted\_reads\_from\_keeper
</div>

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

Permite leituras irrestritas (sem condição no path) da tabela system.zookeeper; pode ser útil, mas não é seguro para o ZooKeeper

<div id="alter_move_to_space_execute_async">
  ## alter\_move\_to\_space\_execute\_async
</div>

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

Executa ALTER TABLE MOVE ... TO \[DISK|VOLUME] de modo assíncrono

<div id="alter_partition_verbose_result">
  ## alter\_partition\_verbose\_result
</div>

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

Habilita ou desabilita a exibição de informações sobre as partes às quais as operações de manipulação de partições e partes foram aplicadas com sucesso.
Aplicável a [ATTACH PARTITION|PART](/pt-BR/reference/statements/alter/partition#attach-partitionpart) e [FREEZE PARTITION](/pt-BR/reference/statements/alter/partition#freeze-partition).

Valores possíveis:

* 0 — desabilita a verbosidade.
* 1 — habilita a verbosidade.

**Exemplo**

```sql theme={null}
CREATE TABLE test(a Int64, d Date, s String) ENGINE = MergeTree PARTITION BY toYYYYMDECLARE(d) ORDER BY a;
INSERT INTO test VALUES(1, '2021-01-01', '');
INSERT INTO test VALUES(1, '2021-01-01', '');
ALTER TABLE test DETACH PARTITION ID '202101';

ALTER TABLE test ATTACH PARTITION ID '202101' SETTINGS alter_partition_verbose_result = 1;

┌─command_type─────┬─partition_id─┬─part_name────┬─old_part_name─┐
│ ATTACH PARTITION │ 202101       │ 202101_7_7_0 │ 202101_5_5_0  │
│ ATTACH PARTITION │ 202101       │ 202101_8_8_0 │ 202101_6_6_0  │
└──────────────────┴──────────────┴──────────────┴───────────────┘

ALTER TABLE test FREEZE SETTINGS alter_partition_verbose_result = 1;

┌─command_type─┬─partition_id─┬─part_name────┬─backup_name─┬─backup_path───────────────────┬─part_backup_path────────────────────────────────────────────┐
│ FREEZE ALL   │ 202101       │ 202101_7_7_0 │ 8           │ /var/lib/clickhouse/shadow/8/ │ /var/lib/clickhouse/shadow/8/data/default/test/202101_7_7_0 │
│ FREEZE ALL   │ 202101       │ 202101_8_8_0 │ 8           │ /var/lib/clickhouse/shadow/8/ │ /var/lib/clickhouse/shadow/8/data/default/test/202101_8_8_0 │
└──────────────┴──────────────┴──────────────┴─────────────┴───────────────────────────────┴─────────────────────────────────────────────────────────────┘
```

<div id="alter_sync">
  ## alter\_sync
</div>

**Aliases**: `replication_alter_partitions_sync`

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

Permite especificar o comportamento de espera para ações executadas em réplicas por consultas [`ALTER`](/pt-BR/reference/statements/alter), [`OPTIMIZE`](/pt-BR/reference/statements/optimize) ou [`TRUNCATE`](/pt-BR/reference/statements/truncate).

Valores possíveis:

* `0` — Não esperar.
* `1` — Aguardar a própria execução.
* `2` — Aguardar todos.
* `3` - Aguardar apenas as réplicas ativas.

Valor padrão no Cloud: `0`.

<Note>
  `alter_sync` se aplica apenas a tabelas `Replicated` e `SharedMergeTree`; não tem efeito ao alterar tabelas que não sejam `Replicated` nem `Shared`.
</Note>

<div id="alter_update_mode">
  ## alter\_update\_mode
</div>

<SettingsInfoBlock type="AlterUpdateMode" default_value="heavy" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "heavy"},{"label": "Nova configuração"}]}]} />

Um modo para consultas `ALTER` que contêm comandos `UPDATE`.

Valores possíveis:

* `heavy` - executa uma mutação normal.
* `lightweight` - executa uma atualização leve, se possível; caso contrário, executa uma mutação normal.
* `lightweight_force` - executa uma atualização leve, se possível; caso contrário, gera uma exceção.

<div id="analyze_index_with_space_filling_curves">
  ## analyze\_index\_with\_space\_filling\_curves
</div>

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

Se uma tabela tiver uma curva de preenchimento espacial em seu índice, por exemplo, `ORDER BY mortonEncode(x, y)` ou `ORDER BY hilbertEncode(x, y)`, e a consulta tiver condições sobre seus argumentos, por exemplo, `x >= 10 AND x <= 20 AND y >= 20 AND y <= 30`, use a curva de preenchimento espacial para a análise do índice.

<div id="analyzer_compatibility_allow_compound_identifiers_in_unflatten_nested">
  ## analyzer\_compatibility\_allow\_compound\_identifiers\_in\_unflatten\_nested
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "1"},{"label": "Nova configuração."}]}]} />

Permite adicionar identificadores compostos ao nested. Esta é uma configuração de compatibilidade porque altera o resultado da consulta. Quando desativada, `SELECT a.b.c FROM table ARRAY JOIN a` não funciona, e `SELECT a FROM table` não inclui a coluna `a.b.c` no resultado de `Nested a`.

<div id="analyzer_compatibility_join_using_top_level_identifier">
  ## analyzer\_compatibility\_join\_using\_top\_level\_identifier
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "0"},{"label": "Força a resolução do identificador em JOIN USING a partir da projeção"}]}]} />

Força a resolução do identificador em JOIN USING a partir da projeção (por exemplo, em `SELECT a + 1 AS b FROM t1 JOIN t2 USING (b)`, o join será realizado por `t1.a + 1 = t2.b`, em vez de `t1.b = t2.b`).

<div id="analyzer_inline_views">
  ## analyzer\_inline\_views
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "0"},{"label": "Nova configuração"}]}]} />

Quando habilitado, o analisador substitui views comuns (não materializadas, não parametrizadas) pelas subconsultas que as definem, permitindo otimizações entre camadas, como o pushdown de predicados e o pruning de colunas.

<div id="any_join_distinct_right_table_keys">
  ## any\_join\_distinct\_right\_table\_keys
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "19.14"},{"label": "0"},{"label": "Desativa ANY RIGHT e ANY FULL JOINs por padrão para evitar inconsistências"}]}]} />

Habilita o comportamento legado do servidor ClickHouse em operações `ANY INNER|LEFT JOIN`.

<Note>
  Use esta configuração apenas para compatibilidade com versões anteriores, se seus casos de uso dependerem do comportamento legado de `JOIN`.
</Note>

Quando o comportamento legado está habilitado:

* Os resultados das operações `t1 ANY LEFT JOIN t2` e `t2 ANY RIGHT JOIN t1` não são iguais, porque o ClickHouse usa a lógica de mapeamento de chaves entre tabelas da esquerda para a direita, de muitos para um.
* Os resultados das operações `ANY INNER JOIN` contêm todas as linhas da tabela à esquerda, assim como nas operações `SEMI LEFT JOIN`.

Quando o comportamento legado está desabilitado:

* Os resultados das operações `t1 ANY LEFT JOIN t2` e `t2 ANY RIGHT JOIN t1` são iguais, porque o ClickHouse usa a lógica que fornece mapeamento de chaves de um para muitos em operações `ANY RIGHT JOIN`.
* Os resultados das operações `ANY INNER JOIN` contêm uma linha por chave de ambas as tabelas, a da esquerda e a da direita.

Valores possíveis:

* 0 — O comportamento legado está desabilitado.
* 1 — O comportamento legado está habilitado.

Veja também:

* [Strictness de JOIN](/pt-BR/reference/statements/select/join#settings)

<div id="apply_deleted_mask">
  ## apply\_deleted\_mask
</div>

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

Habilita a filtragem de linhas excluídas com exclusão leve. Se estiver desabilitado, uma consulta poderá ler essas linhas. Isso é útil para cenários de depuração e de "recuperação" de exclusões

<div id="apply_mutations_on_fly">
  ## apply\_mutations\_on\_fly
</div>

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

Se true, mutações (UPDATEs e DELETEs) que não estiverem materializadas na data part serão aplicadas durante SELECTs.

<div id="apply_patch_parts">
  ## apply\_patch\_parts
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "1"},{"label": "Nova configuração"}]}]} />

Se true, patch parts (que representam atualizações leves) são aplicadas nas consultas SELECT.

<div id="apply_patch_parts_join_cache_buckets">
  ## apply\_patch\_parts\_join\_cache\_buckets
</div>

<SettingsInfoBlock type="NonZeroUInt64" default_value="8" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "8"},{"label": "Nova configuração"}]}]} />

Número de buckets no cache temporário para aplicar patch parts no modo Join.

<div id="apply_prewhere_after_final">
  ## apply\_prewhere\_after\_final
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "0"},{"label": "Nova configuração. Quando habilitada, as condições PREWHERE são aplicadas após o processamento FINAL."}]}]} />

Quando habilitada, as condições PREWHERE são aplicadas após o processamento FINAL em ReplacingMergeTree e motores semelhantes.
Isso pode ser útil quando o PREWHERE faz referência a colunas que podem ter valores diferentes entre linhas duplicadas
e você quer que o FINAL selecione a linha que prevalece antes da filtragem. Quando desabilitada, o PREWHERE é aplicado durante a leitura.
Observação: se apply\_row\_level\_security\_after\_final estiver habilitada e a política de linha usar colunas fora da chave de ordenação, o PREWHERE também
será adiado para manter a ordem de execução correta (a política de linha deve ser aplicada antes do PREWHERE).

<div id="apply_row_policy_after_final">
  ## apply\_row\_policy\_after\_final
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "1"},{"label": "Habilita apply_row_policy_after_final por padrão, como era na 25.8 antes de #87303"}]}, {"id": "row-2","items": [{"label": "25.12"},{"label": "0"},{"label": "Nova configuração para controlar se as políticas de linha e PREWHERE são aplicados após o processamento de FINAL para tabelas *MergeTree"}]}]} />

Quando habilitado, as políticas de linha e PREWHERE são aplicados após o processamento de FINAL para tabelas \*MergeTree. (Especialmente para ReplacingMergeTree)
Quando desabilitado, as políticas de linha são aplicadas antes de FINAL, o que pode causar resultados diferentes quando a política
filtra linhas que deveriam ser usadas para desduplicação no ReplacingMergeTree ou em motores semelhantes.

Se a expressão da política de linha depender apenas de colunas em ORDER BY, ela ainda será aplicada antes de FINAL como uma otimização,
pois essa filtragem não pode afetar o resultado da desduplicação.

Valores possíveis:

* 0 — A política de linha e PREWHERE são aplicados antes de FINAL (padrão).
* 1 — A política de linha e PREWHERE são aplicados após FINAL.

<div id="apply_settings_from_server">
  ## apply\_settings\_from\_server
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.2"},{"label": "1"},{"label": "O código do lado do cliente (por exemplo, a análise da entrada de INSERT e a formatação da saída da consulta) usará as mesmas configurações que o servidor, incluindo as configurações da config do servidor."}]}]} />

Define se o cliente deve aceitar configurações do servidor.

Isso afeta apenas as operações realizadas no lado do cliente, em particular a análise dos dados de entrada de INSERT e a formatação do resultado da consulta. A maior parte da execução da consulta acontece no servidor e não é afetada por essa configuração.

Normalmente, essa configuração deve ser definida no profile do usuário (`users.xml` ou consultas como `ALTER USER`), não por meio do cliente (argumentos de linha de comando do cliente, consulta `SET` ou seção `SETTINGS` da consulta `SELECT`). Pelo cliente, ela pode ser alterada para false, mas não pode ser alterada para true (porque o servidor não enviará as configurações se o profile do usuário tiver `apply_settings_from_server = false`).

Observe que, inicialmente (24.12), havia uma configuração do servidor (`send_settings_to_client`), mas depois ela foi substituída por essa configuração do cliente, para facilitar o uso.

<div id="archive_adaptive_buffer_max_size_bytes">
  ## archive\_adaptive\_buffer\_max\_size\_bytes
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.1"},{"label": "8388608"},{"label": "Nova configuração"}]}]} />

Limita o tamanho máximo do buffer adaptativo usado ao gravar em arquivos de arquivamento (por exemplo, arquivos tar

<div id="arrow_flight_request_descriptor_type">
  ## arrow\_flight\_request\_descriptor\_type
</div>

<SettingsInfoBlock type="ArrowFlightDescriptorType" default_value="path" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.11"},{"label": "path"},{"label": "Nova configuração. Tipo de descritor a ser usado nas solicitações do Arrow Flight: 'path' ou 'command'. O Dremio requer 'command'."}]}]} />

Tipo de descritor a ser usado nas solicitações do Arrow Flight. 'path' envia o nome do conjunto de dados como um descritor de caminho. 'command' envia uma consulta SQL como um descritor de comando (obrigatório para o Dremio).

Valores possíveis:

* 'path' — Use FlightDescriptor::Path (padrão, funciona com a maioria dos servidores Arrow Flight)
* 'command' — Use FlightDescriptor::Command com uma consulta SELECT (obrigatório para o Dremio)

<div id="ast_fuzzer_any_query">
  ## ast\_fuzzer\_any\_query
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "0"},{"label": "Nova configuração para permitir fuzzing em todos os tipos de consulta, não apenas nas consultas somente leitura."}]}]} />

Quando false (padrão), o fuzzer de AST do lado do servidor (controlado por `ast_fuzzer_runs`) aplica fuzzing apenas a consultas somente leitura (SELECT, EXPLAIN, SHOW, DESCRIBE, EXISTS). Quando true, o fuzzing é aplicado a todos os tipos de consulta, incluindo DDL e INSERT.

<div id="ast_fuzzer_runs">
  ## ast\_fuzzer\_runs
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "0"},{"label": "Nova configuração para habilitar o AST fuzzer no lado do servidor."}]}]} />

Habilita o AST fuzzer no lado do servidor, que executa consultas aleatórias após cada consulta normal, descartando os resultados.

* 0: desabilitado (padrão).
* Um valor entre 0 e 1 (sem incluir os extremos): probabilidade de executar uma única consulta com fuzzing.
* Um valor >= 1: número de consultas com fuzzing a executar por consulta normal.

O fuzzer acumula fragmentos de AST de todas as consultas em todas as sessões, produzindo mutações cada vez mais interessantes ao longo do tempo. As consultas com fuzzing que falham são descartadas silenciosamente; os resultados nunca são retornados ao cliente.

<div id="asterisk_include_alias_columns">
  ## asterisk\_include\_alias\_columns
</div>

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

Inclui colunas [ALIAS](/pt-BR/reference/statements/create/table#alias) em consultas com curinga (`SELECT *`).

Valores possíveis:

* 0 - desabilitado
* 1 - habilitado

<div id="asterisk_include_materialized_columns">
  ## asterisk\_include\_materialized\_columns
</div>

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

Inclui colunas [MATERIALIZED](/pt-BR/reference/statements/create/view#materialized-view) em consultas com curinga (`SELECT *`).

Valores possíveis:

* 0 - desabilitado
* 1 - habilitado

<div id="asterisk_include_virtual_columns">
  ## asterisk\_include\_virtual\_columns
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "0"},{"label": "Nova configuração"}]}]} />

Inclui colunas virtuais em consultas com curinga (`SELECT *`).

Valores possíveis:

* 0 - desabilitado
* 1 - habilitado

<div id="async_insert">
  ## async\_insert
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "1"},{"label": "Habilita inserts assíncronos por padrão."}]}]} />

Se true, os dados da consulta INSERT são armazenados em uma fila e depois gravados na tabela em segundo plano. Se wait\_for\_async\_insert for false, a consulta INSERT será processada quase instantaneamente; caso contrário, o cliente aguardará até que os dados sejam gravados na tabela

<div id="async_insert_busy_timeout_decrease_rate">
  ## async\_insert\_busy\_timeout\_decrease\_rate
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.2"},{"label": "0.2"},{"label": "A taxa de crescimento exponencial com que o timeout adaptativo de inserção assíncrona diminui"}]}]} />

A taxa de crescimento exponencial com que o timeout adaptativo de inserção assíncrona diminui

<div id="async_insert_busy_timeout_increase_rate">
  ## async\_insert\_busy\_timeout\_increase\_rate
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.2"},{"label": "0.2"},{"label": "A taxa de crescimento exponencial com que o tempo limite adaptativo de inserção assíncrona aumenta"}]}]} />

A taxa de crescimento exponencial com que o tempo limite adaptativo de inserção assíncrona aumenta

<div id="async_insert_busy_timeout_max_ms">
  ## async\_insert\_busy\_timeout\_max\_ms
</div>

**Aliases**: `async_insert_busy_timeout_ms`

<SettingsInfoBlock type="Milissegundos" default_value="200" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.2"},{"label": "200"},{"label": "O valor mínimo do timeout de inserção assíncrona em milissegundos; async_insert_busy_timeout_ms é um alias de async_insert_busy_timeout_max_ms"}]}]} />

Tempo máximo de espera, a partir do recebimento dos primeiros dados, antes de descarregar os dados coletados por consulta.

Valor padrão no Cloud: `1000` (1s).

<div id="async_insert_busy_timeout_min_ms">
  ## async\_insert\_busy\_timeout\_min\_ms
</div>

<SettingsInfoBlock type="Milissegundos" default_value="50" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.2"},{"label": "50"},{"label": "O valor mínimo do tempo limite da inserção assíncrona em milissegundos; também serve como valor inicial, que pode ser aumentado posteriormente pelo algoritmo adaptativo"}]}]} />

Se o ajuste automático estiver habilitado por meio de async\_insert\_use\_adaptive\_busy\_timeout, é o tempo mínimo de espera antes de descarregar os dados coletados por consulta, desde o aparecimento dos primeiros dados. Também serve como valor inicial para o algoritmo adaptativo

<div id="async_insert_deduplicate">
  ## async\_insert\_deduplicate
</div>

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

Para consultas INSERT assíncronas em tabela replicada, especifica que deve ser realizada a desduplicação dos blocos inseridos

<div id="async_insert_max_data_size">
  ## async\_insert\_max\_data\_size
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.2"},{"label": "10485760"},{"label": "O valor anterior parecia ser pequeno demais."}]}]} />

Tamanho máximo, em bytes, dos dados ainda não analisados acumulados por consulta antes de serem inseridos

Valor padrão no Cloud: `104857600` (100 MiB).

<div id="async_insert_max_query_number">
  ## async\_insert\_max\_query\_number
</div>

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

Número máximo de consultas de inserção antes da inserção.
Só tem efeito se a configuração [`async_insert_deduplicate`](#async_insert_deduplicate) for 1.

<div id="async_insert_poll_timeout_ms">
  ## async\_insert\_poll\_timeout\_ms
</div>

<SettingsInfoBlock type="Milissegundos" default_value="10" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.2"},{"label": "10"},{"label": "Tempo limite, em milissegundos, para consultar dados da fila de insert assíncrono"}]}]} />

Tempo limite para consultar dados da fila de insert assíncrono

<div id="async_insert_use_adaptive_busy_timeout">
  ## async\_insert\_use\_adaptive\_busy\_timeout
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.2"},{"label": "1"},{"label": "Usar timeout adaptativo para inserts assíncronos"}]}]} />

Se estiver definido como true, usa o timeout adaptativo de espera para inserts assíncronos

<div id="async_query_sending_for_remote">
  ## async\_query\_sending\_for\_remote
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "23.3"},{"label": "1"},{"label": "Criar conexões e enviar consulta de forma assíncrona entre shards"}]}]} />

Habilita a criação assíncrona de conexões e o envio de consultas ao executar uma consulta remota.

Habilitado por padrão.

<div id="async_socket_for_remote">
  ## async\_socket\_for\_remote
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "21.5"},{"label": "1"},{"label": "Corrige todos os problemas e reativa por padrão as leituras assíncronas no socket para consultas remotas"}]}, {"id": "row-2","items": [{"label": "21.3"},{"label": "0"},{"label": "Desativa as leituras assíncronas no socket para consultas remotas devido a alguns problemas"}]}]} />

Habilita a leitura assíncrona no socket durante a execução de uma consulta remota.

Habilitado por padrão.

<div id="automatic_parallel_replicas_min_bytes_per_replica">
  ## automatic\_parallel\_replicas\_min\_bytes\_per\_replica
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.1"},{"label": "1048576"},{"label": "Valor padrão aprimorado com base nos resultados dos testes"}]}, {"id": "row-2","items": [{"label": "25.12"},{"label": "0"},{"label": "Nova configuração"}]}]} />

Limiar de bytes a serem lidos por réplica para ativar automaticamente as réplicas paralelas (aplica-se somente quando `automatic_parallel_replicas_mode`=1). 0 significa sem limiar.
O número total de bytes a serem lidos é estimado com base nas estatísticas coletadas.

<div id="automatic_parallel_replicas_mode">
  ## automatic\_parallel\_replicas\_mode
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "0"},{"label": "Nova configuração"}]}]} />

Habilita a alternância automática para a execução com réplicas paralelas com base nas estatísticas coletadas. Requer `enable_analyzer = 1`, `enable_parallel_replicas != 0`, `parallel_replicas_local_plan = 1` e que `cluster_for_parallel_replicas` seja fornecido.
0 - desativado, 1 - ativado, 2 - somente a coleta de estatísticas está ativada (a alternância para a execução com réplicas paralelas está desativada).

<div id="azure_allow_parallel_part_upload">
  ## azure\_allow\_parallel\_part\_upload
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.4"},{"label": "true"},{"label": "Usa várias threads para upload multipart no Azure."}]}]} />

Usa várias threads para upload multipart no Azure.

<div id="azure_check_objects_after_upload">
  ## azure\_check\_objects\_after\_upload
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.11"},{"label": "0"},{"label": "Verifica cada objeto enviado ao Azure Blob Storage para garantir que o envio foi concluído com sucesso"}]}, {"id": "row-2","items": [{"label": "24.10"},{"label": "0"},{"label": "Verifica cada objeto enviado ao Azure Blob Storage para garantir que o envio foi concluído com sucesso"}]}]} />

Verifica cada objeto enviado ao Azure Blob Storage para garantir que o envio foi concluído com sucesso

<div id="azure_connect_timeout_ms">
  ## azure\_connect\_timeout\_ms
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "1000"},{"label": "Nova configuração"}]}]} />

Tempo limite de conexão com o host dos discos do Azure.

<div id="azure_create_new_file_on_insert">
  ## azure\_create\_new\_file\_on\_insert
</div>

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

Ativa ou desativa a criação de um novo arquivo a cada insert nas tabelas do engine Azure

<div id="azure_ignore_file_doesnt_exist">
  ## azure\_ignore\_file\_doesnt\_exist
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.6"},{"label": "0"},{"label": "Permite retornar 0 linhas quando os arquivos solicitados não existem, em vez de gerar uma exceção no mecanismo de tabela AzureBlobStorage"}]}]} />

Ignora a ausência do arquivo ao ler determinadas chaves, caso ele não exista.

Valores possíveis:

* 1 — `SELECT` retorna resultado vazio.
* 0 — `SELECT` gera uma exceção.

<div id="azure_list_object_keys_size">
  ## azure\_list\_object\_keys\_size
</div>

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

Número máximo de arquivos que podem ser retornados em lote na requisição ListObject

<div id="azure_max_blocks_in_multipart_upload">
  ## azure\_max\_blocks\_in\_multipart\_upload
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.5"},{"label": "50000"},{"label": "Número máximo de blocos no upload multipart para o Azure."}]}]} />

Número máximo de blocos no upload multipart para o Azure.

<div id="azure_max_get_burst">
  ## azure\_max\_get\_burst
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "0"},{"label": "Nova configuração"}]}]} />

Número máximo de requisições que podem ser emitidas simultaneamente antes de atingir o limite de requisições por segundo. Por padrão (0), é igual a `azure_max_get_rps`

<div id="azure_max_get_rps">
  ## azure\_max\_get\_rps
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "0"},{"label": "Nova configuração"}]}]} />

Limite para a taxa de solicitações GET ao Azure por segundo antes que o throttling seja aplicado. Zero significa ilimitado.

<div id="azure_max_inflight_parts_for_one_file">
  ## azure\_max\_inflight\_parts\_for\_one\_file
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "20"},{"label": "O número máximo de partes carregadas simultaneamente em uma solicitação de upload em múltiplas partes. 0 significa ilimitado."}]}]} />

O número máximo de partes carregadas simultaneamente em uma solicitação de upload em múltiplas partes. 0 significa ilimitado.

<div id="azure_max_put_burst">
  ## azure\_max\_put\_burst
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "0"},{"label": "Nova configuração"}]}]} />

Número máximo de solicitações que podem ser feitas simultaneamente antes de atingir o limite de solicitações por segundo. Por padrão (0), é igual a `azure_max_put_rps`

<div id="azure_max_put_rps">
  ## azure\_max\_put\_rps
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "0"},{"label": "Nova configuração"}]}]} />

Limite da taxa de requisições PUT no Azure por segundo antes da aplicação de throttling. Zero significa sem limite.

<div id="azure_max_redirects">
  ## azure\_max\_redirects
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "10"},{"label": "Nova configuração"}]}]} />

Número máximo permitido de saltos de redirecionamento do Azure.

<div id="azure_max_single_part_copy_size">
  ## azure\_max\_single\_part\_copy\_size
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.2"},{"label": "268435456"},{"label": "O tamanho máximo do objeto a ser copiado por meio de uma cópia de parte única para o Azure blob storage."}]}]} />

O tamanho máximo do objeto a ser copiado por meio de uma cópia de parte única para o Azure blob storage.

<div id="azure_max_single_part_upload_size">
  ## azure\_max\_single\_part\_upload\_size
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "33554432"},{"label": "Alinhado com S3"}]}]} />

O tamanho máximo de um objeto para upload em uma única parte no Azure blob storage.

<div id="azure_max_single_read_retries">
  ## azure\_max\_single\_read\_retries
</div>

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

O número máximo de tentativas em uma única leitura do Azure Blob Storage.

<div id="azure_max_unexpected_write_error_retries">
  ## azure\_max\_unexpected\_write\_error\_retries
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.1"},{"label": "4"},{"label": "O número máximo de tentativas em caso de erros inesperados durante a gravação no armazenamento de blobs do Azure"}]}]} />

O número máximo de tentativas em caso de erros inesperados durante a gravação no armazenamento de blobs do Azure

<div id="azure_max_upload_part_size">
  ## azure\_max\_upload\_part\_size
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "5368709120"},{"label": "O tamanho máximo da parte a ser enviada durante o upload multipart para o Azure blob storage."}]}]} />

O tamanho máximo da parte a ser enviada durante o upload multipart para o Azure blob storage.

<div id="azure_min_upload_part_size">
  ## azure\_min\_upload\_part\_size
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "16777216"},{"label": "O tamanho mínimo da parte a ser enviada durante um upload em várias partes para o Azure blob storage."}]}]} />

O tamanho mínimo da parte a ser enviada durante um upload em várias partes para o Azure blob storage.

<div id="azure_request_timeout_ms">
  ## azure\_request\_timeout\_ms
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "30000"},{"label": "Nova configuração"}]}]} />

Tempo limite de inatividade para enviar e receber dados de/para o Azure. A operação falhará se uma única chamada TCP de leitura ou gravação ficar bloqueada por esse período.

<div id="azure_sdk_max_retries">
  ## azure\_sdk\_max\_retries
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.7"},{"label": "10"},{"label": "Número máximo de novas tentativas no SDK do Azure"}]}]} />

Número máximo de novas tentativas no SDK do Azure

<div id="azure_sdk_retry_initial_backoff_ms">
  ## azure\_sdk\_retry\_initial\_backoff\_ms
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.7"},{"label": "10"},{"label": "Backoff mínimo entre tentativas no Azure SDK"}]}]} />

Backoff mínimo entre tentativas no Azure SDK

<div id="azure_sdk_retry_max_backoff_ms">
  ## azure\_sdk\_retry\_max\_backoff\_ms
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.7"},{"label": "1000"},{"label": "Backoff máximo entre tentativas no SDK do Azure"}]}]} />

Backoff máximo entre tentativas no SDK do Azure

<div id="azure_skip_empty_files">
  ## azure\_skip\_empty\_files
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.6"},{"label": "0"},{"label": "Permite ignorar arquivos vazios no mecanismo de tabela Azure"}]}]} />

Ativa ou desativa a opção de ignorar arquivos vazios no mecanismo S3.

Valores possíveis:

* 0 — `SELECT` gera uma exceção se o arquivo vazio não for compatível com o formato solicitado.
* 1 — `SELECT` retorna um resultado vazio para um arquivo vazio.

<div id="azure_strict_upload_part_size">
  ## azure\_strict\_upload\_part\_size
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "0"},{"label": "O tamanho exato da parte a ser enviada durante o upload em múltiplas partes para o Azure blob storage."}]}]} />

O tamanho exato da parte a ser enviada durante o upload em múltiplas partes para o Azure blob storage.

<div id="azure_throw_on_zero_files_match">
  ## azure\_throw\_on\_zero\_files\_match
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.6"},{"label": "0"},{"label": "Permite lançar um erro quando a solicitação ListObjects não corresponde a nenhum arquivo no engine AzureBlobStorage, em vez de retornar um resultado de consulta vazio"}]}]} />

Lança um erro se nenhum arquivo corresponder, de acordo com as regras de expansão de glob.

Valores possíveis:

* 1 — `SELECT` lança uma exceção.
* 0 — `SELECT` retorna um resultado vazio.

<div id="azure_truncate_on_insert">
  ## azure\_truncate\_on\_insert
</div>

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

Ativa ou desativa o TRUNCATE antes do insert em tabelas do engine Azure.

<div id="azure_upload_part_size_multiply_factor">
  ## azure\_upload\_part\_size\_multiply\_factor
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "2"},{"label": "Multiplica azure_min_upload_part_size por esse fator sempre que azure_multiply_parts_count_threshold partes forem enviadas em uma única gravação para o Azure blob storage."}]}]} />

Multiplica azure\_min\_upload\_part\_size por esse fator sempre que azure\_multiply\_parts\_count\_threshold partes forem enviadas em uma única gravação para o Azure blob storage.

<div id="azure_upload_part_size_multiply_parts_count_threshold">
  ## azure\_upload\_part\_size\_multiply\_parts\_count\_threshold
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "500"},{"label": "Sempre que esse número de partes é enviado para o Azure blob storage, azure_min_upload_part_size é multiplicado por azure_upload_part_size_multiply_factor."}]}]} />

Sempre que esse número de partes é enviado para o Azure blob storage, azure\_min\_upload\_part\_size é multiplicado por azure\_upload\_part\_size\_multiply\_factor.

<div id="azure_use_adaptive_timeouts">
  ## azure\_use\_adaptive\_timeouts
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "1"},{"label": "Nova configuração"}]}]} />

Quando definido como `true`, as duas primeiras tentativas de todas as solicitações ao Azure são feitas com timeouts baixos de envio e recebimento.
Quando definido como `false`, todas as tentativas são feitas com os mesmos timeouts.

<div id="backup_restore_batch_size_for_keeper_multi">
  ## backup\_restore\_batch\_size\_for\_keeper\_multi
</div>

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

Tamanho máximo do lote para solicitações múltiplas ao \[Zoo]Keeper durante o backup ou a restauração

<div id="backup_restore_batch_size_for_keeper_multiread">
  ## backup\_restore\_batch\_size\_for\_keeper\_multiread
</div>

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

Tamanho máximo do lote para a solicitação de multileitura ao \[Zoo]Keeper durante backup ou restauração

<div id="backup_restore_failure_after_host_disconnected_for_seconds">
  ## backup\_restore\_failure\_after\_host\_disconnected\_for\_seconds
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.11"},{"label": "3600"},{"label": "Nova configuração."}]}, {"id": "row-2","items": [{"label": "24.10"},{"label": "3600"},{"label": "Nova configuração."}]}]} />

Se um host, durante uma operação BACKUP ON CLUSTER ou RESTORE ON CLUSTER, não recriar seu nó efêmero 'alive' no ZooKeeper dentro desse intervalo de tempo, todo o backup ou a restauração será considerado com falha.
Esse valor deve ser maior do que qualquer tempo razoável para um host se reconectar ao ZooKeeper após uma falha.
Zero significa ilimitado.

<div id="backup_restore_finish_timeout_after_error_sec">
  ## backup\_restore\_finish\_timeout\_after\_error\_sec
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.11"},{"label": "180"},{"label": "Nova configuração."}]}, {"id": "row-2","items": [{"label": "24.10"},{"label": "180"},{"label": "Nova configuração."}]}]} />

Por quanto tempo o iniciador deve aguardar até que outro host reaja ao nó 'error' e interrompa seu trabalho na operação atual de BACKUP ON CLUSTER ou RESTORE ON CLUSTER.

<div id="backup_restore_keeper_fault_injection_probability">
  ## backup\_restore\_keeper\_fault\_injection\_probability
</div>

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

Probabilidade aproximada de falha de uma solicitação ao Keeper durante o backup ou a restauração. O valor válido está no intervalo \[0.0f, 1.0f]

<div id="backup_restore_keeper_fault_injection_seed">
  ## backup\_restore\_keeper\_fault\_injection\_seed
</div>

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

0 - semente aleatória; caso contrário, usa o valor da configuração

<div id="backup_restore_keeper_max_retries">
  ## backup\_restore\_keeper\_max\_retries
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.11"},{"label": "1000"},{"label": "Deve ser alto o suficiente para que toda a operação de BACKUP ou RESTORE não falhe devido a uma falha temporária do [Zoo]Keeper durante a execução."}]}, {"id": "row-2","items": [{"label": "24.10"},{"label": "1000"},{"label": "Deve ser alto o suficiente para que toda a operação de BACKUP ou RESTORE não falhe devido a uma falha temporária do [Zoo]Keeper durante a execução."}]}]} />

Número máximo de tentativas para operações do \[Zoo]Keeper durante uma operação de BACKUP ou RESTORE.
Deve ser alto o suficiente para que toda a operação não falhe devido a uma falha temporária do \[Zoo]Keeper.

<div id="backup_restore_keeper_max_retries_while_handling_error">
  ## backup\_restore\_keeper\_max\_retries\_while\_handling\_error
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.11"},{"label": "20"},{"label": "Nova configuração."}]}, {"id": "row-2","items": [{"label": "24.10"},{"label": "20"},{"label": "Nova configuração."}]}]} />

Número máximo de tentativas para operações do \[Zoo]Keeper ao tratar um erro em uma operação BACKUP ON CLUSTER ou RESTORE ON CLUSTER.

<div id="backup_restore_keeper_max_retries_while_initializing">
  ## backup\_restore\_keeper\_max\_retries\_while\_initializing
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.11"},{"label": "20"},{"label": "Nova configuração."}]}, {"id": "row-2","items": [{"label": "24.10"},{"label": "20"},{"label": "Nova configuração."}]}]} />

Número máximo de tentativas para operações no \[Zoo]Keeper durante a inicialização de uma operação BACKUP ON CLUSTER ou RESTORE ON CLUSTER.

<div id="backup_restore_keeper_retry_initial_backoff_ms">
  ## backup\_restore\_keeper\_retry\_initial\_backoff\_ms
</div>

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

Tempo limite do backoff inicial para operações do \[Zoo]Keeper durante backup ou restauração

<div id="backup_restore_keeper_retry_max_backoff_ms">
  ## backup\_restore\_keeper\_retry\_max\_backoff\_ms
</div>

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

Tempo máximo de backoff para operações do \[Zoo]Keeper durante backup ou restauração

Valor padrão no Cloud: `60000`.

<div id="backup_restore_keeper_value_max_size">
  ## backup\_restore\_keeper\_value\_max\_size
</div>

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

Tamanho máximo dos dados de um nó do \[Zoo]Keeper durante o processo de backup

<div id="backup_restore_s3_retry_attempts">
  ## backup\_restore\_s3\_retry\_attempts
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.7"},{"label": "1000"},{"label": "Configuração para Aws::Client::RetryStrategy; o Aws::Client faz novas tentativas automaticamente. 0 significa nenhuma tentativa. Aplica-se apenas a backup/restauração."}]}]} />

Configuração para Aws::Client::RetryStrategy; o Aws::Client faz novas tentativas automaticamente. 0 significa nenhuma tentativa. Aplica-se apenas a backup/restauração.

<div id="backup_restore_s3_retry_initial_backoff_ms">
  ## backup\_restore\_s3\_retry\_initial\_backoff\_ms
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "25"},{"label": "Nova configuração"}]}]} />

Atraso inicial de backoff, em milissegundos, antes da primeira nova tentativa durante o backup e a restauração. Cada nova tentativa subsequente aumenta o atraso exponencialmente, até o máximo especificado por `backup_restore_s3_retry_max_backoff_ms`

<div id="backup_restore_s3_retry_jitter_factor">
  ## backup\_restore\_s3\_retry\_jitter\_factor
</div>

<SettingsInfoBlock type="Float" default_value="0.1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "0.1"},{"label": "Nova configuração"}]}]} />

Fator de jitter aplicado ao atraso de backoff de nova tentativa em Aws::Client::RetryStrategy durante operações de backup e restauração. O atraso de backoff calculado é multiplicado por um fator aleatório no intervalo \[1.0, 1.0 + jitter], até o máximo de `backup_restore_s3_retry_max_backoff_ms`. Deve estar no intervalo \[0.0, 1.0]

<div id="backup_restore_s3_retry_max_backoff_ms">
  ## backup\_restore\_s3\_retry\_max\_backoff\_ms
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "5000"},{"label": "Nova configuração"}]}]} />

Atraso máximo, em milissegundos, entre novas tentativas durante operações de backup e restauração.

<div id="backup_slow_all_threads_after_retryable_s3_error">
  ## backup\_slow\_all\_threads\_after\_retryable\_s3\_error
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "0"},{"label": "Nova configuração"}]}, {"id": "row-2","items": [{"label": "25.6"},{"label": "0"},{"label": "Nova configuração"}]}, {"id": "row-3","items": [{"label": "25.10"},{"label": "0"},{"label": "Configuração desativada por padrão"}]}]} />

Quando definido como `true`, todas as threads que executam requisições ao S3 para o mesmo endpoint de backup ficam mais lentas
depois que qualquer requisição individual ao S3 encontrar um erro do S3 passível de nova tentativa, como 'Slow Down'.
Quando definido como `false`, cada thread lida com o backoff das requisições ao S3 independentemente das demais.

<div id="cache_warmer_threads">
  ## cache\_warmer\_threads
</div>

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

Só tem efeito no ClickHouse Cloud. Número de threads em segundo plano para baixar especulativamente novas partes de dados para o cache do sistema de arquivos quando [cache\_populated\_by\_fetch](/pt-BR/reference/settings/merge-tree-settings#cache_populated_by_fetch) estiver habilitado. Zero para desabilitar.

<div id="calculate_text_stack_trace">
  ## calculate\_text\_stack\_trace
</div>

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

Calcula o stack trace em texto em caso de exceções durante a execução de consultas. Esse é o padrão. Isso exige a busca de símbolos, o que pode tornar os testes de fuzzing mais lentos quando um grande número de consultas incorretas é executado. Em condições normais, você não deve desativar esta opção.

<div id="cancel_http_readonly_queries_on_client_close">
  ## cancel\_http\_readonly\_queries\_on\_client\_close
</div>

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

Cancela consultas HTTP de somente leitura (por exemplo, `SELECT`) quando um cliente fecha a conexão sem aguardar a resposta.

Valor padrão no Cloud: `1`.

<div id="cast_ipv4_ipv6_default_on_conversion_error">
  ## cast\_ipv4\_ipv6\_default\_on\_conversion\_error
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "22.3"},{"label": "0"},{"label": "Faz com que as funções cast(value, 'IPv4') e cast(value, 'IPv6') se comportem da mesma maneira que as funções toIPv4 e toIPv6"}]}]} />

O operador CAST para IPv4, o operador CAST para o tipo IPv6 e as funções toIPv4 e toIPv6 retornarão o valor padrão em vez de gerar uma exceção em caso de erro de conversão.

<div id="cast_keep_nullable">
  ## cast\_keep\_nullable
</div>

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

Habilita ou desabilita a manutenção do tipo de dado `Nullable` em operações [CAST](/pt-BR/reference/functions/regular-functions/type-conversion-functions#CAST).

Quando a configuração está habilitada e o argumento da função `CAST` é `Nullable`, o resultado também é convertido para o tipo `Nullable`. Quando a configuração está desabilitada, o resultado sempre tem exatamente o tipo de destino.

Valores possíveis:

* 0 — O resultado de `CAST` tem exatamente o tipo de destino especificado.
* 1 — Se o tipo do argumento for `Nullable`, o resultado de `CAST` será convertido em `Nullable(DestinationDataType)`.

**Exemplos**

A consulta a seguir resulta exatamente no tipo de dado de destino:

```sql theme={null}
SET cast_keep_nullable = 0;
SELECT CAST(toNullable(toInt32(0)) AS Int32) as x, toTypeName(x);
```

Resultado:

```text theme={null}
┌─x─┬─toTypeName(CAST(toNullable(toInt32(0)), 'Int32'))─┐
│ 0 │ Int32                                             │
└───┴───────────────────────────────────────────────────┘
```

A consulta a seguir faz com que o tipo de dados de destino receba a modificação `Nullable`:

```sql theme={null}
SET cast_keep_nullable = 1;
SELECT CAST(toNullable(toInt32(0)) AS Int32) as x, toTypeName(x);
```

Resultado:

```text theme={null}
┌─x─┬─toTypeName(CAST(toNullable(toInt32(0)), 'Int32'))─┐
│ 0 │ Nullable(Int32)                                   │
└───┴───────────────────────────────────────────────────┘
```

**Veja também**

* [CAST](/pt-BR/reference/functions/regular-functions/type-conversion-functions#CAST) função

<div id="cast_string_to_date_time_mode">
  ## cast\_string\_to\_date\_time\_mode
</div>

<SettingsInfoBlock type="DateTimeInputFormat" default_value="best_effort" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "best_effort"},{"label": "Usabilidade aprimorada"}]}, {"id": "row-2","items": [{"label": "25.6"},{"label": "basic"},{"label": "Permite usar diferentes modos de parsing de DateTime na conversão de String para DateTime"}]}]} />

Permite escolher o parser da representação textual de data e hora durante a conversão de String.

Valores possíveis:

* `'best_effort'` — Ativa o parsing estendido.

  O ClickHouse pode analisar o formato básico `YYYY-MM-DD HH:MM:SS` e todos os formatos de data e hora [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601). Por exemplo, `'2018-06-08T01:02:03.000Z'`.

* `'best_effort_us'` — Semelhante a `best_effort` (veja a diferença em [parseDateTimeBestEffortUS](/pt-BR/reference/functions/regular-functions/type-conversion-functions#parseDateTimeBestEffortUS)

* `'basic'` — Usa o parser básico.

  O ClickHouse pode analisar apenas o formato básico `YYYY-MM-DD HH:MM:SS` ou `YYYY-MM-DD`. Por exemplo, `2019-08-20 10:18:56` ou `2019-08-20`.

Veja também:

* [Tipo de dado DateTime.](/pt-BR/reference/data-types/datetime)
* [Funções para trabalhar com datas e horas.](/pt-BR/reference/functions/regular-functions/date-time-functions)

<div id="cast_string_to_dynamic_use_inference">
  ## cast\_string\_to\_dynamic\_use\_inference
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.5"},{"label": "0"},{"label": "Adiciona configuração para permitir a conversão de String em Dynamic por meio de parsing"}]}]} />

Usar inferência de tipos durante a conversão de String para Dynamic

<div id="cast_string_to_variant_use_inference">
  ## cast\_string\_to\_variant\_use\_inference
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.4"},{"label": "1"},{"label": "Nova configuração para habilitar/desabilitar a inferência de tipos durante o CAST de String para Variant"}]}]} />

Usa a inferência de tipos durante a conversão de String para Variant.

<div id="check_named_collection_dependencies">
  ## check\_named\_collection\_dependencies
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "1"},{"label": "Nova configuração para verificar se remover uma coleção nomeada quebraria tabelas dependentes."}]}]} />

Verifica se DROP NAMED COLLECTION não quebrará as tabelas que dependem dela

<div id="check_query_single_value_result">
  ## check\_query\_single\_value\_result
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "0"},{"label": "Configuração alterada para tornar CHECK TABLE mais útil"}]}]} />

Define o nível de detalhamento do resultado da consulta [CHECK TABLE](/pt-BR/reference/statements/check-table) para os motores da família `MergeTree` .

Valores possíveis:

* 0 — a consulta mostra o status de verificação de cada data part individual da tabela.
* 1 — a consulta mostra o status geral de verificação da tabela.

<div id="check_referential_table_dependencies">
  ## check\_referential\_table\_dependencies
</div>

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

Verifica se uma consulta DDL (como DROP TABLE ou RENAME) não quebrará dependências referenciais

<div id="check_table_dependencies">
  ## check\_table\_dependencies
</div>

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

Verifica se a consulta DDL (como DROP TABLE ou RENAME) não causará a quebra de dependências

<div id="checksum_on_read">
  ## checksum\_on\_read
</div>

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

Valide os checksum durante a leitura. Ela vem habilitada por padrão e deve permanecer sempre habilitada em produção. Não espere obter nenhum benefício ao desabilitar essa configuração. Ela deve ser usada apenas para experimentos e benchmarks. A configuração se aplica apenas a tabelas da família MergeTree. Os checksum são sempre validados para outros motores de tabela e ao receber dados pela rede.

<div id="cloud_mode">
  ## cloud\_mode
</div>

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

Modo Cloud

Valor padrão na Cloud: `1`.

<div id="cloud_mode_database_engine">
  ## cloud\_mode\_database\_engine
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.10"},{"label": "1"},{"label": "Uma configuração para o ClickHouse Cloud"}]}]} />

O engine de banco de dados permitido no Cloud. 1 - reescreve DDLs para usar o banco de dados Replicated, 2 - reescreve DDLs para usar o banco de dados Shared

Valor padrão no Cloud: `2`.

<div id="cloud_mode_engine">
  ## cloud\_mode\_engine
</div>

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

A família de engines permitida no Cloud.

* 0 - permite tudo
* 1 - reescreve DDLs para usar \*ReplicatedMergeTree
* 2 - reescreve DDLs para usar SharedMergeTree
* 3 - reescreve DDLs para usar SharedMergeTree, exceto quando um disco remoto é especificado explicitamente
* 4 - igual a 3, mas também usa Alias em vez de Distributed (a tabela Alias apontará para a tabela de destino da tabela Distributed, portanto usará a tabela local correspondente)

UInt64 para minimizar a parte pública

Valor padrão no Cloud: `2`.

<div id="cluster_for_parallel_replicas">
  ## cluster\_for\_parallel\_replicas
</div>

Cluster do shard em que o servidor atual está localizado

Valor padrão do Cloud: `default`.

<div id="cluster_function_process_archive_on_multiple_nodes">
  ## cluster\_function\_process\_archive\_on\_multiple\_nodes
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.7"},{"label": "1"},{"label": "Nova configuração"}]}]} />

Se definido como `true`, aumenta o desempenho do processamento de arquivos compactados em funções de cluster. Deve ser definido como `false` para garantir compatibilidade e evitar erros durante a atualização para 25.7+ ao usar funções de cluster com arquivos compactados em versões anteriores.

<div id="cluster_table_function_buckets_batch_size">
  ## cluster\_table\_function\_buckets\_batch\_size
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.11"},{"label": "0"},{"label": "Nova configuração."}]}]} />

Define o tamanho aproximado de um lote (em bytes) usado no processamento distribuído de tarefas em funções de tabela de cluster com granularidade de divisão `bucket`. O sistema acumula os dados até que pelo menos essa quantidade seja atingida. O tamanho real pode ser ligeiramente maior para se alinhar aos limites dos dados.

<div id="cluster_table_function_split_granularity">
  ## cluster\_table\_function\_split\_granularity
</div>

<SettingsInfoBlock type="ObjectStorageGranularityLevel" default_value="file" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.11"},{"label": "file"},{"label": "Nova configuração."}]}]} />

Controla como os dados são divididos em tarefas ao executar uma CLUSTER TABLE FUNCTION.

Esta configuração define a granularidade da distribuição do trabalho no cluster:

* `file` — cada tarefa processa um arquivo inteiro.
* `bucket` — as tarefas são criadas por bloco de dados interno dentro de um arquivo (por exemplo, row groups de Parquet).

Escolher uma granularidade mais fina (como `bucket`) pode melhorar o paralelismo ao trabalhar com um número pequeno de arquivos grandes.
Por exemplo, se um arquivo Parquet contiver vários row groups, habilitar a granularidade `bucket` permite que cada grupo seja processado de forma independente por diferentes workers.

<div id="collect_hash_table_stats_during_aggregation">
  ## collect\_hash\_table\_stats\_during\_aggregation
</div>

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

Habilita a coleta de estatísticas da tabela hash para otimizar a alocação de memória

<div id="collect_hash_table_stats_during_joins">
  ## collect\_hash\_table\_stats\_during\_joins
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.7"},{"label": "1"},{"label": "Nova configuração."}]}]} />

Habilita a coleta de estatísticas da tabela hash para otimizar a alocação de memóri

<div id="compatibility">
  ## compatibility
</div>

A configuração `compatibility` faz com que o ClickHouse use as configurações padrão de uma versão anterior do ClickHouse, informada no próprio valor da configuração.

Se algumas configurações estiverem definidas com valores diferentes do padrão, esses valores serão respeitados (apenas as configurações que não tiverem sido modificadas serão afetadas pela configuração `compatibility`).

Essa configuração aceita um número de versão do ClickHouse como string, como `22.3` ou `22.8`. Um valor vazio significa que essa configuração está desabilitada.

Desabilitada por padrão.

<Note>
  No ClickHouse Cloud, a configuração de compatibilidade padrão no nível do serviço precisa ser definida pelo suporte do ClickHouse Cloud. Abra [um chamado](https://clickhouse.cloud/support) para solicitar essa definição.
  No entanto, a configuração `compatibility` pode ser substituída nos níveis de usuário, função, perfil, consulta ou sessão usando os mecanismos padrão de configuração do ClickHouse, como `SET compatibility = '22.3'` em uma sessão ou `SETTINGS compatibility = '22.3'` em uma consulta.
</Note>

<div id="compatibility_ignore_auto_increment_in_create_table">
  ## compatibility\_ignore\_auto\_increment\_in\_create\_table
</div>

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

Ignora a palavra-chave AUTO\_INCREMENT na declaração da coluna se true; caso contrário, retorna um erro. Isso simplifica a migração do MySQL

<div id="compatibility_ignore_collation_in_create_table">
  ## compatibility\_ignore\_collation\_in\_create\_table
</div>

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

Compatibilidade: ignorar collation no CREATE TABLE

<div id="compatibility_s3_presigned_url_query_in_path">
  ## compatibility\_s3\_presigned\_url\_query\_in\_path
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "0"},{"label": "Nova configuração."}]}]} />

Compatibilidade: quando ativada, incorpora os parâmetros de consulta da URL pré-assinada (por exemplo, X-Amz-\*) à chave do S3 (comportamento legado),
de modo que '?' funcione como um curinga no caminho. Quando desativada (padrão), os parâmetros de consulta da URL pré-assinada são mantidos na string de consulta da URL
para evitar que '?' seja interpretado como um curinga.

<div id="compile_aggregate_expressions">
  ## compile\_aggregate\_expressions
</div>

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

Ativa ou desativa a compilação JIT de funções de agregação em código nativo. Ativar essa configuração pode melhorar o desempenho.

Valores possíveis:

* 0 — A agregação é feita sem compilação JIT.
* 1 — A agregação é feita com compilação JIT.

**Veja também**

* [min\_count\_to\_compile\_aggregate\_expression](#min_count_to_compile_aggregate_expression)

<div id="compile_expressions">
  ## compile\_expressions
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "1"},{"label": "Acreditamos que a infraestrutura LLVM por trás do compilador JIT seja estável o suficiente para habilitar essa configuração por padrão."}]}]} />

Compila algumas funções escalares e operadores em código nativo.

<div id="compile_sort_description">
  ## compile\_sort\_description
</div>

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

Compila a descrição da ordenação em código nativo.

<div id="connect_timeout">
  ## connect\_timeout
</div>

<SettingsInfoBlock type="Segundos" default_value="10" />

Tempo limite da conexão se não houver réplicas.

<div id="connect_timeout_with_failover_ms">
  ## connect\_timeout\_with\_failover\_ms
</div>

<SettingsInfoBlock type="Milissegundos" default_value="1000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "23.4"},{"label": "1000"},{"label": "Aumenta o tempo limite padrão de conexão devido à conexão assíncrona"}]}]} />

O tempo limite, em milissegundos, para se conectar a um servidor remoto com o engine de tabela Distributed, se as seções 'shard' e 'réplica' forem usadas na definição do cluster.
Se não for bem-sucedido, serão feitas várias tentativas de conexão com diferentes réplicas.

<div id="connect_timeout_with_failover_secure_ms">
  ## connect\_timeout\_with\_failover\_secure\_ms
</div>

<SettingsInfoBlock type="Milissegundos" default_value="1000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "23.4"},{"label": "1000"},{"label": "Aumenta o tempo limite padrão para conexão segura devido à conexão assíncrona"}]}]} />

Tempo limite de conexão para selecionar a primeira réplica saudável (para conexões seguras).

<div id="connection_pool_max_wait_ms">
  ## connection\_pool\_max\_wait\_ms
</div>

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

O tempo de espera, em milissegundos, por uma conexão quando o pool de conexões está cheio.

Valores possíveis:

* Inteiro positivo.
* 0 — Sem timeout.

<div id="connections_with_failover_max_tries">
  ## connections\_with\_failover\_max\_tries
</div>

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

O número máximo de tentativas de conexão com cada réplica do mecanismo de tabela Distributed.

<div id="convert_query_to_cnf">
  ## convert\_query\_to\_cnf
</div>

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

Quando definido como `true`, uma consulta `SELECT` será convertida para a forma normal conjuntiva (CNF). Em alguns casos, reescrever uma consulta em CNF pode resultar em uma execução mais rápida (veja esta [issue no GitHub](https://github.com/ClickHouse/ClickHouse/issues/11749) para mais detalhes).

Por exemplo, observe como a consulta `SELECT` abaixo não é modificada (comportamento padrão):

```sql theme={null}
EXPLAIN SYNTAX
SELECT *
FROM
(
    SELECT number AS x
    FROM numbers(20)
) AS a
WHERE ((x >= 1) AND (x <= 5)) OR ((x >= 10) AND (x <= 15))
SETTINGS convert_query_to_cnf = false;
```

O resultado é:

```response theme={null}
┌─explain────────────────────────────────────────────────────────┐
│ SELECT x                                                       │
│ FROM                                                           │
│ (                                                              │
│     SELECT number AS x                                         │
│     FROM numbers(20)                                           │
│     WHERE ((x >= 1) AND (x <= 5)) OR ((x >= 10) AND (x <= 15)) │
│ ) AS a                                                         │
│ WHERE ((x >= 1) AND (x <= 5)) OR ((x >= 10) AND (x <= 15))     │
│ SETTINGS convert_query_to_cnf = 0                              │
└────────────────────────────────────────────────────────────────┘
```

Vamos definir `convert_query_to_cnf` como `true` e ver o que muda:

```sql theme={null}
EXPLAIN SYNTAX
SELECT *
FROM
(
    SELECT number AS x
    FROM numbers(20)
) AS a
WHERE ((x >= 1) AND (x <= 5)) OR ((x >= 10) AND (x <= 15))
SETTINGS convert_query_to_cnf = true;
```

Observe que a cláusula `WHERE` foi reescrita em CNF, mas o conjunto de resultados permanece idêntico — a lógica booleana não muda:

```response theme={null}
┌─explain───────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ SELECT x                                                                                                              │
│ FROM                                                                                                                  │
│ (                                                                                                                     │
│     SELECT number AS x                                                                                                │
│     FROM numbers(20)                                                                                                  │
│     WHERE ((x <= 15) OR (x <= 5)) AND ((x <= 15) OR (x >= 1)) AND ((x >= 10) OR (x <= 5)) AND ((x >= 10) OR (x >= 1)) │
│ ) AS a                                                                                                                │
│ WHERE ((x >= 10) OR (x >= 1)) AND ((x >= 10) OR (x <= 5)) AND ((x <= 15) OR (x >= 1)) AND ((x <= 15) OR (x <= 5))     │
│ SETTINGS convert_query_to_cnf = 1                                                                                     │
└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
```

Valores possíveis: true, false

<div id="correlated_subqueries_default_join_kind">
  ## correlated\_subqueries\_default\_join\_kind
</div>

<SettingsInfoBlock type="DecorrelationJoinKind" default_value="right" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.11"},{"label": "right"},{"label": "Nova configuração. Tipo de join padrão para o plano de consulta descorrelacionado."}]}, {"id": "row-2","items": [{"label": "25.10"},{"label": "right"},{"label": "Nova configuração. Tipo de join padrão para o plano de consulta descorrelacionado."}]}]} />

Controla o tipo de junções usadas no plano de consulta descorrelacionado. O valor padrão é `right`, o que significa que o plano descorrelacionado conterá RIGHT JOINs com a entrada da subconsulta no lado direito.

Valores possíveis:

* `left` - O processo de descorrelação produzirá LEFT JOINs, e a tabela de entrada aparecerá no lado esquerdo.
* `right` - O processo de descorrelação produzirá RIGHT JOINs, e a tabela de entrada aparecerá no lado direito.

<div id="correlated_subqueries_substitute_equivalent_expressions">
  ## correlated\_subqueries\_substitute\_equivalent\_expressions
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.7"},{"label": "1"},{"label": "Nova configuração para a otimização do planejamento de subconsultas correlacionadas."}]}]} />

Usa expressões de filtro para inferir expressões equivalentes e substituí-las em vez de criar um CROSS JOIN.

<div id="correlated_subqueries_use_in_memory_buffer">
  ## correlated\_subqueries\_use\_in\_memory\_buffer
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.1"},{"label": "1"},{"label": "Usa buffer na memória para a entrada de subconsultas correlacionadas por padrão."}]}]} />

Usa buffer na memória para a entrada de subconsultas correlacionadas para evitar sua reavaliação.

<div id="count_distinct_implementation">
  ## count\_distinct\_implementation
</div>

<SettingsInfoBlock type="String" default_value="uniqExact" />

Especifica qual das funções `uniq*` deve ser usada para executar a construção [COUNT(DISTINCT ...)](/pt-BR/reference/functions/aggregate-functions/count).

Valores possíveis:

* [uniq](/pt-BR/reference/functions/aggregate-functions/uniq)
* [uniqCombined](/pt-BR/reference/functions/aggregate-functions/uniqCombined)
* [uniqCombined64](/pt-BR/reference/functions/aggregate-functions/uniqCombined64)
* [uniqHLL12](/pt-BR/reference/functions/aggregate-functions/uniqHLL12)
* [uniqExact](/pt-BR/reference/functions/aggregate-functions/uniqExact)

<div id="count_distinct_optimization">
  ## count\_distinct\_optimization
</div>

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

Reescreve count distinct em uma subconsulta de group by

<div id="count_matches_stop_at_empty_match">
  ## count\_matches\_stop\_at\_empty\_match
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.6"},{"label": "0"},{"label": "Nova configuração."}]}]} />

Interrompe a contagem assim que um padrão corresponder a zero caracteres na função `countMatches`.

<div id="create_if_not_exists">
  ## create\_if\_not\_exists
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.9"},{"label": "0"},{"label": "Nova configuração."}]}]} />

Ativa `IF NOT EXISTS` para a instrução `CREATE` por padrão. Se esta configuração ou `IF NOT EXISTS` estiver especificado e uma tabela com o nome informado já existir, nenhuma exceção será lançada.

<div id="create_index_ignore_unique">
  ## create\_index\_ignore\_unique
</div>

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

Ignora a palavra-chave UNIQUE em CREATE UNIQUE INDEX. Criado para testes de compatibilidade com SQL.

<div id="create_replicated_merge_tree_fault_injection_probability">
  ## create\_replicated\_merge\_tree\_fault\_injection\_probability
</div>

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

A probabilidade de ocorrer uma injeção de falha durante a criação da tabela, após a criação dos metadados no ZooKeeper

<div id="create_table_empty_primary_key_by_default">
  ## create\_table\_empty\_primary\_key\_by\_default
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.11"},{"label": "1"},{"label": "Usabilidade aprimorada"}]}]} />

Permite criar tabelas \*MergeTree com chave primária vazia quando ORDER BY e PRIMARY KEY não são especificados

<div id="cross_join_min_bytes_to_compress">
  ## cross\_join\_min\_bytes\_to\_compress
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.5"},{"label": "1073741824"},{"label": "Tamanho mínimo do bloco a ser comprimido em CROSS JOIN. O valor zero significa desativar esse limite. Esse bloco é comprimido quando qualquer um dos dois limites (por linhas ou por bytes) é atingido."}]}]} />

Tamanho mínimo do bloco a ser comprimido em CROSS JOIN. O valor zero significa desativar esse limite. Esse bloco é comprimido quando qualquer um dos dois limites (por linhas ou por bytes) é atingido.

<div id="cross_join_min_rows_to_compress">
  ## cross\_join\_min\_rows\_to\_compress
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.5"},{"label": "10000000"},{"label": "Número mínimo de linhas para comprimir o bloco em CROSS JOIN. O valor zero significa desabilitar esse limite. O bloco é comprimido quando qualquer um dos dois limites (por linhas ou por bytes) é atingido."}]}]} />

Número mínimo de linhas para comprimir o bloco em CROSS JOIN. O valor zero significa desabilitar esse limite. O bloco é comprimido quando qualquer um dos dois limites (por linhas ou por bytes) é atingido.

<div id="cross_to_inner_join_rewrite">
  ## cross\_to\_inner\_join\_rewrite
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "22.7"},{"label": "2"},{"label": "Força a reescrita de comma join para inner"}]}]} />

Usa inner join em vez de comma/cross join se houver expressões de junção na cláusula WHERE. Valores: 0 - sem reescrita, 1 - aplicar se possível para comma/cross, 2 - forçar a reescrita de todas as junções por vírgula, cross - se possível

<div id="data_type_default_nullable">
  ## data\_type\_default\_nullable
</div>

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

Faz com que os tipos de dados sem modificadores explícitos [NULL or NOT NULL](/pt-BR/reference/statements/create/table#null-or-not-null-modifiers) na definição da coluna sejam [Nullable](/pt-BR/reference/data-types/nullable).

Valores possíveis:

* 1 — Os tipos de dados nas definições de coluna são definidos como `Nullable` por padrão.
* 0 — Os tipos de dados nas definições de coluna são definidos, por padrão, como não `Nullable`.

<div id="database_atomic_wait_for_drop_and_detach_synchronously">
  ## database\_atomic\_wait\_for\_drop\_and\_detach\_synchronously
</div>

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

Adiciona um modificador `SYNC` a todas as consultas `DROP` e `DETACH`.

Valores possíveis:

* 0 — A execução das consultas será adiada.
* 1 — As consultas serão executadas sem atraso.

<div id="database_datalake_require_metadata_access">
  ## database\_datalake\_require\_metadata\_access
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.1"},{"label": "1"},{"label": "Nova configuração."}]}]} />

Define se deve gerar erro ou não caso não haja permissões para obter os metadados da tabela no mecanismo de banco de dados DataLakeCatalog.

<div id="database_replicated_allow_explicit_uuid">
  ## database\_replicated\_allow\_explicit\_uuid
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.9"},{"label": "0"},{"label": "Adicionada uma nova configuração para impedir a especificação explícita do UUID da tabela"}]}]} />

0 - Não permite especificar explicitamente UUIDs para tabelas em bancos de dados Replicated. 1 - Permite. 2 - Permite, mas ignora o UUID especificado e gera um UUID aleatório.

<div id="database_replicated_allow_heavy_create">
  ## database\_replicated\_allow\_heavy\_create
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.7"},{"label": "0"},{"label": "Consultas DDL de longa execução (CREATE AS SELECT e POPULATE) no database engine Replicated eram proibidas"}]}]} />

Permite consultas DDL de longa execução (CREATE AS SELECT e POPULATE) no database engine Replicated. Observe que isso pode bloquear a DDL queue por muito tempo.

<div id="database_replicated_allow_only_replicated_engine">
  ## database\_replicated\_allow\_only\_replicated\_engine
</div>

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

Permite criar apenas tabelas Replicated em bancos de dados com engine Replicated

Valor padrão no Cloud: `1`.

<div id="database_replicated_allow_replicated_engine_arguments">
  ## database\_replicated\_allow\_replicated\_engine\_arguments
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.9"},{"label": "0"},{"label": "Não permitir argumentos explícitos por padrão"}]}]} />

0 - Não permitir especificar explicitamente o caminho do ZooKeeper e o nome da réplica para tabelas \*MergeTree em bancos de dados Replicated. 1 - Permitir. 2 - Permitir, mas ignorar o caminho especificado e usar o caminho padrão. 3 - Permitir e não registrar aviso.

<div id="database_replicated_always_detach_permanently">
  ## database\_replicated\_always\_detach\_permanently
</div>

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

Executa DETACH TABLE como DETACH TABLE PERMANENTLY se o engine do banco de dados for Replicated

<div id="database_replicated_enforce_synchronous_settings">
  ## database\_replicated\_enforce\_synchronous\_settings
</div>

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

Exige espera síncrona para algumas consultas (veja também database\_atomic\_wait\_for\_drop\_and\_detach\_synchronously, mutations\_sync, alter\_sync). Não é recomendável habilitar essas configurações.

<div id="database_replicated_initial_query_timeout_sec">
  ## database\_replicated\_initial\_query\_timeout\_sec
</div>

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

Define por quanto tempo a consulta DDL inicial deve aguardar que o banco de dados Replicated processe as entradas anteriores da fila DDL, em segundos.

Valores possíveis:

* Inteiro positivo.
* 0 — Ilimitado.

<div id="database_shared_drop_table_delay_seconds">
  ## database\_shared\_drop\_table\_delay\_seconds
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.11"},{"label": "28800"},{"label": "Nova configuração."}]}]} />

O atraso, em segundos, antes que uma tabela excluída seja efetivamente removida de um banco de dados Shared. Isso permite recuperar a tabela dentro desse período usando a instrução `UNDROP TABLE`.

<div id="decimal_check_overflow">
  ## decimal\_check\_overflow
</div>

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

Verifica overflow em operações aritméticas e de comparação com decimais

<div id="deduplicate_blocks_in_dependent_materialized_views">
  ## deduplicate\_blocks\_in\_dependent\_materialized\_views
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "1"},{"label": "Ativa a desduplicação para visões materializadas dependentes por padrão."}]}]} />

Ativa ou desativa a verificação de desduplicação para visões materializadas que recebem dados de tabelas Replicated\*.

Valores possíveis:

0 — Desativado.
1 — Ativado.

Quando ativada, o ClickHouse realiza a desduplicação de blocos em visões materializadas que dependem de tabelas Replicated\*.
Essa configuração é útil para garantir que as visões materializadas não contenham dados duplicados quando a operação de inserção estiver sendo repetida devido a uma falha.

**Veja também**

* [Processamento de NULL em operadores IN](/pt-BR/concepts/features/operations/insert/deduplicating-inserts-on-retries#insert-deduplication-with-materialized-views)

<div id="deduplicate_insert">
  ## deduplicate\_insert
</div>

<SettingsInfoBlock type="DeduplicateInsertMode" default_value="enable" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "enable"},{"label": "Habilita a desduplicação para todos os inserts síncronos e assíncronos por padrão."}]}]} />

Habilita ou desabilita a desduplicação de blocos de `INSERT INTO` (para tabelas Replicated\*).
Essa configuração substitui `insert_deduplicate` e `async_insert_deduplicate`.
Essa configuração tem três valores possíveis:

* disable — A desduplicação é desabilitada para a consulta `INSERT INTO`.
* enable — A desduplicação é habilitada para a consulta `INSERT INTO`.
* backward\_compatible\_choice — A desduplicação é habilitada se `insert_deduplicate` ou `async_insert_deduplicate` estiverem habilitados para o tipo específico de insert.

<div id="deduplicate_insert_select">
  ## deduplicate\_insert\_select
</div>

<SettingsInfoBlock type="DeduplicateInsertSelectMode" default_value="enable_when_possible" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.1"},{"label": "enable_when_possible"},{"label": "altera o comportamento padrão de deduplicate_insert_select para ENABLE_WHEN_POSSIBLE"}]}, {"id": "row-2","items": [{"label": "25.12"},{"label": "enable_even_for_bad_queries"},{"label": "Nova configuração, substitui insert_select_deduplicate"}]}]} />

Habilita ou desabilita a desduplicação de blocos de `INSERT SELECT` (para tabelas Replicated\*).
Essa configuração substitui `insert_deduplicate` e `deduplicate_insert` em consultas `INSERT SELECT`.
Essa configuração tem quatro valores possíveis:

* disable — A desduplicação fica desabilitada para a consulta `INSERT SELECT`.
* force\_enable — A desduplicação é habilitada para a consulta `INSERT SELECT`. Se o resultado do `SELECT` não for estável, uma exceção é gerada.
* enable\_when\_possible — A desduplicação é habilitada se `insert_deduplicate` estiver habilitado e o resultado do `SELECT` for estável; caso contrário, fica desabilitada.
* enable\_even\_for\_bad\_queries - A desduplicação é habilitada se `insert_deduplicate` estiver habilitado. Se o resultado do `SELECT` não for estável, um aviso é registrado no log, mas a consulta é executada com desduplicação. Esta opção existe para compatibilidade com versões anteriores. Considere usar outras opções, pois ela pode levar a resultados inesperados.

<div id="default_materialized_view_sql_security">
  ## default\_materialized\_view\_sql\_security
</div>

<SettingsInfoBlock type="SQLSecurityType" default_value="DEFINER" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.2"},{"label": "DEFINER"},{"label": "Permite definir o valor padrão da opção SQL SECURITY ao criar uma visão materializada"}]}]} />

Permite definir o valor padrão da opção SQL SECURITY ao criar uma visão materializada. [Mais sobre SQL security](/pt-BR/reference/statements/create/view#sql_security).

O valor padrão é `DEFINER`.

<div id="default_max_bytes_in_join">
  ## default\_max\_bytes\_in\_join
</div>

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

Tamanho máximo da tabela do lado direito quando um limite é necessário, mas `max_bytes_in_join` não está definido.

<div id="default_normal_view_sql_security">
  ## default\_normal\_view\_sql\_security
</div>

<SettingsInfoBlock type="SQLSecurityType" default_value="INVOKER" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.2"},{"label": "INVOKER"},{"label": "Permite definir a opção padrão de `SQL SECURITY` ao criar uma view normal"}]}]} />

Permite definir a opção padrão de `SQL SECURITY` ao criar uma view normal. [Mais sobre SQL security](/pt-BR/reference/statements/create/view#sql_security).

O valor padrão é `INVOKER`.

<div id="default_table_engine">
  ## default\_table\_engine
</div>

<SettingsInfoBlock type="DefaultTableEngine" default_value="MergeTree" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "MergeTree"},{"label": "Define o mecanismo de tabela padrão como MergeTree para melhor usabilidade"}]}]} />

Mecanismo de tabela padrão usado quando `ENGINE` não é definido em uma instrução `CREATE`.

Valores possíveis:

* uma string que representa qualquer nome válido de mecanismo de tabela

Valor padrão no Cloud: `SharedMergeTree`.

**Exemplo**

Consulta:

```sql theme={null}
SET default_table_engine = 'Log';

SELECT name, value, changed FROM system.settings WHERE name = 'default_table_engine';
```

Resultado:

```response theme={null}
┌─name─────────────────┬─value─┬─changed─┐
│ default_table_engine │ Log   │       1 │
└──────────────────────┴───────┴─────────┘
```

Neste exemplo, qualquer nova tabela que não especificar um `Engine` usará o mecanismo de tabela `Log`:

Consulta:

```sql theme={null}
CREATE TABLE my_table (
    x UInt32,
    y UInt32
);

SHOW CREATE TABLE my_table;
```

Resultado:

```response theme={null}
┌─statement────────────────────────────────────────────────────────────────┐
│ CREATE TABLE default.my_table
(
    `x` UInt32,
    `y` UInt32
)
ENGINE = Log
└──────────────────────────────────────────────────────────────────────────┘
```

<div id="default_temporary_table_engine">
  ## default\_temporary\_table\_engine
</div>

<SettingsInfoBlock type="DefaultTableEngine" default_value="Memory" />

O mesmo que [default\_table\_engine](#default_table_engine), mas para tabelas temporárias.

Neste exemplo, qualquer nova tabela temporária que não especifique `Engine` usará o mecanismo de tabela `Log`:

Consulta:

```sql theme={null}
SET default_temporary_table_engine = 'Log';

CREATE TEMPORARY TABLE my_table (
    x UInt32,
    y UInt32
);

SHOW CREATE TEMPORARY TABLE my_table;
```

Resultado:

```response theme={null}
┌─statement────────────────────────────────────────────────────────────────┐
│ CREATE TEMPORARY TABLE default.my_table
(
    `x` UInt32,
    `y` UInt32
)
ENGINE = Log
└──────────────────────────────────────────────────────────────────────────┘
```

<div id="default_view_definer">
  ## default\_view\_definer
</div>

<SettingsInfoBlock type="String" default_value="CURRENT_USER" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.2"},{"label": "CURRENT_USER"},{"label": "Permite definir a opção `DEFINER` padrão ao criar uma VIEW"}]}]} />

Permite definir a opção `DEFINER` padrão ao criar uma VIEW. [Mais sobre SQL security](/pt-BR/reference/statements/create/view#sql_security).

O valor padrão é `CURRENT_USER`.

<div id="defer_partition_pruning_after_final">
  ## defer\_partition\_pruning\_after\_final
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "1"},{"label": "Configuração adicionada na versão 26.5 para controlar o comportamento de poda de partições com FINAL, introduzido silenciosamente na 26.3 (https://github.com/ClickHouse/ClickHouse/pull/98242). A mudança semântica relevante está registrada no bloco da 26.3 para que `compatibility = '26.2'` a reverta; esta entrada existe para que a verificação de upgrade a partir da 26.4 aceite o nome recém-introduzido."}]}, {"id": "row-2","items": [{"label": "26.3"},{"label": "1"},{"label": "Controla o fato de o planner do FINAL sempre ignorar a poda de partições quando a coluna da chave de partição não está na chave de ordenação. A mudança de comportamento em si foi lançada silenciosamente na 26.3 por meio de https://github.com/ClickHouse/ClickHouse/pull/98242; esta entrada a documenta retroativamente para que `compatibility = '26.2'` restaure o comportamento anterior à regressão (0 = podar antes de FINAL, rápido; 1 = adiar a poda, seguro em termos de corretude)."}]}]} />

Quando ativada (padrão), a poda de partições é ignorada em consultas `FINAL` em tabelas cujas
colunas da chave de partição não fazem parte da chave de ordenação. Esse é o comportamento seguro em termos de corretude
introduzido na 26.3: `FINAL` pode precisar desduplicar linhas que compartilham uma chave primária, mas estão
em partições diferentes, e a poda de partições excluiria silenciosamente essas linhas da
entrada da desduplicação.

Quando desativada, a poda de partições é aplicada mesmo com `FINAL`, restaurando o comportamento
anterior à 26.3. Isso pode ser substancialmente mais rápido para consultas com predicados `WHERE` na
coluna de partição, mas só é correto quando linhas com a mesma chave primária não podem existir
em partições diferentes — por exemplo, tabelas de log de eventos cuja coluna de partição é definida no momento da inserção
e nunca muda.

Essa configuração afeta apenas tabelas particionadas cujas colunas da chave de partição não estão contidas
na chave de ordenação; para outras tabelas, a poda de partições é sempre aplicada.

Valores possíveis:

* 0 — Aplicar a poda de partições antes de `FINAL` (comportamento anterior à 26.3, mais rápido, mas inseguro no caso geral).
* 1 — Adiar a poda de partições para depois de `FINAL` (padrão, seguro em termos de corretude).

<div id="delta_lake_enable_engine_predicate">
  ## delta\_lake\_enable\_engine\_predicate
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "1"},{"label": "Nova configuração"}]}]} />

Habilita a poda interna de dados no delta-kernel.

<div id="delta_lake_enable_expression_visitor_logging">
  ## delta\_lake\_enable\_expression\_visitor\_logging
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "0"},{"label": "Nova configuração"}]}]} />

Habilita logs no nível Test do visitor de expressões do DeltaLake. Esses logs podem ser detalhados demais, até mesmo para logs de teste.

<div id="delta_lake_insert_max_bytes_in_data_file">
  ## delta\_lake\_insert\_max\_bytes\_in\_data\_file
</div>

<SettingsInfoBlock type="NonZeroUInt64" default_value="1073741824" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.9"},{"label": "1073741824"},{"label": "Nova configuração."}]}]} />

Define o limite, em bytes, para um único arquivo de dados inserido no delta lake.

<div id="delta_lake_insert_max_rows_in_data_file">
  ## delta\_lake\_insert\_max\_rows\_in\_data\_file
</div>

<SettingsInfoBlock type="NonZeroUInt64" default_value="1000000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.9"},{"label": "1000000"},{"label": "Nova configuração."}]}]} />

Define um limite de linhas para um único arquivo de dados inserido no Delta Lake.

<div id="delta_lake_log_metadata">
  ## delta\_lake\_log\_metadata
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.10"},{"label": "0"},{"label": "Nova configuração."}]}]} />

Habilita o registro em log dos arquivos de metadados do delta lake na tabela do sistema.

<div id="delta_lake_reload_schema_for_consistency">
  ## delta\_lake\_reload\_schema\_for\_consistency
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": "0"},{"label": "Nova configuração para controlar se o DeltaLake recarrega o schema antes de cada consulta para garantir a consistência."}]}]} />

Se habilitado, o schema é recarregado dos metadados do DeltaLake antes da execução de cada consulta para garantir
a consistência entre o schema usado durante a análise da consulta e o schema usado durante a execução.

<div id="delta_lake_snapshot_end_version">
  ## delta\_lake\_snapshot\_end\_version
</div>

<SettingsInfoBlock type="Int64" default_value="-1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "-1"},{"label": "Nova configuração."}]}]} />

Versão final do snapshot do delta lake a ser lida. O valor -1 significa ler a versão mais recente (o valor 0 é uma versão de snapshot válida).

<div id="delta_lake_snapshot_start_version">
  ## delta\_lake\_snapshot\_start\_version
</div>

<SettingsInfoBlock type="Int64" default_value="-1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "-1"},{"label": "Nova configuração."}]}]} />

Versão inicial do snapshot do Delta Lake a ser lida. O valor -1 significa ler a versão mais recente (o valor 0 é uma versão de snapshot válida).

<div id="delta_lake_snapshot_version">
  ## delta\_lake\_snapshot\_version
</div>

<SettingsInfoBlock type="Int64" default_value="-1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "-1"},{"label": "Nova configuração"}]}]} />

Versão do snapshot do Delta Lake a ser lida. O valor -1 significa ler a versão mais recente (o valor 0 é uma versão de snapshot válida).

<div id="delta_lake_throw_on_engine_predicate_error">
  ## delta\_lake\_throw\_on\_engine\_predicate\_error
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "0"},{"label": "Nova configuração"}]}]} />

Ativa o lançamento de uma exceção caso ocorra um erro ao analisar o predicado de varredura no delta-kernel.

<div id="describe_compact_output">
  ## describe\_compact\_output
</div>

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

Se true, inclui apenas os nomes e os tipos das colunas no resultado da consulta DESCRIBE

<div id="describe_include_subcolumns">
  ## describe\_include\_subcolumns
</div>

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

Habilita a descrição de subcolunas em uma consulta [DESCRIBE](/pt-BR/reference/statements/describe-table). Por exemplo, membros de um [Tuple](/pt-BR/reference/data-types/tuple) ou subcolunas de um tipo de dado [Map](/pt-BR/reference/data-types/map#reading-subcolumns-of-map), [Nullable](/pt-BR/reference/data-types/nullable#finding-null) ou [Array](/pt-BR/reference/data-types/array#array-size).

Valores possíveis:

* 0 — As subcolunas não são incluídas em consultas `DESCRIBE`.
* 1 — As subcolunas são incluídas em consultas `DESCRIBE`.

**Exemplo**

Veja um exemplo da instrução [DESCRIBE](/pt-BR/reference/statements/describe-table).

<div id="describe_include_virtual_columns">
  ## describe\_include\_virtual\_columns
</div>

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

Se true, as colunas virtuais da tabela serão incluídas no resultado da consulta DESCRIBE.

<div id="dialect">
  ## dialeto
</div>

<SettingsInfoBlock type="Dialeto" default_value="clickhouse" />

Qual dialeto será usado para processar a consulta

<div id="dictionary_use_async_executor">
  ## dictionary\_use\_async\_executor
</div>

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

Executa um pipeline para ler a fonte do dicionário em várias threads. Compatível apenas com dicionários que usam fonte CLICKHOUSE local.

<div id="dictionary_validate_primary_key_type">
  ## dictionary\_validate\_primary\_key\_type
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.7"},{"label": "0"},{"label": "Valida o tipo da chave primária de dicionários. Por padrão, o tipo `id` de layouts simples será convertido implicitamente para UInt64."}]}]} />

Valida o tipo da chave primária de dicionários. Por padrão, o tipo `id` de layouts simples será convertido implicitamente para UInt64.

<div id="distinct_overflow_mode">
  ## distinct\_overflow\_mode
</div>

<SettingsInfoBlock type="OverflowMode" default_value="throw" />

Define o que acontece quando a quantidade de dados excede um dos limites.

Valores possíveis:

* `throw`: lançar uma exceção (padrão).
* `break`: interromper a execução da consulta e retornar o resultado parcial, como se os
  dados de origem tivessem se esgotado.

<div id="distributed_aggregation_memory_efficient">
  ## distributed\_aggregation\_memory\_efficient
</div>

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

Indica se o modo de economia de memória da agregação distribuída está habilitado.

<div id="distributed_background_insert_batch">
  ## distributed\_background\_insert\_batch
</div>

**Aliases**: `distributed_directory_monitor_batch_inserts`

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

Ativa/desativa o envio em lote dos dados inseridos.

Quando o envio em lote está ativado, o motor de tabela [Distributed](/pt-BR/reference/engines/table-engines/special/distributed) tenta enviar vários arquivos de dados inseridos em uma única operação, em vez de enviá-los separadamente. O envio em lote melhora o desempenho do cluster ao aproveitar melhor os recursos do servidor e da rede.

Possible values:

* 1 — Ativado.
* 0 — Desativado.

<div id="distributed_background_insert_max_sleep_time_ms">
  ## distributed\_background\_insert\_max\_sleep\_time\_ms
</div>

**Aliases**: `distributed_directory_monitor_max_sleep_time_ms`

<SettingsInfoBlock type="Milissegundos" default_value="30000" />

Intervalo máximo para que o motor de tabela [Distributed](/pt-BR/reference/engines/table-engines/special/distributed) envie dados. Limita o crescimento exponencial do intervalo definido na configuração [distributed\_background\_insert\_sleep\_time\_ms](#distributed_background_insert_sleep_time_ms).

Valores possíveis:

* Um número inteiro positivo de milissegundos.

<div id="distributed_background_insert_sleep_time_ms">
  ## distributed\_background\_insert\_sleep\_time\_ms
</div>

**Aliases**: `distributed_directory_monitor_sleep_time_ms`

<SettingsInfoBlock type="Milissegundos" default_value="100" />

Intervalo base para o motor de tabela [Distributed](/pt-BR/reference/engines/table-engines/special/distributed) enviar dados. O intervalo real aumenta exponencialmente em caso de erro.

Valores possíveis:

* Um número inteiro positivo de milissegundos.

<div id="distributed_background_insert_split_batch_on_failure">
  ## distributed\_background\_insert\_split\_batch\_on\_failure
</div>

**Aliases**: `distributed_directory_monitor_split_batch_on_failure`

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

Habilita/desabilita a divisão de batches em caso de falha.

Às vezes, o envio de um batch específico para o shard remoto pode falhar por causa de algum pipeline posterior complexo (ou seja, `MATERIALIZED VIEW` com `GROUP BY`), devido a `Memory limit exceeded` ou erros semelhantes. Nesse caso, tentar novamente não ajudará (e isso deixará os envios distribuídos da tabela travados), mas enviar os arquivos desse batch um a um pode fazer com que o `INSERT` seja bem-sucedido.

Portanto, definir essa configuração como `1` desabilitará o batching para esses batches (ou seja, desabilita temporariamente `distributed_background_insert_batch` para batches com falha).

Valores possíveis:

* 1 — Habilitado.
* 0 — Desabilitado.

<Note>
  Essa configuração também afeta batches corrompidos (que podem aparecer devido ao encerramento anormal do servidor (máquina) e à ausência de `fsync_after_insert`/`fsync_directories` para o motor de tabela [Distributed](/pt-BR/reference/engines/table-engines/special/distributed)).
</Note>

<Note>
  Você não deve depender da divisão automática de batches, pois isso pode prejudicar o desempenho.
</Note>

<div id="distributed_background_insert_timeout">
  ## distributed\_background\_insert\_timeout
</div>

**Aliases**: `insert_distributed_timeout`

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

Tempo limite para a consulta INSERT em distributed. Essa configuração é usada apenas com insert\_distributed\_sync habilitado. O valor 0 significa que não há tempo limite.

<div id="distributed_cache_alignment">
  ## distributed\_cache\_alignment
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.7"},{"label": "0"},{"label": "Renomeação de distributed_cache_read_alignment"}]}]} />

Tem efeito apenas no ClickHouse Cloud. Uma configuração para fins de teste; não a altere

<div id="distributed_cache_bypass_connection_pool">
  ## distributed\_cache\_bypass\_connection\_pool
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.10"},{"label": "0"},{"label": "Uma configuração para o ClickHouse Cloud"}]}]} />

Só tem efeito no ClickHouse Cloud. Permite contornar o pool de conexões do cache distribuído

<div id="distributed_cache_connect_backoff_max_ms">
  ## distributed\_cache\_connect\_backoff\_max\_ms
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "50"},{"label": "Nova configuração"}]}]} />

Só tem efeito no ClickHouse Cloud. Número máximo de milissegundos de backoff para criar conexões com o distributed cache.

<div id="distributed_cache_connect_backoff_min_ms">
  ## distributed\_cache\_connect\_backoff\_min\_ms
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "0"},{"label": "Nova configuração"}]}]} />

Só tem efeito no ClickHouse Cloud. Tempo mínimo de backoff, em milissegundos, para criar conexões com o distributed cache.

<div id="distributed_cache_connect_max_tries">
  ## distributed\_cache\_connect\_max\_tries
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "5"},{"label": "Valor da configuração alterado"}]}, {"id": "row-2","items": [{"label": "25.1"},{"label": "20"},{"label": "Somente Cloud"}]}, {"id": "row-3","items": [{"label": "24.10"},{"label": "20"},{"label": "Uma configuração do ClickHouse Cloud"}]}]} />

Tem efeito apenas no ClickHouse Cloud. Número de tentativas de conexão ao cache distribuído em caso de falha

<div id="distributed_cache_connect_timeout_ms">
  ## distributed\_cache\_connect\_timeout\_ms
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.10"},{"label": "50"},{"label": "Nova configuração"}]}]} />

Só tem efeito no ClickHouse Cloud. Tempo limite de conexão ao estabelecer conexão com o servidor de cache distribuído.

<div id="distributed_cache_credentials_refresh_period_seconds">
  ## distributed\_cache\_credentials\_refresh\_period\_seconds
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.6"},{"label": "5"},{"label": "Nova configuração privada"}]}]} />

Só tem efeito no ClickHouse Cloud. Período de atualização das credenciais.

<div id="distributed_cache_data_packet_ack_window">
  ## distributed\_cache\_data\_packet\_ack\_window
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.10"},{"label": "5"},{"label": "Uma configuração para o ClickHouse Cloud"}]}]} />

Só tem efeito no ClickHouse Cloud. Janela para envio de ACK da sequência de DataPacket em uma única solicitação de leitura do cache distribuído

<div id="distributed_cache_discard_connection_if_unread_data">
  ## distributed\_cache\_discard\_connection\_if\_unread\_data
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.11"},{"label": "1"},{"label": "Nova configuração"}]}, {"id": "row-2","items": [{"label": "24.10"},{"label": "1"},{"label": "Nova configuração"}]}]} />

Só tem efeito no ClickHouse Cloud. Descarta a conexão se houver dados não lidos.

<div id="distributed_cache_fetch_metrics_only_from_current_az">
  ## distributed\_cache\_fetch\_metrics\_only\_from\_current\_az
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.10"},{"label": "1"},{"label": "Uma configuração do ClickHouse Cloud"}]}]} />

Só tem efeito no ClickHouse Cloud. Busca métricas apenas da zona de disponibilidade atual em system.distributed\_cache\_metrics, system.distributed\_cache\_events

<div id="distributed_cache_file_cache_name">
  ## distributed\_cache\_file\_cache\_name
</div>

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.1"},{"label": ""},{"label": "Nova configuração."}]}]} />

Tem efeito apenas no ClickHouse Cloud. Uma configuração usada apenas em testes de CI — nome do cache do sistema de arquivos a ser usado no distributed cache.

<div id="distributed_cache_log_mode">
  ## distributed\_cache\_log\_mode
</div>

<SettingsInfoBlock type="DistributedCacheLogMode" default_value="on_error" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.10"},{"label": "on_error"},{"label": "Uma configuração para ClickHouse Cloud"}]}]} />

Só tem efeito no ClickHouse Cloud. Modo de gravação no system.distributed\_cache\_log

<div id="distributed_cache_max_unacked_inflight_packets">
  ## distributed\_cache\_max\_unacked\_inflight\_packets
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.10"},{"label": "10"},{"label": "Uma configuração para o ClickHouse Cloud"}]}]} />

Só tem efeito no ClickHouse Cloud. Número máximo de pacotes em trânsito sem confirmação em uma única solicitação de leitura do distributed cache

<div id="distributed_cache_min_bytes_for_seek">
  ## distributed\_cache\_min\_bytes\_for\_seek
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "0"},{"label": "Nova configuração privada."}]}]} />

Só tem efeito no ClickHouse Cloud. Número mínimo de bytes para executar seek no distributed cache.

<div id="distributed_cache_pool_behaviour_on_limit">
  ## distributed\_cache\_pool\_behaviour\_on\_limit
</div>

<SettingsInfoBlock type="DistributedCachePoolBehaviourOnLimit" default_value="wait" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "wait"},{"label": "Somente no Cloud"}]}, {"id": "row-2","items": [{"label": "24.10"},{"label": "allocate_bypassing_pool"},{"label": "Uma configuração do ClickHouse Cloud"}]}]} />

Só tem efeito no ClickHouse Cloud. Define o comportamento da conexão do distributed cache quando o limite do pool é atingido

<div id="distributed_cache_prefer_bigger_buffer_size">
  ## distributed\_cache\_prefer\_bigger\_buffer\_size
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.10"},{"label": "0"},{"label": "Nova configuração."}]}]} />

Só tem efeito no ClickHouse Cloud. É o mesmo que filesystem\_cache\_prefer\_bigger\_buffer\_size, mas para o cache distribuído.

<div id="distributed_cache_read_only_from_current_az">
  ## distributed\_cache\_read\_only\_from\_current\_az
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "1"},{"label": "Nova configuração"}]}]} />

Só tem efeito no ClickHouse Cloud. Permite ler apenas da zona de disponibilidade atual. Se desabilitado, fará leituras de todos os servidores de cache em todas as zonas de disponibilidade.

<div id="distributed_cache_read_request_max_tries">
  ## distributed\_cache\_read\_request\_max\_tries
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "10"},{"label": "Valor da configuração alterado"}]}, {"id": "row-2","items": [{"label": "25.4"},{"label": "20"},{"label": "Nova configuração"}]}]} />

Só tem efeito no ClickHouse Cloud. Número de tentativas para fazer uma solicitação de leitura do distributed cache em caso de falha

<div id="distributed_cache_receive_response_wait_milliseconds">
  ## distributed\_cache\_receive\_response\_wait\_milliseconds
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.10"},{"label": "60000"},{"label": "Uma configuração para o ClickHouse Cloud"}]}]} />

Só tem efeito no ClickHouse Cloud. Tempo de espera, em milissegundos, para receber os dados de uma solicitação do distributed cache

<div id="distributed_cache_receive_timeout_milliseconds">
  ## distributed\_cache\_receive\_timeout\_milliseconds
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.10"},{"label": "10000"},{"label": "Uma configuração do ClickHouse Cloud"}]}]} />

Só tem efeito no ClickHouse Cloud. Tempo de espera, em milissegundos, para receber qualquer resposta do distributed cache

Valor padrão do Cloud: `20000`.

<div id="distributed_cache_receive_timeout_ms">
  ## distributed\_cache\_receive\_timeout\_ms
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.10"},{"label": "3000"},{"label": "Nova configuração"}]}]} />

Tem efeito apenas no ClickHouse Cloud. Tempo limite para receber dados do servidor do distributed cache, em milissegundos. Se nenhum byte for recebido nesse intervalo, uma exceção é lançada.

<div id="distributed_cache_send_timeout_ms">
  ## distributed\_cache\_send\_timeout\_ms
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.10"},{"label": "3000"},{"label": "Nova configuração"}]}]} />

Só tem efeito no ClickHouse Cloud. Tempo limite para enviar dados ao servidor de cache distribuído, em milissegundos. Se um cliente precisar enviar dados, mas não conseguir enviar nenhum byte dentro desse intervalo, será gerada uma exceção.

<div id="distributed_cache_tcp_keep_alive_timeout_ms">
  ## distributed\_cache\_tcp\_keep\_alive\_timeout\_ms
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.10"},{"label": "2900"},{"label": "Nova configuração"}]}]} />

Só tem efeito no ClickHouse Cloud. O tempo, em milissegundos, que a conexão com o servidor de cache distribuído precisa permanecer inativa antes de o TCP começar a enviar sondas de keepalive.

<div id="distributed_cache_throw_on_error">
  ## distributed\_cache\_throw\_on\_error
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.10"},{"label": "0"},{"label": "Uma configuração para o ClickHouse Cloud"}]}]} />

Só tem efeito no ClickHouse Cloud. Relança a exceção ocorrida durante a comunicação com o distributed cache ou a exceção recebida do distributed cache. Caso contrário, em caso de erro, recorre a ignorar o distributed cache.

<div id="distributed_cache_use_clients_cache_for_read">
  ## distributed\_cache\_use\_clients\_cache\_for\_read
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "1"},{"label": "Nova configuração"}]}]} />

Só tem efeito no ClickHouse Cloud. Usa o cache dos clientes para solicitações de leitura.

<div id="distributed_cache_use_clients_cache_for_write">
  ## distributed\_cache\_use\_clients\_cache\_for\_write
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "0"},{"label": "Nova configuração"}]}]} />

Tem efeito apenas no ClickHouse Cloud. Use o cache dos clientes para requisições de gravação.

<div id="distributed_cache_wait_connection_from_pool_milliseconds">
  ## distributed\_cache\_wait\_connection\_from\_pool\_milliseconds
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.10"},{"label": "100"},{"label": "Uma configuração para o ClickHouse Cloud"}]}]} />

Só tem efeito no ClickHouse Cloud. Tempo de espera, em milissegundos, para receber uma conexão do pool de conexões se distributed\_cache\_pool\_behaviour\_on\_limit for wait

<div id="distributed_cache_write_request_max_tries">
  ## distributed\_cache\_write\_request\_max\_tries
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "10"},{"label": "Nova configuração"}]}]} />

Só tem efeito no ClickHouse Cloud. Número de tentativas para realizar uma solicitação de gravação do distributed cache em caso de falha

<div id="distributed_connections_pool_size">
  ## distributed\_connections\_pool\_size
</div>

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

O número máximo de conexões simultâneas com servidores remotos para o processamento distribuído de todas as consultas a uma única tabela Distributed. Recomendamos definir um valor não inferior ao número de servidores no cluster.

<div id="distributed_ddl_entry_format_version">
  ## distributed\_ddl\_entry\_format\_version
</div>

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

Versão de compatibilidade das consultas de DDL distribuído (ON CLUSTER)

Valor padrão no Cloud: `6`.

<div id="distributed_ddl_output_mode">
  ## distributed\_ddl\_output\_mode
</div>

<SettingsInfoBlock type="DistributedDDLOutputMode" default_value="throw" />

Define o formato do resultado da consulta DDL distribuída.

Valores possíveis:

* `throw` — Retorna o conjunto de resultados com o status de execução da consulta para todos os hosts em que a consulta foi concluída. Se a consulta falhar em alguns hosts, a primeira exceção será relançada. Se a consulta ainda não tiver sido concluída em alguns hosts e [distributed\_ddl\_task\_timeout](#distributed_ddl_task_timeout) for excedido, a exceção `TIMEOUT_EXCEEDED` será lançada.
* `none` — É semelhante a `throw`, mas a consulta DDL distribuída não retorna conjunto de resultados.
* `null_status_on_timeout` — Retorna `NULL` como status de execução em algumas linhas do conjunto de resultados, em vez de lançar `TIMEOUT_EXCEEDED`, se a consulta ainda não tiver sido concluída nos hosts correspondentes.
* `never_throw` — Não lança `TIMEOUT_EXCEEDED` nem relança exceções se a consulta falhar em alguns hosts.
* `none_only_active` - semelhante a `none`, mas não espera por réplicas inativas do banco de dados `Replicated`. Observação: com esse modo, é impossível saber que a consulta não foi executada em alguma réplica e será executada em segundo plano.
* `null_status_on_timeout_only_active` — semelhante a `null_status_on_timeout`, mas não espera por réplicas inativas do banco de dados `Replicated`
* `throw_only_active` — semelhante a `throw`, mas não espera por réplicas inativas do banco de dados `Replicated`

Valor padrão no Cloud: `none_only_active`.

<div id="distributed_ddl_task_timeout">
  ## distributed\_ddl\_task\_timeout
</div>

<SettingsInfoBlock type="Int64" default_value="180" />

Define o tempo limite para respostas a consultas DDL de todos os hosts do cluster. Se uma solicitação DDL não tiver sido executada em todos os hosts, a resposta conterá um erro de timeout e a solicitação será executada em modo assíncrono. Um valor negativo significa infinito.

Valores possíveis:

* Inteiro positivo.
* 0 — Modo assíncrono.
* Inteiro negativo — timeout infinito.

<div id="distributed_foreground_insert">
  ## distributed\_foreground\_insert
</div>

**Aliases**: `insert_distributed_sync`

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

Habilita ou desabilita a inserção síncrona de dados em uma tabela [Distributed](/pt-BR/reference/engines/table-engines/special/distributed).

Por padrão, ao inserir dados em uma tabela `Distributed`, o servidor ClickHouse envia os dados para os nós do cluster em segundo plano. Quando `distributed_foreground_insert=1`, os dados são processados de forma síncrona, e a operação `INSERT` só é concluída depois que todos os dados são salvos em todos os shards (pelo menos uma réplica para cada shard se `internal_replication` for true).

Valores possíveis:

* `0` — Os dados são inseridos em segundo plano.
* `1` — Os dados são inseridos em modo síncrono.

Valor padrão no Cloud: `1`.

**Veja também**

* [Motor de tabela Distributed](/pt-BR/reference/engines/table-engines/special/distributed)
* [Gerenciamento de tabelas distribuídas](/pt-BR/reference/statements/system#managing-distributed-tables)

<div id="distributed_group_by_no_merge">
  ## distributed\_group\_by\_no\_merge
</div>

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

Não mescla estados de agregação de diferentes servidores no processamento distribuído de consultas; você pode usar essa opção quando tiver certeza de que há chaves diferentes em shards diferentes.

Valores possíveis:

* `0` — Desabilitado (o processamento final da consulta é feito no nó iniciador).
* `1` - Não mescla estados de agregação de diferentes servidores no processamento distribuído de consultas (a consulta é processada completamente no shard, e o iniciador apenas atua como proxy dos dados); pode ser usado quando houver certeza de que há chaves diferentes em shards diferentes.
* `2` - Igual a `1`, mas aplica `ORDER BY` e `LIMIT` no iniciador (isso não é possível quando a consulta é processada completamente no nó remoto, como em `distributed_group_by_no_merge=1`); pode ser usado para consultas com `ORDER BY` e/ou `LIMIT`.

**Exemplo**

```sql theme={null}
SELECT *
FROM remote('127.0.0.{2,3}', system.one)
GROUP BY dummy
LIMIT 1
SETTINGS distributed_group_by_no_merge = 1
FORMAT PrettyCompactMonoBlock

┌─dummy─┐
│     0 │
│     0 │
└───────┘
```

```sql theme={null}
SELECT *
FROM remote('127.0.0.{2,3}', system.one)
GROUP BY dummy
LIMIT 1
SETTINGS distributed_group_by_no_merge = 2
FORMAT PrettyCompactMonoBlock

┌─dummy─┐
│     0 │
└───────┘
```

<div id="distributed_index_analysis">
  ## distributed\_index\_analysis
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.1"},{"label": "0"},{"label": "Nova configuração experimental"}]}]} />

A análise de índices será distribuída entre as réplicas.
É benéfico para armazenamento compartilhado e grandes volumes de dados no cluster.
Usa as réplicas de cluster\_for\_parallel\_replicas.

**Veja também**

* [distributed\_index\_analysis\_for\_non\_shared\_merge\_tree](#distributed_index_analysis_for_non_shared_merge_tree)
* [distributed\_index\_analysis\_min\_parts\_to\_activate](/pt-BR/reference/settings/merge-tree-settings#distributed_index_analysis_min_parts_to_activate)
* [distributed\_index\_analysis\_min\_indexes\_bytes\_to\_activate](/pt-BR/reference/settings/merge-tree-settings#distributed_index_analysis_min_indexes_bytes_to_activate)

<div id="distributed_index_analysis_for_non_shared_merge_tree">
  ## distributed\_index\_analysis\_for\_non\_shared\_merge\_tree
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.1"},{"label": "0"},{"label": "Nova configuração"}]}]} />

Habilita a análise distribuída de índice mesmo para engines que não sejam SharedMergeTree (engine exclusivo do Cloud).

<div id="distributed_index_analysis_only_on_coordinator">
  ## distributed\_index\_analysis\_only\_on\_coordinator
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "0"},{"label": "Nova configuração."}]}]} />

Se habilitado, a análise distribuída de índices será executada apenas no coordenador.
Isso evita consultas geradas em O(N^2) quando o predicado contém subconsultas (por exemplo, `IN (SELECT ...)`),
porque, caso contrário, cada réplica seguidora acionaria de forma independente sua própria análise distribuída de índices,
mas torna a análise distribuída de índices menos eficiente se tabelas grandes forem usadas nas subconsultas.

<div id="distributed_insert_skip_read_only_replicas">
  ## distributed\_insert\_skip\_read\_only\_replicas
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "0"},{"label": "Se true, INSERT em Distributed ignorará réplicas somente leitura"}]}]} />

Permite ignorar réplicas somente leitura em consultas INSERT na Distributed.

Valores possíveis:

* 0 — INSERT ocorrerá normalmente; se for para uma réplica somente leitura, falhará
* 1 — O iniciador ignorará réplicas somente leitura antes de enviar dados para os shards.

<div id="distributed_plan_default_reader_bucket_count">
  ## distributed\_plan\_default\_reader\_bucket\_count
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "8"},{"label": "Nova configuração experimental."}]}]} />

Número padrão de tarefas para leitura paralela em uma consulta distribuída. As tarefas são distribuídas entre as réplicas.

<div id="distributed_plan_default_shuffle_join_bucket_count">
  ## distributed\_plan\_default\_shuffle\_join\_bucket\_count
</div>

<SettingsInfoBlock type="NonZeroUInt64" default_value="8" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "8"},{"label": "Nova configuração experimental."}]}]} />

Número padrão de buckets do distributed shuffle-hash-join.

<div id="distributed_plan_execute_locally">
  ## distributed\_plan\_execute\_locally
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "0"},{"label": "Nova configuração experimental."}]}]} />

Executa todas as tarefas de um plano de consulta distribuída localmente. Útil para testes e depuração.

<div id="distributed_plan_force_exchange_kind">
  ## distributed\_plan\_force\_exchange\_kind
</div>

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": ""},{"label": "Nova configuração experimental."}]}]} />

Força o tipo especificado de operadores Exchange entre os estágios de consultas distribuídas.

Possíveis valores:

* '' - não força nenhum tipo de operador Exchange, permite que o otimizador escolha,
* 'Persisted' - usa arquivos temporários no armazenamento de objetos,
* 'Streaming' - transmite os dados de Exchange pela rede.

<div id="distributed_plan_force_shuffle_aggregation">
  ## distributed\_plan\_force\_shuffle\_aggregation
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.7"},{"label": "0"},{"label": "Nova configuração experimental"}]}]} />

Usa a estratégia de agregação Shuffle em vez de PartialAggregation + Merge no plano de consulta distribuído.

<div id="distributed_plan_max_rows_to_broadcast">
  ## distributed\_plan\_max\_rows\_to\_broadcast
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.7"},{"label": "20000"},{"label": "Nova configuração experimental."}]}]} />

Número máximo de linhas para usar broadcast join em vez de shuffle join no plano de consulta distribuída.

<div id="distributed_plan_optimize_exchanges">
  ## distributed\_plan\_optimize\_exchanges
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "1"},{"label": "Nova configuração experimental."}]}]} />

Remove exchanges desnecessários no plano de consulta distribuída. Desative esta opção para depuração.

<div id="distributed_plan_prefer_replicas_over_workers">
  ## distributed\_plan\_prefer\_replicas\_over\_workers
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "0"},{"label": "Nova configuração para serializar o plano distribuído de consulta para execução nas réplicas"}]}]} />

Serializa o plano distribuído de consulta para execução nas réplicas.

<div id="distributed_product_mode">
  ## distributed\_product\_mode
</div>

<SettingsInfoBlock type="DistributedProductMode" default_value="deny" />

Altera o comportamento das [subconsultas distribuídas](/pt-BR/reference/statements/in).

O ClickHouse aplica essa configuração quando a consulta contém o produto de tabelas distribuídas, isto é, quando a consulta de uma tabela distribuída contém uma subconsulta não `GLOBAL` sobre uma tabela distribuída.

Restrições:

* Aplicado apenas a subconsultas `IN` e `JOIN`.
* Somente se a seção `FROM` usar uma tabela distribuída com mais de um shard.
* Somente se a subconsulta envolver uma tabela distribuída com mais de um shard.
* Não é usado para a função de tabela [remote](/pt-BR/reference/functions/table-functions/remote).

Valores possíveis:

* `deny` — Valor padrão. Proíbe o uso desses tipos de subconsultas (retorna a exceção "Double-distributed in/JOIN subqueries is denied").
* `local` — Substitui o banco de dados e a tabela na subconsulta pelos locais do servidor de destino (shard), mantendo o `IN`/`JOIN` normal.
* `global` — Substitui a consulta `IN`/`JOIN` por `GLOBAL IN`/`GLOBAL JOIN`.
* `allow` — Permite o uso desses tipos de subconsultas.

<div id="distributed_push_down_limit">
  ## distributed\_push\_down\_limit
</div>

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

Habilita ou desabilita a aplicação de [LIMIT](#limit) separadamente em cada shard.

Isso ajuda a evitar:

* O envio de linhas extras pela rede;
* O processamento, no iniciador, de linhas além do limite.

A partir da versão 21.9, não é mais possível obter resultados imprecisos, pois `distributed_push_down_limit` altera a execução da consulta somente se pelo menos uma das condições abaixo for atendida:

* [distributed\_group\_by\_no\_merge](#distributed_group_by_no_merge) > 0.
* A consulta **não tem** `GROUP BY`/`DISTINCT`/`LIMIT BY`, mas tem `ORDER BY`/`LIMIT`.
* A consulta **tem** `GROUP BY`/`DISTINCT`/`LIMIT BY` com `ORDER BY`/`LIMIT` e:
  * [optimize\_skip\_unused\_shards](#optimize_skip_unused_shards) está habilitado.
  * [optimize\_distributed\_group\_by\_sharding\_key](#optimize_distributed_group_by_sharding_key) está habilitado.

Valores possíveis:

* 0 — Desabilitado.
* 1 — Habilitado.

Veja também:

* [distributed\_group\_by\_no\_merge](#distributed_group_by_no_merge)
* [optimize\_skip\_unused\_shards](#optimize_skip_unused_shards)
* [optimize\_distributed\_group\_by\_sharding\_key](#optimize_distributed_group_by_sharding_key)

<div id="distributed_replica_error_cap">
  ## distributed\_replica\_error\_cap
</div>

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

* Tipo: inteiro sem sinal
* Valor padrão: 1000

A contagem de erros de cada réplica é limitada a esse valor, evitando que uma única réplica acumule erros em excesso.

Veja também:

* [load\_balancing](#load_balancing-round_robin)
* [Mecanismo de tabela Distributed](/pt-BR/reference/engines/table-engines/special/distributed)
* [distributed\_replica\_error\_half\_life](#distributed_replica_error_half_life)
* [distributed\_replica\_max\_ignored\_errors](#distributed_replica_max_ignored_errors)

<div id="distributed_replica_error_half_life">
  ## distributed\_replica\_error\_half\_life
</div>

<SettingsInfoBlock type="Segundos" default_value="60" />

* Tipo: segundos
* Valor padrão: 60 segundos

Controla a rapidez com que os erros em tabelas distribuídas são reduzidos a zero. Se uma réplica ficar indisponível por algum tempo, acumular 5 erros e distributed\_replica\_error\_half\_life estiver definido como 1 segundo, então a réplica será considerada normal 3 segundos após o último erro.

Veja também:

* [load\_balancing](#load_balancing-round_robin)
* [Motor de tabela Distributed](/pt-BR/reference/engines/table-engines/special/distributed)
* [distributed\_replica\_error\_cap](#distributed_replica_error_cap)
* [distributed\_replica\_max\_ignored\_errors](#distributed_replica_max_ignored_errors)

<div id="distributed_replica_max_ignored_errors">
  ## distributed\_replica\_max\_ignored\_errors
</div>

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

* Tipo: inteiro sem sinal
* Valor padrão: 0

O número de erros que serão ignorados durante a escolha de réplicas (de acordo com o algoritmo `load_balancing`).

Veja também:

* [load\_balancing](#load_balancing-round_robin)
* [mecanismo de tabela Distributed](/pt-BR/reference/engines/table-engines/special/distributed)
* [distributed\_replica\_error\_cap](#distributed_replica_error_cap)
* [distributed\_replica\_error\_half\_life](#distributed_replica_error_half_life)

<div id="do_not_merge_across_partitions_select_final">
  ## do\_not\_merge\_across\_partitions\_select\_final
</div>

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

Melhora as consultas FINAL ao evitar mesclagens entre partições diferentes.

Quando ativado, em consultas SELECT FINAL, as partes de partições diferentes não serão mescladas entre si. Em vez disso, a mesclagem ocorrerá apenas dentro de cada partição. Isso pode melhorar significativamente o desempenho das consultas ao trabalhar com tabelas particionadas.

<div id="dynamic_disk_allow_from_env">
  ## dynamic\_disk\_allow\_from\_env
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "0"},{"label": "Nova configuração para permitir substituições `from_env` na configuração dinâmica de disco (na função `disk()`). Desativada por padrão por segurança."}]}]} />

Permite usar substituições `from_env` na configuração dinâmica de disco (ou seja, nos argumentos da função `disk()`).
Desativada por padrão para impedir que usuários leiam variáveis de ambiente arbitrárias ao definir o armazenamento da tabela.

<div id="dynamic_disk_allow_from_zk">
  ## dynamic\_disk\_allow\_from\_zk
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "0"},{"label": "Nova configuração para permitir substituições `from_zk` na configuração de disco dinâmica (na função `disk()`). Desativada por padrão."}]}]} />

Permite usar substituições `from_zk` na configuração de disco dinâmica (ou seja, nos argumentos da função `disk()`).
Desativada por padrão.

<div id="dynamic_disk_allow_include">
  ## dynamic\_disk\_allow\_include
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "0"},{"label": "Nova configuração para permitir `include` na configuração de disco dinâmico (na função `disk()`). Desativada por padrão."}]}]} />

Permite usar `include` na configuração de disco dinâmico (ou seja, nos argumentos da função `disk()`).
Desativada por padrão.

<div id="dynamic_throw_on_type_mismatch">
  ## dynamic\_throw\_on\_type\_mismatch
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "1"},{"label": "Nova configuração para controlar o comportamento em caso de incompatibilidade de tipo na implementação padrão de Dynamic"}]}]} />

Ao aplicar uma função a uma coluna [Dynamic](/pt-BR/reference/data-types/dynamic) usando a implementação padrão,
controla o que acontece com as linhas cujo tipo real é incompatível com a função:

* `true` (padrão) — gera uma exceção.
* `false` — retorna `NULL` para essas linhas.

<div id="empty_result_for_aggregation_by_constant_keys_on_empty_set">
  ## empty\_result\_for\_aggregation\_by\_constant\_keys\_on\_empty\_set
</div>

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

Retorna um resultado vazio ao fazer agregação por chaves constantes em um conjunto vazio.

<div id="empty_result_for_aggregation_by_empty_set">
  ## empty\_result\_for\_aggregation\_by\_empty\_set
</div>

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

Retorna um resultado vazio ao fazer agregação sem chaves em conjunto vazio.

<div id="enable_adaptive_memory_spill_scheduler">
  ## enable\_adaptive\_memory\_spill\_scheduler
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.2"},{"label": "0"},{"label": "Nova configuração. Habilita o descarregamento adaptativo de dados da memória para armazenamento externo."}]}]} />

Aciona o processador para descarregar dados para armazenamento externo de forma adaptativa. No momento, há suporte a grace join.

<div id="enable_add_distinct_to_in_subqueries">
  ## enable\_add\_distinct\_to\_in\_subqueries
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "0"},{"label": "Nova configuração para reduzir o tamanho das tabelas temporárias transferidas em subconsultas distribuídas com `IN`."}]}]} />

Habilita `DISTINCT` em subconsultas `IN`. Esta é uma configuração de trade-off: ao habilitá-la, é possível reduzir bastante o tamanho das tabelas temporárias transferidas em subconsultas distribuídas com `IN` e acelerar significativamente a transferência de dados entre shards, garantindo que apenas valores únicos sejam enviados.
No entanto, habilitar essa configuração exige esforço adicional de merging em cada nó, pois a desduplicação (`DISTINCT`) precisa ser realizada. Use essa configuração quando a transferência de rede for um gargalo e o custo adicional de merging for aceitável.

<div id="enable_automatic_decision_for_merging_across_partitions_for_final">
  ## enable\_automatic\_decision\_for\_merging\_across\_partitions\_for\_final
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "1"},{"label": "Nova configuração"}]}]} />

Se estiver definida, o ClickHouse habilitará automaticamente essa otimização quando a expressão da chave de partição for determinística e todas as colunas usadas nela estiverem incluídas na chave primária.
Essa derivação automática garante que linhas com os mesmos valores de chave primária sempre pertençam à mesma partição, tornando seguro evitar merge entre partições.

<div id="enable_blob_storage_log">
  ## enable\_blob\_storage\_log
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.6"},{"label": "1"},{"label": "Registra informações sobre operações de blob storage na tabela system.blob_storage_log"}]}]} />

Registra informações sobre operações de blob storage na tabela system.blob\_storage\_log

<div id="enable_blob_storage_log_for_read_operations">
  ## enable\_blob\_storage\_log\_for\_read\_operations
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "0"},{"label": "Nova configuração para registrar operações de leitura do armazenamento de blobs em system.blob_storage_log"}]}]} />

Grava informações sobre operações de leitura do armazenamento de blobs na tabela system.blob\_storage\_log.
Também requer que `enable_blob_storage_log` esteja habilitado.

<div id="enable_early_constant_folding">
  ## enable\_early\_constant\_folding
</div>

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

Ativa a otimização de consultas na qual analisamos os resultados de funções e subconsultas e reescrevemos a consulta se houver constantes nesses resultados

<div id="enable_extended_results_for_datetime_functions">
  ## enable\_extended\_results\_for\_datetime\_functions
</div>

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

Habilita ou desabilita o retorno de resultados do tipo `Date32` com intervalo ampliado (em comparação com o tipo `Date`)
ou `DateTime64` com intervalo ampliado (em comparação com o tipo `DateTime`).

Valores possíveis:

* `0` — As funções retornam `Date` ou `DateTime` para todos os tipos de argumentos.
* `1` — As funções retornam `Date32` ou `DateTime64` para argumentos `Date32` ou `DateTime64` e `Date` ou `DateTime` nos demais casos.

A tabela abaixo mostra o comportamento dessa configuração para várias funções de data e hora.

| Função                    | `enable_extended_results_for_datetime_functions = 0`                                                      | `enable_extended_results_for_datetime_functions = 1`                                                                                 |
| ------------------------- | --------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
| `toStartOfYear`           | Retorna `Date` ou `DateTime`                                                                              | Retorna `Date`/`DateTime` para entradas `Date`/`DateTime`<br />Retorna `Date32`/`DateTime64` para entradas `Date32`/`DateTime64`     |
| `toStartOfISOYear`        | Retorna `Date` ou `DateTime`                                                                              | Retorna `Date`/`DateTime` para entradas `Date`/`DateTime`<br />Retorna `Date32`/`DateTime64` para entradas `Date32`/`DateTime64`     |
| `toStartOfQuarter`        | Retorna `Date` ou `DateTime`                                                                              | Retorna `Date`/`DateTime` para entradas `Date`/`DateTime`<br />Retorna `Date32`/`DateTime64` para entradas `Date32`/`DateTime64`     |
| `toStartOfMonth`          | Retorna `Date` ou `DateTime`                                                                              | Retorna `Date`/`DateTime` para entradas `Date`/`DateTime`<br />Retorna `Date32`/`DateTime64` para entradas `Date32`/`DateTime64`     |
| `toStartOfWeek`           | Retorna `Date` ou `DateTime`                                                                              | Retorna `Date`/`DateTime` para entradas `Date`/`DateTime`<br />Retorna `Date32`/`DateTime64` para entradas `Date32`/`DateTime64`     |
| `toLastDayOfWeek`         | Retorna `Date` ou `DateTime`                                                                              | Retorna `Date`/`DateTime` para entradas `Date`/`DateTime`<br />Retorna `Date32`/`DateTime64` para entradas `Date32`/`DateTime64`     |
| `toLastDayOfMonth`        | Retorna `Date` ou `DateTime`                                                                              | Retorna `Date`/`DateTime` para entradas `Date`/`DateTime`<br />Retorna `Date32`/`DateTime64` para entradas `Date32`/`DateTime64`     |
| `toMonday`                | Retorna `Date` ou `DateTime`                                                                              | Retorna `Date`/`DateTime` para entradas `Date`/`DateTime`<br />Retorna `Date32`/`DateTime64` para entradas `Date32`/`DateTime64`     |
| `toStartOfDay`            | Retorna `DateTime`<br />*Observação: resultados incorretos para valores fora do intervalo de 1970 a 2149* | Retorna `DateTime` para entradas `Date`/`DateTime`<br />Retorna `DateTime64` para entradas `Date32`/`DateTime64`                     |
| `toStartOfHour`           | Retorna `DateTime`<br />*Observação: resultados incorretos para valores fora do intervalo de 1970 a 2149* | Retorna `DateTime` para entradas `Date`/`DateTime`<br />Retorna `DateTime64` para entradas `Date32`/`DateTime64`                     |
| `toStartOfFifteenMinutes` | Retorna `DateTime`<br />*Observação: resultados incorretos para valores fora do intervalo de 1970 a 2149* | Retorna `DateTime` para valores de entrada `Date`/`DateTime`<br />Retorna `DateTime64` para valores de entrada `Date32`/`DateTime64` |
| `toStartOfTenMinutes`     | Retorna `DateTime`<br />*Observação: resultados incorretos para valores fora do intervalo de 1970-2149*   | Retorna `DateTime` para entradas `Date`/`DateTime`<br />Retorna `DateTime64` para entradas `Date32`/`DateTime64`                     |
| `toStartOfFiveMinutes`    | Retorna `DateTime`<br />*Observação: resultados incorretos para valores fora do intervalo de 1970 a 2149* | Retorna `DateTime` para valores de entrada `Date`/`DateTime`<br />Retorna `DateTime64` para valores de entrada `Date32`/`DateTime64` |
| `toStartOfMinute`         | Retorna `DateTime`<br />*Observação: resultados incorretos para valores fora do intervalo de 1970 a 2149* | Retorna `DateTime` para valores de entrada `Date`/`DateTime`<br />Retorna `DateTime64` para valores de entrada `Date32`/`DateTime64` |
| `timeSlot`                | Retorna `DateTime`<br />*Observação: resultados incorretos para valores fora do intervalo de 1970-2149*   | Retorna `DateTime` para entradas `Date`/`DateTime`<br />Retorna `DateTime64` para entradas `Date32`/`DateTime64`                     |

<div id="enable_filesystem_cache">
  ## enable\_filesystem\_cache
</div>

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

Usa o cache para filesystem remoto. Esta configuração não ativa/desativa o cache para disks (isso deve ser feito via configuração do disk), mas permite ignorar o cache para algumas queries, se desejado

<div id="enable_filesystem_cache_log">
  ## enable\_filesystem\_cache\_log
</div>

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

Permite registrar o log do cache do sistema de arquivos para cada consulta

<div id="enable_filesystem_cache_on_write_operations">
  ## enable\_filesystem\_cache\_on\_write\_operations
</div>

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

Habilita ou desabilita o cache `write-through`. Se definido como `false`, o cache `write-through` é desabilitado para operações de gravação. Se definido como `true`, o cache `write-through` é habilitado desde que `cache_on_write_operations` esteja ativado na seção de configuração do disco de cache da configuração do servidor.
Consulte ["Usando cache local"](/pt-BR/concepts/features/configuration/server-config/storing-data#using-local-cache) para mais detalhes.

Valor padrão no Cloud: `1`.

<div id="enable_filesystem_read_prefetches_log">
  ## enable\_filesystem\_read\_prefetches\_log
</div>

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

Grava em system.filesystem prefetch\_log durante a consulta. Deve ser usado apenas para testes ou depuração; não é recomendado deixá-lo ativado por padrão

<div id="enable_full_text_index">
  ## enable\_full\_text\_index
</div>

**Aliases**: `allow_experimental_full_text_index`

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "1"},{"label": "O índice de texto agora está em GA"}]}, {"id": "row-2","items": [{"label": "25.12"},{"label": "0"},{"label": "O índice de texto passou para Beta."}]}]} />

Quando definido como true, permite usar o índice de texto.

<div id="enable_global_with_statement">
  ## enable\_global\_with\_statement
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "21.2"},{"label": "1"},{"label": "Propagar instruções WITH para consultas UNION e para todas as subconsultas por padrão"}]}]} />

Propagar instruções WITH para consultas UNION e para todas as subconsultas

<div id="enable_hdfs_pread">
  ## enable\_hdfs\_pread
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.4"},{"label": "1"},{"label": "Nova configuração."}]}]} />

Ativa ou desativa o `pread` para arquivos HDFS. Por padrão, `hdfsPread` é usado. Se estiver desativado, `hdfsRead` e `hdfsSeek` serão usados para ler arquivos HDFS.

<div id="enable_http_compression">
  ## enable\_http\_compression
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.10"},{"label": "1"},{"label": "Isso geralmente deve ser benéfico"}]}]} />

Habilita ou desabilita a compressão de dados na resposta a uma requisição HTTP.

Para mais informações, consulte a [descrição da interface HTTP](/pt-BR/concepts/features/interfaces/http).

Possible values:

* 0 — Desabilitado.
* 1 — Habilitado.

<div id="enable_job_stack_trace">
  ## enable\_job\_stack\_trace
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.6"},{"label": "0"},{"label": "A configuração foi desativada por padrão para evitar sobrecarga de desempenho."}]}, {"id": "row-2","items": [{"label": "24.11"},{"label": "0"},{"label": "Habilita a coleta de stack traces durante o agendamento do job. Desativada por padrão para evitar sobrecarga de desempenho."}]}]} />

Exibe o stack trace do criador do job quando o job resulta em uma exceção. Desativada por padrão para evitar sobrecarga de desempenho.

<div id="enable_join_fixed_hash_table_conversion">
  ## enable\_join\_fixed\_hash\_table\_conversion
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "1"},{"label": "Nova configuração para permitir a conversão da tabela hash em um array simples para junções quando a chave for um único inteiro com um pequeno intervalo de valores."}]}]} />

Permite converter a tabela hash em um array simples para junções quando a chave for um único inteiro com um pequeno intervalo de valores.

<div id="enable_join_runtime_filters">
  ## enable\_join\_runtime\_filters
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "1"},{"label": "Esta otimização foi habilitada"}]}, {"id": "row-2","items": [{"label": "25.10"},{"label": "0"},{"label": "Nova configuração"}]}]} />

Filtra o lado esquerdo usando o conjunto de chaves de JOIN coletadas do lado direito em tempo de execução.

<div id="enable_join_transitive_predicates">
  ## enable\_join\_transitive\_predicates
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "0"},{"label": "Nova configuração para inferir predicados transitivos de equi-join para otimização da ordem dos joins."}]}]} />

Infere predicados transitivos de equi-join a partir de condições de join existentes.
Por exemplo, com `A.x = B.x` e `B.x = C.x`, um predicado sintético `A.x = C.x`
é adicionado para que o otimizador da ordem dos joins possa considerar planos diretos (A JOIN C).

<div id="enable_lazy_columns_replication">
  ## enable\_lazy\_columns\_replication
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.11"},{"label": "1"},{"label": "Habilita a replicação sob demanda de colunas em JOIN e ARRAY JOIN por padrão"}]}, {"id": "row-2","items": [{"label": "25.10"},{"label": "0"},{"label": "Adiciona uma configuração para habilitar a replicação sob demanda de colunas em JOIN e ARRAY JOIN"}]}]} />

Habilita a replicação sob demanda de colunas em JOIN e ARRAY JOIN, permitindo evitar cópias desnecessárias das mesmas linhas várias vezes na memória.

<div id="enable_lightweight_delete">
  ## enable\_lightweight\_delete
</div>

**Aliases**: `allow_experimental_lightweight_delete`

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

Habilita mutações de exclusão leve com DELETE para tabelas MergeTree.

<div id="enable_lightweight_update">
  ## enable\_lightweight\_update
</div>

**Aliases**: `allow_experimental_lightweight_update`

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "1"},{"label": "As atualizações leves passaram para Beta. Foi adicionado um alias para a configuração 'allow_experimental_lightweight_update'."}]}]} />

Permite o uso de atualizações leves.

<div id="enable_materialized_cte">
  ## enable\_materialized\_cte
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": "0"},{"label": "Nova configuração"}]}]} />

Ativa expressões de tabela comuns materializadas; essa opção tem precedência sobre enable\_global\_with\_statement

<div id="enable_memory_bound_merging_of_aggregation_results">
  ## enable\_memory\_bound\_merging\_of\_aggregation\_results
</div>

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

Habilita a estratégia de mesclagem com limite de memória para agregação.

<div id="enable_multiple_prewhere_read_steps">
  ## enable\_multiple\_prewhere\_read\_steps
</div>

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

Mova mais condições de WHERE para PREWHERE e faça leituras do disco e a filtragem em várias etapas se houver várias condições combinadas com AND

<div id="enable_named_columns_in_function_tuple">
  ## enable\_named\_columns\_in\_function\_tuple
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.7"},{"label": "0"},{"label": "Gerar tuplas nomeadas na função tuple() quando todos os nomes forem exclusivos e puderem ser tratados como identificadores sem aspas."}]}, {"id": "row-2","items": [{"label": "24.10"},{"label": "0"},{"label": "Desabilitado até melhorias de usabilidade"}]}]} />

Gerar tuplas nomeadas na função tuple() quando todos os nomes forem exclusivos e puderem ser tratados como identificadores sem aspas.

<div id="enable_optimize_predicate_expression">
  ## enable\_optimize\_predicate\_expression
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "18.12.17"},{"label": "1"},{"label": "Otimiza predicados em subconsultas por padrão"}]}]} />

Ativa o pushdown de predicados em consultas `SELECT`.

O pushdown de predicados pode reduzir significativamente o tráfego de rede em consultas distribuídas.

Valores possíveis:

* 0 — Desativado.
* 1 — Ativado.

Uso

Considere as seguintes consultas:

1. `SELECT count() FROM test_table WHERE date = '2018-10-10'`
2. `SELECT count() FROM (SELECT * FROM test_table) WHERE date = '2018-10-10'`

Se `enable_optimize_predicate_expression = 1`, o tempo de execução dessas consultas será o mesmo, porque o ClickHouse aplica `WHERE` à subconsulta durante o processamento.

Se `enable_optimize_predicate_expression = 0`, o tempo de execução da segunda consulta será muito maior, porque a cláusula `WHERE` só é aplicada a todos os dados depois que a subconsulta é concluída.

<div id="enable_optimize_predicate_expression_to_final_subquery">
  ## enable\_optimize\_predicate\_expression\_to\_final\_subquery
</div>

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

Permite fazer push do predicado para a subconsulta FINAL.

<div id="enable_order_by_all">
  ## enable\_order\_by\_all
</div>

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

Ativa ou desativa a ordenação com a sintaxe `ORDER BY ALL`; consulte [ORDER BY](/pt-BR/reference/statements/select/order-by).

Valores possíveis:

* 0 — Desativa ORDER BY ALL.
* 1 — Ativa ORDER BY ALL.

**Exemplo**

Consulta:

```sql theme={null}
CREATE TABLE TAB(C1 Int, C2 Int, ALL Int) ENGINE=Memory();

INSERT INTO TAB VALUES (10, 20, 30), (20, 20, 10), (30, 10, 20);

SELECT * FROM TAB ORDER BY ALL; -- retorna um erro informando que ALL é ambíguo

SELECT * FROM TAB ORDER BY ALL SETTINGS enable_order_by_all = 0;
```

Resultado:

```text theme={null}
┌─C1─┬─C2─┬─ALL─┐
│ 20 │ 20 │  10 │
│ 30 │ 10 │  20 │
│ 10 │ 20 │  30 │
└────┴────┴─────┘
```

<div id="enable_parallel_blocks_marshalling">
  ## enable\_parallel\_blocks\_marshalling
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.6"},{"label": "true"},{"label": "Nova configuração"}]}]} />

Afeta apenas consultas distribuídas. Se estiver habilitada, os blocos serão (des)serializados e (des)comprimidos nas threads do pipeline (ou seja, com paralelismo maior que o padrão) antes/depois do envio ao iniciador.

<div id="enable_parsing_to_custom_serialization">
  ## enable\_parsing\_to\_custom\_serialization
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.10"},{"label": "1"},{"label": "Nova configuração"}]}]} />

Se true, os dados podem ser convertidos diretamente em colunas com serialização personalizada (por exemplo, Sparse), com base nas dicas de serialização obtidas da tabela.

<div id="enable_positional_arguments">
  ## enable\_positional\_arguments
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "22.7"},{"label": "1"},{"label": "Habilita o recurso de argumentos posicionais por padrão"}]}]} />

Habilita ou desabilita o suporte a argumentos posicionais nas instruções [GROUP BY](/pt-BR/reference/statements/select/group-by), [LIMIT BY](/pt-BR/reference/statements/select/limit-by) e [ORDER BY](/pt-BR/reference/statements/select/order-by).

Valores possíveis:

* 0 — Argumentos posicionais não são suportados.
* 1 — Argumentos posicionais são suportados: números de coluna podem ser usados no lugar de nomes de coluna.

**Exemplo**

Consulta:

```sql theme={null}
CREATE TABLE positional_arguments(one Int, two Int, three Int) ENGINE=Memory();

INSERT INTO positional_arguments VALUES (10, 20, 30), (20, 20, 10), (30, 10, 20);

SELECT * FROM positional_arguments ORDER BY 2,3;
```

Resultado:

```text theme={null}
┌─one─┬─two─┬─three─┐
│  30 │  10 │   20  │
│  20 │  20 │   10  │
│  10 │  20 │   30  │
└─────┴─────┴───────┘
```

<div id="enable_positional_arguments_for_projections">
  ## enable\_positional\_arguments\_for\_projections
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "0"},{"label": "Nova configuração para controlar argumentos posicionais em projeções."}]}, {"id": "row-2","items": [{"label": "25.11"},{"label": "0"},{"label": "Nova configuração para controlar argumentos posicionais em projeções."}]}, {"id": "row-3","items": [{"label": "25.10"},{"label": "0"},{"label": "Nova configuração para controlar argumentos posicionais em projeções."}]}]} />

Ativa ou desativa o suporte a argumentos posicionais em definições de PROJECTION. Veja também a configuração [enable\_positional\_arguments](#enable_positional_arguments).

<Note>
  Esta é uma configuração avançada, e você não deve alterá-la se estiver apenas começando a usar o ClickHouse.
</Note>

Valores possíveis:

* 0 — Argumentos posicionais não têm suporte.
* 1 — Argumentos posicionais têm suporte: números de colunas podem ser usados no lugar de nomes de colunas.

<div id="enable_producing_buckets_out_of_order_in_aggregation">
  ## enable\_producing\_buckets\_out\_of\_order\_in\_aggregation
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.9"},{"label": "1"},{"label": "Nova configuração"}]}]} />

Permite que a agregação com eficiência de memória (consulte `distributed_aggregation_memory_efficient`) produza buckets fora de ordem.
Isso pode melhorar o desempenho quando os tamanhos dos buckets de agregação são desiguais, permitindo que uma réplica envie buckets com IDs mais altos para o iniciador enquanto ainda processa alguns buckets pesados com IDs mais baixos.
A desvantagem é um uso de memória potencialmente maior.

<div id="enable_reads_from_query_cache">
  ## enable\_reads\_from\_query\_cache
</div>

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

Quando ativado, os resultados de consultas `SELECT` são obtidos do [cache de consultas](/pt-BR/concepts/features/performance/caches/query-cache).

Valores possíveis:

* 0 - Desabilitado
* 1 - Habilitado

<div id="enable_s3_requests_logging">
  ## enable\_s3\_requests\_logging
</div>

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

Ativa um logging bem detalhado das requisições ao S3. Recomendado apenas para depuração.

<div id="enable_scalar_subquery_optimization">
  ## enable\_scalar\_subquery\_optimization
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "19.18"},{"label": "1"},{"label": "Impede que subconsultas escalares (des)serializem valores escalares grandes e possivelmente evita a execução da mesma subconsulta mais de uma vez"}]}]} />

Se definido como true, impede que subconsultas escalares (des)serializem valores escalares grandes e possivelmente evita a execução da mesma subconsulta mais de uma vez.

<div id="enable_scopes_for_with_statement">
  ## enable\_scopes\_for\_with\_statement
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.7"},{"label": "1"},{"label": "Nova configuração para compatibilidade retroativa com o analyzer antigo."}]}, {"id": "row-2","items": [{"label": "25.6"},{"label": "1"},{"label": "Nova configuração para compatibilidade retroativa com o analyzer antigo."}]}, {"id": "row-3","items": [{"label": "25.5"},{"label": "1"},{"label": "Nova configuração para compatibilidade retroativa com o analyzer antigo."}]}, {"id": "row-4","items": [{"label": "25.4"},{"label": "1"},{"label": "Nova configuração para compatibilidade retroativa com o analyzer antigo."}]}]} />

Se desabilitada, as declarações em cláusulas WITH de nível pai terão o mesmo escopo que teriam se fossem declaradas no escopo atual.

Observe que esta é uma configuração de compatibilidade do analyzer para permitir a execução de algumas consultas inválidas que o analyzer antigo conseguia executar.

<div id="enable_shared_storage_snapshot_in_query">
  ## enable\_shared\_storage\_snapshot\_in\_query
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.6"},{"label": "0"},{"label": "Nova configuração para compartilhar o snapshot de armazenamento na consulta"}]}, {"id": "row-2","items": [{"label": "25.12"},{"label": "1"},{"label": "Habilita, por padrão, o compartilhamento do snapshot de armazenamento na consulta"}]}]} />

Se estiver habilitada, todas as subconsultas em uma única consulta compartilharão o mesmo StorageSnapshot para cada tabela.
Isso garante uma visão consistente dos dados em toda a consulta, mesmo que a mesma tabela seja acessada várias vezes.

Isso é necessário para consultas em que a consistência interna das partes de dados é importante. Exemplo:

```sql theme={null}
SELECT
    count()
FROM events
WHERE (_part, _part_offset) IN (
    SELECT _part, _part_offset
    FROM events
    WHERE user_id = 42
)
```

Sem esta configuração, as consultas externa e interna podem operar sobre snapshots de dados diferentes, levando a resultados incorretos.

<Note>
  Ao habilitar esta configuração, a otimização que remove dos snapshots as partes de dados desnecessárias após a conclusão da etapa de planejamento é desativada.
  Como resultado, consultas de longa duração podem manter partes obsoletas por toda a sua duração, atrasando a limpeza dessas partes e aumentando a pressão sobre o armazenamento.

  Atualmente, esta configuração se aplica apenas a tabelas da família MergeTree.
</Note>

Valores possíveis:

* 0 - Desabilitado
* 1 - Habilitado

<div id="enable_sharing_sets_for_mutations">
  ## enable\_sharing\_sets\_for\_mutations
</div>

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

Permite compartilhar objetos Set criados para subconsultas IN entre diferentes tarefas da mesma mutação. Isso reduz o uso de memória e o consumo de CPU

<div id="enable_software_prefetch_in_aggregation">
  ## enable\_software\_prefetch\_in\_aggregation
</div>

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

Habilita o uso de prefetch por software na agregaç

<div id="enable_software_prefetch_in_join">
  ## enable\_software\_prefetch\_in\_join
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "1"},{"label": "Ativa o uso de software prefetch na fase de sondagem do hash join."}]}]} />

Ativa o uso de software prefetch na fase de sondagem do hash join para mascarar a latência de acesso à memória em tabelas hash grandes.

<div id="enable_time_time64_type">
  ## enable\_time\_time64\_type
</div>

**Aliases**: `allow_experimental_time_time64_type`

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.6"},{"label": "0"},{"label": "Nova configuração. Permite usar os novos tipos de dados experimentais Time e Time64."}]}, {"id": "row-2","items": [{"label": "25.12"},{"label": "1"},{"label": "Ativa os tipos Time e Time64 por padrão"}]}]} />

Permite a criação dos tipos de dados [Time](/pt-BR/reference/data-types/time) e [Time64](/pt-BR/reference/data-types/time64).

<div id="enable_unaligned_array_join">
  ## enable\_unaligned\_array\_join
</div>

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

Permite ARRAY JOIN com vários arrays de tamanhos diferentes. Quando essa configuração está ativada, os arrays serão redimensionados para o mais longo.

<div id="enable_url_encoding">
  ## enable\_url\_encoding
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "0"},{"label": "Valor padrão da configuração existente alterado"}]}]} />

Permite habilitar/desabilitar a decodificação/codificação do caminho na URI em tabelas com o motor [URL](/pt-BR/reference/engines/table-engines/special/url).

Desabilitado por padrão.

<div id="enable_vertical_final">
  ## enable\_vertical\_final
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.6"},{"label": "1"},{"label": "Ativa o FINAL vertical por padrão novamente após a correção de um bug"}]}, {"id": "row-2","items": [{"label": "24.1"},{"label": "1"},{"label": "Usa o FINAL vertical por padrão"}]}]} />

Se estiver habilitado, remove linhas duplicadas durante o FINAL marcando as linhas como excluídas e filtrando-as posteriormente, em vez de mesclá-las

<div id="enable_writes_to_query_cache">
  ## enable\_writes\_to\_query\_cache
</div>

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

Quando ativado, os resultados de consultas `SELECT` são armazenados no [cache de consultas](/pt-BR/concepts/features/performance/caches/query-cache).

Valores possíveis:

* 0 - Desabilitado
* 1 - Habilitado

<div id="enforce_strict_identifier_format">
  ## enforce\_strict\_identifier\_format
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.10"},{"label": "0"},{"label": "Nova configuração."}]}]} />

Se habilitada, permite apenas identificadores que contenham caracteres alfanuméricos e underscores.

<div id="engine_file_allow_create_multiple_files">
  ## engine\_file\_allow\_create\_multiple\_files
</div>

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

Habilita ou desabilita a criação de um novo arquivo a cada insert em tabelas com o engine File se o format tiver o sufixo (`JSON`, `ORC`, `Parquet` etc.). Se estiver habilitado, a cada insert, um novo arquivo será criado com um nome seguindo este padrão:

`data.Parquet` -> `data.1.Parquet` -> `data.2.Parquet` etc.

Possible values:

* 0 — a consulta `INSERT` acrescenta novos dados ao final do arquivo.
* 1 — a consulta `INSERT` cria um novo arquivo.

<div id="engine_file_empty_if_not_exists">
  ## engine\_file\_empty\_if\_not\_exists
</div>

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

Permite selecionar dados de uma tabela do engine File sem que o arquivo exista.

Possíveis valores:

* 0 — `SELECT` lança uma exceção.
* 1 — `SELECT` retorna um resultado vazio.

<div id="engine_file_skip_empty_files">
  ## engine\_file\_skip\_empty\_files
</div>

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

Ativa ou desativa a omissão de arquivos vazios em tabelas com o motor [File](/pt-BR/reference/engines/table-engines/special/file).

Valores possíveis:

* 0 — `SELECT` gera uma exceção se o arquivo vazio não for compatível com o formato solicitado.
* 1 — `SELECT` retorna um resultado vazio para um arquivo vazio.

<div id="engine_file_truncate_on_insert">
  ## engine\_file\_truncate\_on\_insert
</div>

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

Ativa ou desativa o truncamento antes do insert em tabelas com o motor [File](/pt-BR/reference/engines/table-engines/special/file).

Valores possíveis:

* 0 — a consulta `INSERT` acrescenta novos dados ao final do arquivo.
* 1 — a consulta `INSERT` substitui o conteúdo existente do arquivo pelos novos dados.

<div id="engine_url_skip_empty_files">
  ## engine\_url\_skip\_empty\_files
</div>

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

Ativa ou desativa a opção de ignorar arquivos vazios em tabelas do mecanismo [URL](/pt-BR/reference/engines/table-engines/special/url).

Valores possíveis:

* 0 — `SELECT` gera uma exceção se o arquivo vazio não for compatível com o formato solicitado.
* 1 — `SELECT` retorna um resultado vazio para um arquivo vazio.

<div id="exact_rows_before_limit">
  ## exact\_rows\_before\_limit
</div>

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

Quando habilitada, o ClickHouse fornecerá o valor exato da estatística rows\_before\_limit\_at\_least, mas isso exige que os dados antes do limite sejam lidos por completo

<div id="except_default_mode">
  ## except\_default\_mode
</div>

<SettingsInfoBlock type="SetOperationMode" default_value="ALL" />

Configura o modo padrão na consulta EXCEPT. Valores possíveis: string vazia, 'ALL', 'DISTINCT'. Se estiver vazia, uma consulta sem modo gerará uma exceção.

<div id="exclude_materialize_skip_indexes_on_insert">
  ## exclude\_materialize\_skip\_indexes\_on\_insert
</div>

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.10"},{"label": ""},{"label": "Nova configuração."}]}]} />

Exclui os skip indexes especificados de serem criados e armazenados durante INSERTs. Os skip indexes excluídos ainda serão criados e armazenados [durante mesclagens](/pt-BR/reference/settings/merge-tree-settings#materialize_skip_indexes_on_merge) ou por uma
consulta [MATERIALIZE INDEX](/pt-BR/reference/statements/alter/skipping-index#materialize-index) explícita.

Não tem efeito se [materialize\_skip\_indexes\_on\_insert](#materialize_skip_indexes_on_insert) estiver definido como false.

Exemplo:

```sql theme={null}
CREATE TABLE tab
(
    a UInt64,
    b UInt64,
    INDEX idx_a a TYPE minmax,
    INDEX idx_b b TYPE set(3)
)
ENGINE = MergeTree ORDER BY tuple();

SET exclude_materialize_skip_indexes_on_insert='idx_a'; -- idx_a não será atualizado no insert
--SET exclude_materialize_skip_indexes_on_insert='idx_a, idx_b'; -- nenhum índice seria atualizado no insert

INSERT INTO tab SELECT number, number / 50 FROM numbers(100); -- apenas idx_b é atualizado

-- como é uma configuração de sessão, pode ser definida individualmente por consulta
INSERT INTO tab SELECT number, number / 50 FROM numbers(100, 100) SETTINGS exclude_materialize_skip_indexes_on_insert='idx_b';

ALTER TABLE tab MATERIALIZE INDEX idx_a; -- esta consulta pode ser usada para materializar o índice explicitamente

SET exclude_materialize_skip_indexes_on_insert = DEFAULT; -- redefine a configuração para o valor padrão
```

<div id="execute_exists_as_scalar_subquery">
  ## execute\_exists\_as\_scalar\_subquery
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "1"},{"label": "Nova configuração"}]}]} />

Executa subconsultas EXISTS não correlacionadas como subconsultas escalares. Assim como nas subconsultas escalares, o cache é usado, e o constant folding é aplicado ao resultado.

Valor padrão no Cloud: `0`.

<div id="external_storage_connect_timeout_sec">
  ## external\_storage\_connect\_timeout\_sec
</div>

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

Timeout de conexão em segundos. No momento, compatível apenas com MySQL

<div id="external_storage_max_read_bytes">
  ## external\_storage\_max\_read\_bytes
</div>

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

Limita o número máximo de bytes quando uma tabela com engine externo deve descarregar os dados do histórico. No momento, há suporte apenas para MySQL table engine, database engine e Dicionário. Se for igual a 0, essa configuração é desabilitada

<div id="external_storage_max_read_rows">
  ## external\_storage\_max\_read\_rows
</div>

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

Limita o número máximo de linhas quando uma tabela com engine externo deve gravar dados do histórico. No momento, há suporte apenas para MySQL table engine, database engine e Dicionário. Se for igual a 0, esta configuração ficará desabilitada

<div id="external_storage_rw_timeout_sec">
  ## external\_storage\_rw\_timeout\_sec
</div>

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

Tempo limite de leitura/gravação em segundos. No momento, compatível apenas com MySQL

<div id="external_table_functions_use_nulls">
  ## external\_table\_functions\_use\_nulls
</div>

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

Define como as funções de tabela [mysql](/pt-BR/reference/functions/table-functions/mysql), [postgresql](/pt-BR/reference/functions/table-functions/postgresql) e [odbc](/pt-BR/reference/functions/table-functions/odbc) utilizam colunas Nullable.

Possíveis valores:

* 0 — A função de tabela usa explicitamente colunas Nullable.
* 1 — A função de tabela usa implicitamente colunas Nullable.

**Uso**

Se a configuração estiver definida como `0`, a função de tabela não cria colunas Nullable e insere valores padrão em vez de NULL. Isso também se aplica a valores NULL dentro de arrays.

<div id="external_table_strict_query">
  ## external\_table\_strict\_query
</div>

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

Se estiver definido como true, a transformação de expression em filter local será proibida para consultas a external tables.

<div id="extract_key_value_pairs_max_pairs_per_row">
  ## extract\_key\_value\_pairs\_max\_pairs\_per\_row
</div>

**Aliases**: `extract_kvp_max_pairs_per_row`

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.2"},{"label": "0"},{"label": "Número máximo de pares que podem ser produzidos pela função `extractKeyValuePairs`. Serve como salvaguarda para evitar o consumo excessivo de memória."}]}]} />

Número máximo de pares que podem ser produzidos pela função `extractKeyValuePairs`. Serve como salvaguarda para evitar o consumo excessivo de memória.

<div id="extremes">
  ## extremes
</div>

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

Define se os valores extremos (os mínimos e máximos nas colunas do resultado de uma consulta) devem ser contabilizados. Aceita 0 ou 1. O padrão é 0 (desabilitado).
Para mais informações, consulte a seção "Valores extremos".

<div id="fallback_to_stale_replicas_for_distributed_queries">
  ## fallback\_to\_stale\_replicas\_for\_distributed\_queries
</div>

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

Direciona a consulta para uma réplica desatualizada se dados atualizados não estiverem disponíveis. Veja [Replicação](/pt-BR/reference/engines/table-engines/mergetree-family/replication).

O ClickHouse seleciona a réplica mais adequada entre as réplicas desatualizadas da tabela.

Usado ao executar `SELECT` em uma tabela distribuída que aponta para tabelas replicadas.

Por padrão, 1 (habilitado).

<div id="filesystem_cache_allow_background_download">
  ## filesystem\_cache\_allow\_background\_download
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.11"},{"label": "1"},{"label": "Nova configuração para controlar downloads em segundo plano no cache do sistema de arquivos por consulta."}]}]} />

Permite que o cache do sistema de arquivos enfileire downloads em segundo plano para dados lidos do armazenamento remoto. Desative esta opção para manter os downloads em primeiro plano para a consulta/sessão atual.

<div id="filesystem_cache_boundary_alignment">
  ## filesystem\_cache\_boundary\_alignment
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.11"},{"label": "0"},{"label": "Nova configuração"}]}]} />

Alinhamento dos limites do cache do sistema de arquivos. Essa configuração se aplica apenas a leituras que não são de disco (por exemplo, ao cache de motores de tabela remotos / funções de tabela, mas não à configuração de armazenamento de tabelas MergeTree). O valor 0 significa que não há alinhamento.

<div id="filesystem_cache_enable_background_download_during_fetch">
  ## filesystem\_cache\_enable\_background\_download\_during\_fetch
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.11"},{"label": "1"},{"label": "Nova configuração"}]}]} />

Só tem efeito no ClickHouse Cloud. Tempo de espera para adquirir o bloqueio do cache para reservar espaço no cache do sistema de arquivos

<div id="filesystem_cache_enable_background_download_for_metadata_files_in_packed_storage">
  ## filesystem\_cache\_enable\_background\_download\_for\_metadata\_files\_in\_packed\_storage
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.11"},{"label": "1"},{"label": "Nova configuração"}]}]} />

Só tem efeito no ClickHouse Cloud. Tempo de espera para obter o bloqueio do cache para reservar espaço no cache do sistema de arquivos

<div id="filesystem_cache_max_download_size">
  ## filesystem\_cache\_max\_download\_size
</div>

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

Tamanho máximo do cache de sistema de arquivos remoto que pode ser baixado por uma única consulta

<div id="filesystem_cache_name">
  ## filesystem\_cache\_name
</div>

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.10"},{"label": ""},{"label": "Nome do cache do sistema de arquivos a ser usado em motores de tabela sem estado ou lagos de dados"}]}]} />

Nome do cache do sistema de arquivos a ser usado em motores de tabela sem estado ou lagos de dados

<div id="filesystem_cache_prefer_bigger_buffer_size">
  ## filesystem\_cache\_prefer\_bigger\_buffer\_size
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.11"},{"label": "1"},{"label": "Nova configuração"}]}]} />

Prefere um tamanho de buffer maior se o cache do sistema de arquivos estiver habilitado, para evitar a gravação de pequenos segmentos de arquivo, o que prejudica o desempenho do cache. Por outro lado, habilitar essa configuração pode aumentar o uso de memória.

<div id="filesystem_cache_reserve_space_wait_lock_timeout_milliseconds">
  ## filesystem\_cache\_reserve\_space\_wait\_lock\_timeout\_milliseconds
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "1000"},{"label": "Tempo de espera para adquirir o bloqueio do cache para reservar espaço no cache do sistema de arquivos"}]}]} />

Tempo de espera para adquirir o bloqueio do cache para reservar espaço no cache do sistema de arquivos

<div id="filesystem_cache_segments_batch_size">
  ## filesystem\_cache\_segments\_batch\_size
</div>

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

Limite para o tamanho de um único lote de segmentos de arquivo que um buffer de leitura pode solicitar ao cache. Um valor muito baixo levará a solicitações excessivas ao cache; um valor muito alto pode tornar mais lenta a remoção de entradas do cache

<div id="filesystem_cache_skip_download_if_exceeds_per_query_cache_write_limit">
  ## filesystem\_cache\_skip\_download\_if\_exceeds\_per\_query\_cache\_write\_limit
</div>

**Aliases**: `skip_download_if_exceeds_query_cache`

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.11"},{"label": "1"},{"label": "Renomeação da configuração skip_download_if_exceeds_query_cache_limit"}]}]} />

Ignora o download do sistema de arquivos remoto caso exceda o tamanho do cache de consultas

<div id="filesystem_prefetch_max_memory_usage">
  ## filesystem\_prefetch\_max\_memory\_usage
</div>

<SettingsInfoBlock type="NonZeroUInt64" default_value="1073741824" />

Uso máximo de memória para prefetches.

Valor padrão no Cloud: 10% da memória total.

<div id="filesystem_prefetch_step_bytes">
  ## filesystem\_prefetch\_step\_bytes
</div>

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

Passo de prefetch em bytes. Zero significa `auto` — o melhor passo de prefetch será estimado automaticamente, mas pode não ser o ideal em 100% dos casos. O valor real pode ser diferente por causa da configuração filesystem\_prefetch\_min\_bytes\_for\_single\_read\_task

<div id="filesystem_prefetch_step_marks">
  ## filesystem\_prefetch\_step\_marks
</div>

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

Passo de prefetch em marcas. Zero significa `auto` — aproximadamente o melhor passo de prefetch será determinado automaticamente, mas pode não ser 100% o ideal. O valor real pode ser diferente por causa da configuração filesystem\_prefetch\_min\_bytes\_for\_single\_read\_task

<div id="filesystem_prefetches_limit">
  ## filesystem\_prefetches\_limit
</div>

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

Número máximo de prefetches. Zero significa sem limite. A configuração `filesystem_prefetches_max_memory_usage` é mais recomendada se você quiser limitar o número de prefetches

<div id="final">
  ## final
</div>

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

Aplica automaticamente o modificador [FINAL](/pt-BR/reference/statements/select/from#final-modifier) a todas as tabelas de uma consulta nas quais [FINAL](/pt-BR/reference/statements/select/from#final-modifier) é aplicável, incluindo tabelas em JOIN, tabelas em subconsultas e
tabelas distribuídas.

Valores possíveis:

* 0 - desabilitado
* 1 - habilitado

Exemplo:

```sql theme={null}
CREATE TABLE test
(
    key Int64,
    some String
)
ENGINE = ReplacingMergeTree
ORDER BY key;

INSERT INTO test FORMAT Values (1, 'first');
INSERT INTO test FORMAT Values (1, 'second');

SELECT * FROM test;
┌─key─┬─some───┐
│   1 │ second │
└─────┴────────┘
┌─key─┬─some──┐
│   1 │ first │
└─────┴───────┘

SELECT * FROM test SETTINGS final = 1;
┌─key─┬─some───┐
│   1 │ second │
└─────┴────────┘

SET final = 1;
SELECT * FROM test;
┌─key─┬─some───┐
│   1 │ second │
└─────┴────────┘
```

<div id="finalize_projection_parts_synchronously">
  ## finalize\_projection\_parts\_synchronously
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "0"},{"label": "Nova configuração para finalizar partes de projeção de forma síncrona durante o INSERT, reduzindo o pico de uso de memória."}]}]} />

Quando ativada, as partes de projeção são finalizadas de forma síncrona durante o INSERT, reduzindo o pico de uso de memória, mas com menor paralelismo de upload no S3. Por padrão, o fluxo de saída de cada projeção é mantido ativo até que toda a parte (incluindo todas as projeções) seja finalizada, o que permite sobrepor uploads no S3, mas aumenta o pico de uso de memória proporcionalmente ao número de projeções. Essa configuração afeta apenas o fluxo de INSERT; merge e mutation já finalizam as projeções de forma síncrona.

<div id="flatten_nested">
  ## flatten\_nested
</div>

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

Define o formato dos dados de colunas [nested](/pt-BR/reference/data-types/nested-data-structures).

Valores possíveis:

* 1 — A coluna nested é desmembrada em arrays separados.
* 0 — A coluna nested permanece como um único array de tuplas.

**Uso**

Se a configuração estiver definida como `0`, é possível usar um nível arbitrário de aninhamento.

**Exemplos**

Consulta:

```sql theme={null}
SET flatten_nested = 1;
CREATE TABLE t_nest (`n` Nested(a UInt32, b UInt32)) ENGINE = MergeTree ORDER BY tuple();

SHOW CREATE TABLE t_nest;
```

Resultado:

```text theme={null}
┌─statement───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ CREATE TABLE default.t_nest
(
    `n.a` Array(UInt32),
    `n.b` Array(UInt32)
)
ENGINE = MergeTree
ORDER BY tuple()
SETTINGS index_granularity = 8192 │
└─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
```

Consulta:

```sql theme={null}
SET flatten_nested = 0;

CREATE TABLE t_nest (`n` Nested(a UInt32, b UInt32)) ENGINE = MergeTree ORDER BY tuple();

SHOW CREATE TABLE t_nest;
```

Resultado:

```text theme={null}
┌─statement──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ CREATE TABLE default.t_nest
(
    `n` Nested(a UInt32, b UInt32)
)
ENGINE = MergeTree
ORDER BY tuple()
SETTINGS index_granularity = 8192 │
└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
```

<div id="force_aggregate_partitions_independently">
  ## force\_aggregate\_partitions\_independently
</div>

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

Força o uso da otimização quando ela for aplicável, mesmo que as heurísticas decidam não utilizá-la

<div id="force_aggregation_in_order">
  ## force\_aggregation\_in\_order
</div>

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

Essa configuração é usada pelo próprio servidor para dar suporte a consultas distribuídas. Não a altere manualmente, pois isso comprometerá o funcionamento normal. (Força o uso de agregação em ordem nos nós remotos durante a agregação distribuída).

<div id="force_data_skipping_indices">
  ## force\_data\_skipping\_indices
</div>

Desabilita a execução da consulta se os data skipping indices especificados não forem usados.

Considere o exemplo a seguir:

```sql theme={null}
CREATE TABLE data
(
    key Int,
    d1 Int,
    d1_null Nullable(Int),
    INDEX d1_idx d1 TYPE minmax GRANULARITY 1,
    INDEX d1_null_idx assumeNotNull(d1_null) TYPE minmax GRANULARITY 1
)
Engine=MergeTree()
ORDER BY key;

SELECT * FROM data_01515;
SELECT * FROM data_01515 SETTINGS force_data_skipping_indices=''; -- a consulta produzirá o erro CANNOT_PARSE_TEXT.
SELECT * FROM data_01515 SETTINGS force_data_skipping_indices='d1_idx'; -- a consulta produzirá o erro INDEX_NOT_USED.
SELECT * FROM data_01515 WHERE d1 = 0 SETTINGS force_data_skipping_indices='d1_idx'; -- Ok.
SELECT * FROM data_01515 WHERE d1 = 0 SETTINGS force_data_skipping_indices='`d1_idx`'; -- Ok (exemplo de parser completo).
SELECT * FROM data_01515 WHERE d1 = 0 SETTINGS force_data_skipping_indices='`d1_idx`, d1_null_idx'; -- a consulta produzirá o erro INDEX_NOT_USED, pois d1_null_idx não é utilizado.
SELECT * FROM data_01515 WHERE d1 = 0 AND assumeNotNull(d1_null) = 0 SETTINGS force_data_skipping_indices='`d1_idx`, d1_null_idx'; -- Ok.
```

<div id="force_grouping_standard_compatibility">
  ## force\_grouping\_standard\_compatibility
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "22.9"},{"label": "1"},{"label": "Faz a função GROUPING produzir a mesma saída do padrão SQL e de outros SGBDs"}]}]} />

Faz a função GROUPING retornar 1 quando o argumento não é usado como chave de agregação

<div id="force_index_by_date">
  ## force\_index\_by\_date
</div>

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

Desativa a execução da consulta se o índice não puder ser usado com base na data.

Funciona com tabelas da família MergeTree.

Se `force_index_by_date=1`, o ClickHouse verifica se a consulta tem uma condição na chave de data que possa ser usada para restringir os intervalos de dados. Se não houver uma condição adequada, ele gera uma exceção. No entanto, ele não verifica se a condição reduz a quantidade de dados a serem lidos. Por exemplo, a condição `Date != ' 2000-01-01 '` é aceitável mesmo quando corresponde a todos os dados da tabela (ou seja, a execução da consulta exige uma varredura completa). Para mais informações sobre intervalos de dados em tabelas da família MergeTree, consulte [MergeTree](/pt-BR/reference/engines/table-engines/mergetree-family/mergetree).

<div id="force_optimize_projection">
  ## force\_optimize\_projection
</div>

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

Ativa ou desativa o uso obrigatório de [projeções](/pt-BR/reference/engines/table-engines/mergetree-family/mergetree#projections) em consultas `SELECT`, quando a otimização de projeções estiver ativada (consulte a configuração [optimize\_use\_projections](#optimize_use_projections)).

Valores possíveis:

* 0 — A otimização de projeções não é obrigatória.
* 1 — A otimização de projeções é obrigatória.

<div id="force_optimize_projection_name">
  ## force\_optimize\_projection\_name
</div>

Se estiver definido como uma string não vazia, verifique se essa projeção é usada na consulta pelo menos uma vez.

Valores possíveis:

* string: nome da projeção usada em uma consulta

<div id="force_optimize_skip_unused_shards">
  ## force\_optimize\_skip\_unused\_shards
</div>

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

Habilita ou desabilita a execução da consulta se [optimize\_skip\_unused\_shards](#optimize_skip_unused_shards) estiver habilitado e não for possível ignorar os shards não utilizados. Se isso não for possível e a configuração estiver habilitada, uma exceção será lançada.

Valores possíveis:

* 0 — Desabilitado. O ClickHouse não lança uma exceção.
* 1 — Habilitado. A execução da consulta é desabilitada somente se a tabela tiver uma chave de sharding.
* 2 — Habilitado. A execução da consulta é desabilitada independentemente de a tabela ter uma chave de sharding definida.

<div id="force_optimize_skip_unused_shards_nesting">
  ## force\_optimize\_skip\_unused\_shards\_nesting
</div>

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

Controla como [`force_optimize_skip_unused_shards`](#force_optimize_skip_unused_shards) (portanto, ainda requer [`force_optimize_skip_unused_shards`](#force_optimize_skip_unused_shards)) depende do nível de aninhamento da consulta distribuída (caso em que você tenha uma tabela `Distributed` que consulta outra tabela `Distributed`).

Valores possíveis:

* 0 - Desabilitado, `force_optimize_skip_unused_shards` sempre funciona.
* 1 — Habilita `force_optimize_skip_unused_shards` apenas para o primeiro nível.
* 2 — Habilita `force_optimize_skip_unused_shards` até o segundo nível.

<div id="force_primary_key">
  ## force\_primary\_key
</div>

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

Impede a execução da consulta se não for possível usar a chave primária para indexação.

Funciona com tabelas da família MergeTree.

Se `force_primary_key=1`, o ClickHouse verifica se a consulta tem uma condição na chave primária que possa ser usada para restringir os intervalos de dados. Se não houver uma condição adequada, ele gera uma exceção. No entanto, não verifica se a condição reduz a quantidade de dados a serem lidos. Para mais informações sobre intervalos de dados em tabelas MergeTree, consulte [MergeTree](/pt-BR/reference/engines/table-engines/mergetree-family/mergetree).

<div id="force_remove_data_recursively_on_drop">
  ## force\_remove\_data\_recursively\_on\_drop
</div>

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

Remove os dados recursivamente na consulta DROP. Evita o erro 'Diretório não está vazio', mas pode remover silenciosamente dados desanexados

<div id="formatdatetime_e_with_space_padding">
  ## formatdatetime\_e\_with\_space\_padding
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "0"},{"label": "Compatibilidade aprimorada com o MySQL DATE_FORMAT/STR_TO_DATE"}]}]} />

O formatador '%e' na função 'formatDateTime' imprime dias de um único dígito com um espaço à esquerda, por exemplo, ' 2' em vez de '2'.

<div id="formatdatetime_f_prints_scale_number_of_digits">
  ## formatdatetime\_f\_prints\_scale\_number\_of\_digits
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "0"},{"label": "Nova configuração."}]}]} />

O formatador '%f' na função 'formatDateTime' imprime apenas a quantidade de dígitos correspondente à escala de um DateTime64, em vez de 6 dígitos fixos.

<div id="formatdatetime_f_prints_single_zero">
  ## formatdatetime\_f\_prints\_single\_zero
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "23.4"},{"label": "0"},{"label": "Melhor compatibilidade com MySQL DATE_FORMAT()/STR_TO_DATE()"}]}]} />

O especificador de formato '%f' na função 'formatDateTime' imprime um único zero em vez de seis zeros se o valor formatado não tiver frações de segundo.

<div id="formatdatetime_format_without_leading_zeros">
  ## formatdatetime\_format\_without\_leading\_zeros
</div>

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

Os formatadores '%c', '%l' e '%k' na função 'formatDateTime' exibem meses e horas sem zeros à esquerda.

<div id="formatdatetime_parsedatetime_m_is_month_name">
  ## formatdatetime\_parsedatetime\_m\_is\_month\_name
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "23.4"},{"label": "1"},{"label": "Compatibilidade aprimorada com MySQL DATE_FORMAT/STR_TO_DATE"}]}]} />

O especificador '%M' nas funções 'formatDateTime' e 'parseDateTime' exibe/interpreta o nome do mês em vez dos minutos.

<div id="fsync_metadata">
  ## fsync\_metadata
</div>

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

Habilita ou desabilita o [fsync](http://pubs.opengroup.org/onlinepubs/9699919799/functions/fsync.html) ao gravar arquivos `.sql`. Habilitado por padrão.

Faz sentido desabilitá-lo se o servidor tiver milhões de tabelas pequenas que são constantemente criadas e removidas.

<div id="function_date_trunc_return_type_behavior">
  ## function\_date\_trunc\_return\_type\_behavior
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.7"},{"label": "0"},{"label": "Adiciona uma nova configuração para preservar o comportamento anterior da função dateTrunc"}]}, {"id": "row-2","items": [{"label": "25.4"},{"label": "0"},{"label": "Altera o tipo de resultado da função dateTrunc para argumentos DateTime64/Date32 para DateTime64/Date32, independentemente da unidade de tempo, para obter o resultado correto para valores negativos"}]}]} />

Permite alterar o comportamento do tipo de retorno da função `dateTrunc`.

Valores possíveis:

* 0 - Quando o segundo argumento é `DateTime64/Date32`, o tipo de retorno será `DateTime64/Date32`, independentemente da unidade de tempo no primeiro argumento.
* 1 - Para `Date32`, o resultado é sempre `Date`. Para `DateTime64`, o resultado é `DateTime` para unidades de tempo `second` e superiores.

<div id="function_implementation">
  ## function\_implementation
</div>

Escolha a implementação da função para um destino ou uma variante específica (experimental). Se estiver em branco, habilite todas elas.

<div id="function_json_value_return_type_allow_complex">
  ## function\_json\_value\_return\_type\_allow\_complex
</div>

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

Controla se é permitido retornar tipos complexos (como: struct, array, map) para a função json\_value.

```sql theme={null}
SELECT JSON_VALUE('{"hello":{"world":"!"}}', '$.hello') settings function_json_value_return_type_allow_complex=true

┌─JSON_VALUE('{"hello":{"world":"!"}}', '$.hello')─┐
│ {"world":"!"}                                    │
└──────────────────────────────────────────────────┘

1 row in set. Elapsed: 0.001 sec.
```

Valores possíveis:

* true — Permite.
* false — Não permite.

<div id="function_json_value_return_type_allow_nullable">
  ## function\_json\_value\_return\_type\_allow\_nullable
</div>

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

Controla se é permitido retornar `NULL` quando o valor não existir na função JSON\_VALUE.

```sql theme={null}
SELECT JSON_VALUE('{"hello":"world"}', '$.b') settings function_json_value_return_type_allow_nullable=true;

┌─JSON_VALUE('{"hello":"world"}', '$.b')─┐
│ ᴺᵁᴸᴸ                                   │
└────────────────────────────────────────┘

1 row in set. Elapsed: 0.001 sec.
```

Valores possíveis:

* true — Permite.
* false — Não permite.

<div id="function_locate_has_mysql_compatible_argument_order">
  ## function\_locate\_has\_mysql\_compatible\_argument\_order
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "1"},{"label": "Aumenta a compatibilidade com a função locate do MySQL."}]}]} />

Controla a ordem dos argumentos da função [locate](/pt-BR/reference/functions/regular-functions/string-search-functions#locate).

Valores possíveis:

* 0 — A função `locate` aceita os argumentos `(haystack, needle[, start_pos])`.
* 1 — A função `locate` aceita os argumentos `(needle, haystack, [, start_pos])` (comportamento compatível com MySQL)

<div id="function_range_max_elements_in_block">
  ## function\_range\_max\_elements\_in\_block
</div>

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

Define o limite de segurança para o volume de dados gerado pela função [range](/pt-BR/reference/functions/regular-functions/array-functions#range). Especifica o número máximo de valores gerados pela função por bloco de dados (soma dos tamanhos dos arrays para cada linha em um bloco).

Valores possíveis:

* Inteiro positivo.

**Veja também**

* [`max_block_size`](#max_block_size)
* [`min_insert_block_size_rows`](#min_insert_block_size_rows)

<div id="function_sleep_max_microseconds_per_block">
  ## function\_sleep\_max\_microseconds\_per\_block
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "23.7"},{"label": "3000000"},{"label": "Nas versões anteriores, o tempo máximo de suspensão de 3 segundos era aplicado apenas a `sleep`, mas não à função `sleepEachRow`. Na nova versão, introduzimos esta configuração. Se você definir compatibilidade com as versões anteriores, desativaremos completamente esse limite."}]}]} />

Número máximo de microssegundos pelos quais a função `sleep` pode suspender a execução em cada bloco. Se um usuário a chamar com um valor maior, ela lança uma exceção. Este é um limite de segurança.

<div id="function_visible_width_behavior">
  ## function\_visible\_width\_behavior
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.1"},{"label": "1"},{"label": "Alteramos o comportamento padrão de `visibleWidth` para torná-lo mais preciso"}]}]} />

A versão do comportamento de `visibleWidth`. 0 - conta apenas o número de pontos de código; 1 - conta corretamente caracteres de largura zero e caracteres combináveis, conta caracteres de largura total como dois, estima a largura da tabulação e conta caracteres de exclusão.

<div id="functions_h3_default_if_invalid">
  ## functions\_h3\_default\_if\_invalid
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "0"},{"label": "Uma nova configuração de comportamento legado para permitir entradas inválidas em funções h3"}]}]} />

Se false, as funções h3, por exemplo h3CellAreaM2, geram uma exceção se a entrada for inválida. Se true, elas retornam 0 ou o valor padrão.

<div id="geo_distance_returns_float64_on_float64_arguments">
  ## geo\_distance\_returns\_float64\_on\_float64\_arguments
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "1"},{"label": "Aumenta a precisão padrão."}]}]} />

Se todos os quatro argumentos das funções `geoDistance`, `greatCircleDistance` e `greatCircleAngle` forem Float64, retorna Float64 e usa precisão dupla nos cálculos internos. Em versões anteriores do ClickHouse, as funções sempre retornavam Float32.

<div id="geotoh3_argument_order">
  ## geotoh3\_argument\_order
</div>

<SettingsInfoBlock type="GeoToH3ArgumentOrder" default_value="lat_lon" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "lat_lon"},{"label": "Nova configuração de comportamento legado para definir a ordem dos argumentos lon e lat"}]}]} />

A função 'geoToH3' aceita (lon, lat) se estiver configurada como 'lon\_lat' e (lat, lon) se estiver configurada como 'lat\_lon'.

<div id="glob_expansion_max_elements">
  ## glob\_expansion\_max\_elements
</div>

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

Número máximo de endereços permitidos (para armazenamentos externos, funções de tabela etc.).

<div id="grace_hash_join_initial_buckets">
  ## grace\_hash\_join\_initial\_buckets
</div>

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

Número inicial de buckets para grace hash join

<div id="grace_hash_join_max_buckets">
  ## grace\_hash\_join\_max\_buckets
</div>

<SettingsInfoBlock type="NonZeroUInt64" default_value="1024" />

Limite para o número de buckets do grace hash join

<div id="group_by_overflow_mode">
  ## group\_by\_overflow\_mode
</div>

<SettingsInfoBlock type="OverflowModeGroupBy" default_value="throw" />

Define o que acontece quando o número de chaves exclusivas para agregação excede o limite:

* `throw`: gera uma exceção
* `break`: interrompe a execução da consulta e retorna o resultado parcial
* `any`: continua a agregação para as chaves que entraram no conjunto, mas não adiciona novas chaves ao conjunto.

Usar o valor 'any' permite executar uma aproximação de GROUP BY. A qualidade dessa
aproximação depende da natureza estatística dos dados.

<div id="group_by_two_level_threshold">
  ## group\_by\_two\_level\_threshold
</div>

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

A partir de quantas chaves começa uma agregação em dois níveis. 0 - o limite não está definido.

<div id="group_by_two_level_threshold_bytes">
  ## group\_by\_two\_level\_threshold\_bytes
</div>

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

A partir de qual tamanho do estado de agregação, em bytes, uma agregação em dois níveis passa a ser usada. 0 — o limite não está definido. A agregação em dois níveis é usada quando pelo menos um dos limites é atingido.

<div id="group_by_use_nulls">
  ## group\_by\_use\_nulls
</div>

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

Altera a forma como a [cláusula GROUP BY](/pt-BR/reference/statements/select/group-by) trata os tipos das chaves de agregação.
Quando os especificadores `ROLLUP`, `CUBE` ou `GROUPING SETS` são usados, algumas chaves de agregação podem não ser usadas para produzir determinadas linhas de resultado.
As colunas dessas chaves são preenchidas com o valor padrão ou com `NULL` nas linhas correspondentes, dependendo desta configuração.

Valores possíveis:

* 0 — O valor padrão do tipo da chave de agregação é usado para preencher os valores ausentes.
* 1 — O ClickHouse executa `GROUP BY` da mesma forma que o padrão SQL define. Os tipos das chaves de agregação são convertidos para [Nullable](/pt-BR/reference/data-types/nullable). As colunas das chaves de agregação correspondentes são preenchidas com [NULL](/pt-BR/reference/syntax#null) nas linhas em que elas não foram usadas.

Veja também:

* [cláusula GROUP BY](/pt-BR/reference/statements/select/group-by)

<div id="h3togeo_lon_lat_result_order">
  ## h3togeo\_lon\_lat\_result\_order
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "0"},{"label": "Nova configuração"}]}]} />

A função 'h3ToGeo' retorna (lon, lat) se true; caso contrário, (lat, lon).

<div id="handshake_timeout_ms">
  ## handshake\_timeout\_ms
</div>

<SettingsInfoBlock type="Milissegundos" default_value="10000" />

Tempo limite, em milissegundos, para receber o pacote Hello das réplicas durante o handshake.

<div id="hdfs_create_new_file_on_insert">
  ## hdfs\_create\_new\_file\_on\_insert
</div>

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

Habilita ou desabilita a criação de um novo arquivo a cada insert em tabelas com o engine HDFS. Se estiver habilitada, a cada insert será criado um novo arquivo HDFS com um nome semelhante a este padrão:

inicial: `data.Parquet.gz` -> `data.1.Parquet.gz` -> `data.2.Parquet.gz`, etc.

Valores possíveis:

* 0 — a consulta `INSERT` acrescenta novos dados ao final do arquivo.
* 1 — a consulta `INSERT` cria um novo arquivo.

<div id="hdfs_ignore_file_doesnt_exist">
  ## hdfs\_ignore\_file\_doesnt\_exist
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.6"},{"label": "0"},{"label": "Permite retornar 0 linhas quando os arquivos solicitados não existem, em vez de gerar uma exceção no table engine HDFS"}]}]} />

Ignora a ausência do arquivo caso ele não exista ao ler determinadas chaves.

Valores possíveis:

* 1 — `SELECT` retorna um resultado vazio.
* 0 — `SELECT` gera uma exceção.

<div id="hdfs_replication">
  ## hdfs\_replication
</div>

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

O número real de réplicas pode ser especificado quando o arquivo HDFS é criado.

<div id="hdfs_skip_empty_files">
  ## hdfs\_skip\_empty\_files
</div>

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

Habilita ou desabilita ignorar arquivos vazios em tabelas com o mecanismo [HDFS](/pt-BR/reference/engines/table-engines/integrations/hdfs).

Valores possíveis:

* 0 — `SELECT` gera uma exceção se o arquivo vazio não for compatível com o formato solicitado.
* 1 — `SELECT` retorna um resultado vazio para um arquivo vazio.

<div id="hdfs_throw_on_zero_files_match">
  ## hdfs\_throw\_on\_zero\_files\_match
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.6"},{"label": "0"},{"label": "Permite gerar um erro quando a solicitação ListObjects não encontra nenhum arquivo no HDFS engine, em vez de retornar um resultado de consulta vazio"}]}]} />

Gera um erro se nenhum arquivo corresponder de acordo com as regras de expansão de glob.

Valores possíveis:

* 1 — `SELECT` gera uma exceção.
* 0 — `SELECT` retorna um resultado vazio.

<div id="hdfs_truncate_on_insert">
  ## hdfs\_truncate\_on\_insert
</div>

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

Ativa ou desativa o truncamento antes de um insert em tabelas com mecanismo HDFS. Se estiver desativado, será gerada uma exceção ao tentar fazer um insert se um arquivo no HDFS já existir.

Valores possíveis:

* 0 — a consulta `INSERT` acrescenta novos dados ao final do arquivo.
* 1 — a consulta `INSERT` substitui o conteúdo existente do arquivo pelos novos dados.

<div id="hedged_connection_timeout_ms">
  ## hedged\_connection\_timeout\_ms
</div>

<SettingsInfoBlock type="Milissegundos" default_value="50" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "23.4"},{"label": "50"},{"label": "Inicia uma nova conexão em requisições hedged após 50 ms, em vez de 100, para corresponder ao timeout de conexão anterior"}]}]} />

Timeout de conexão para estabelecer uma conexão com a réplica em requisições Hedged

<div id="highlight_max_matches_per_row">
  ## highlight\_max\_matches\_per\_row
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "10000"},{"label": "Nova configuração para limitar o número de correspondências de destaque por linha e evitar uso excessivo de memória."}]}]} />

Define o número máximo de correspondências de destaque por linha na função [highlight](/pt-BR/reference/functions/regular-functions/string-search-functions#highlight). Use essa configuração para evitar uso excessivo de memória ao destacar padrões altamente repetitivos em textos extensos.

Valores possíveis:

* Inteiro positivo.

<div id="hnsw_candidate_list_size_for_search">
  ## hnsw\_candidate\_list\_size\_for\_search
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.10"},{"label": "256"},{"label": "Nova configuração. Antes, o valor podia ser especificado opcionalmente em CREATE INDEX, e o padrão era 64."}]}]} />

O tamanho da lista dinâmica de candidatos durante a pesquisa no índice de similaridade vetorial, também conhecido como 'ef\_search'.

<div id="hsts_max_age">
  ## hsts\_max\_age
</div>

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

Tempo de expiração do HSTS. 0 significa desabilitar o HSTS.

<div id="http_connection_timeout">
  ## http\_connection\_timeout
</div>

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

Tempo limite de conexão HTTP (em segundos).

Valores possíveis:

* Qualquer número inteiro positivo.
* 0 - Desabilitado (tempo limite infinito).

<div id="http_headers_progress_interval_ms">
  ## http\_headers\_progress\_interval\_ms
</div>

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

Não envie os cabeçalhos HTTP X-ClickHouse-Progress com frequência maior que a do intervalo especificado.

<div id="http_headers_read_timeout">
  ## http\_headers\_read\_timeout
</div>

<SettingsInfoBlock type="Segundos" default_value="30" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "30"},{"label": "Nova configuração para limitar o tempo total de leitura dos cabeçalhos da requisição HTTP, protegendo contra ataques slowloris."}]}]} />

Tempo máximo, em segundos, para ler todos os cabeçalhos da requisição HTTP. Este é um limite total de tempo para toda a fase de processamento dos cabeçalhos, não um timeout por leitura. Protege contra ataques do tipo slowloris, em que um cliente envia dados de cabeçalho lentamente para manter as conexões abertas.

<div id="http_make_head_request">
  ## http\_make\_head\_request
</div>

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

A configuração `http_make_head_request` permite executar uma solicitação `HEAD` ao ler dados via HTTP para obter informações sobre o arquivo a ser lido, como seu tamanho. Como ela é habilitada por padrão, pode ser desejável desabilitar essa configuração nos casos em que o servidor não oferece suporte a solicitações `HEAD`.

<div id="http_max_field_name_size">
  ## http\_max\_field\_name\_size
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "4096"},{"label": "Reduz o valor padrão para limitar o uso de memória antes da autenticação pelas conexões HTTP."}]}]} />

Comprimento máximo do nome do campo no cabeçalho HTTP

<div id="http_max_field_value_size">
  ## http\_max\_field\_value\_size
</div>

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

Tamanho máximo do valor de um campo em um cabeçalho HTTP

<div id="http_max_fields">
  ## http\_max\_fields
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "1000"},{"label": "Reduz o valor padrão para limitar o uso de memória antes da autenticação em conexões HTTP."}]}]} />

Número máximo de campos no cabeçalho HTTP

<div id="http_max_multipart_form_data_size">
  ## http\_max\_multipart\_form\_data\_size
</div>

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

Limite do tamanho do conteúdo multipart/form-data. Essa configuração não pode ser interpretada a partir de parâmetros de URL e deve ser definida em um profile de usuário. Observe que o conteúdo é interpretado e as tabelas externas são criadas na memória antes do início da execução da consulta. Este é o único limite que tem efeito nessa etapa (os limites de uso máximo de memória e tempo máximo de execução não têm efeito durante a leitura de form data HTTP).

<div id="http_max_request_header_size">
  ## http\_max\_request\_header\_size
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "10485760"},{"label": "Nova configuração que limita o tamanho total dos cabeçalhos da requisição HTTP antes da autenticação."}]}]} />

Tamanho total máximo de todos os cabeçalhos da requisição HTTP (nomes e valores combinados), em bytes.

<div id="http_max_request_param_data_size">
  ## http\_max\_request\_param\_data\_size
</div>

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

Limite para o tamanho dos dados da requisição usados como parâmetro de consulta em requisições HTTP predefinidas.

<div id="http_max_tries">
  ## http\_max\_tries
</div>

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

Número máximo de tentativas de leitura via HTTP.

<div id="http_max_uri_size">
  ## http\_max\_uri\_size
</div>

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

Define o tamanho máximo da URI de uma requisição HTTP.

Valores possíveis:

* Inteiro positivo.

<div id="http_native_compression_disable_checksumming_on_decompress">
  ## http\_native\_compression\_disable\_checksumming\_on\_decompress
</div>

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

Ativa ou desativa a verificação de checksum ao descomprimir os dados de HTTP POST enviados pelo cliente. Usado apenas com o formato de compressão nativo do ClickHouse (não é usado com `gzip` ou `deflate`).

Para mais informações, leia a [descrição da interface HTTP](/pt-BR/concepts/features/interfaces/http).

Valores possíveis:

* 0 — Desativado.
* 1 — Ativado.

<div id="http_receive_timeout">
  ## http\_receive\_timeout
</div>

<SettingsInfoBlock type="Segundos" default_value="30" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "23.6"},{"label": "30"},{"label": "Consulte http_send_timeout."}]}]} />

Tempo limite para recebimento via HTTP (em segundos).

Valores possíveis:

* Qualquer número inteiro positivo.
* 0 - Desabilitado (tempo limite infinito).

<div id="http_response_buffer_size">
  ## http\_response\_buffer\_size
</div>

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

Número de bytes armazenados em buffer na memória do servidor antes de enviar uma resposta HTTP ao cliente ou gravar em disco (quando `http_wait_end_of_query` está habilitado).

<div id="http_response_headers">
  ## http\_response\_headers
</div>

<SettingsInfoBlock type="Map" default_value="{}" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.12"},{"label": ""},{"label": "Nova configuração."}]}]} />

Permite adicionar ou substituir cabeçalhos HTTP que o servidor retornará na resposta com um resultado de consulta bem-sucedido.
Isso afeta apenas a interface HTTP.

Se o cabeçalho já estiver definido por padrão, o valor fornecido o substituirá.
Se o cabeçalho não estiver definido por padrão, ele será adicionado à lista de cabeçalhos.
Os cabeçalhos definidos pelo servidor por padrão e não substituídos por esta configuração permanecerão.

A configuração permite definir um cabeçalho com um valor constante. Atualmente, não há como definir um cabeçalho com um valor calculado dinamicamente.

Nem os nomes nem os valores podem conter caracteres de controle ASCII.

Se você implementar uma aplicação de UI que permita aos usuários modificar configurações, mas ao mesmo tempo tome decisões com base nos cabeçalhos retornados, recomenda-se restringir esta configuração a readonly.

Exemplo: `SET http_response_headers = '{"Content-Type": "image/png"}'`

<div id="http_retry_initial_backoff_ms">
  ## http\_retry\_initial\_backoff\_ms
</div>

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

Milissegundos mínimos de backoff ao tentar ler novamente via http

<div id="http_retry_max_backoff_ms">
  ## http\_retry\_max\_backoff\_ms
</div>

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

Número máximo de milissegundos de backoff ao tentar novamente a leitura via http

<div id="http_send_timeout">
  ## http\_send\_timeout
</div>

<SettingsInfoBlock type="Segundos" default_value="30" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "23.6"},{"label": "30"},{"label": "3 minutos parece um tempo exageradamente longo. Observe que este é o tempo limite para uma única chamada de escrita na rede, não para toda a operação de upload."}]}]} />

Tempo limite de envio HTTP (em segundos).

Valores possíveis:

* Qualquer número inteiro positivo.
* 0 - Desabilitado (tempo limite infinito).

<Note>
  Isso se aplica apenas ao perfil padrão. É necessário reiniciar o servidor para que as alterações entrem em vigor.
</Note>

<div id="http_skip_not_found_url_for_globs">
  ## http\_skip\_not\_found\_url\_for\_globs
</div>

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

Ignora URLs de globs com erro HTTP\_NOT\_FOUND

<div id="http_wait_end_of_query">
  ## http\_wait\_end\_of\_query
</div>

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

Habilita a bufferização da resposta HTTP no servidor.

<div id="http_write_exception_in_output_format">
  ## http\_write\_exception\_in\_output\_format
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.11"},{"label": "0"},{"label": "Alterado para manter a consistência entre os formatos"}]}, {"id": "row-2","items": [{"label": "23.9"},{"label": "1"},{"label": "Gera JSON/XML válido em caso de exceção em HTTP streaming."}]}]} />

Escreve a exceção no formato de saída para gerar uma saída válida. Funciona com os formatos JSON e XML.

<div id="http_zlib_compression_level">
  ## http\_zlib\_compression\_level
</div>

<SettingsInfoBlock type="Int64" default_value="3" />

Define o nível de compressão dos dados na resposta a uma requisição HTTP se [enable\_http\_compression = 1](#enable_http_compression).

Valores possíveis: números de 1 a 9.

<div id="iceberg_compaction_data_cleanup">
  ## iceberg\_compaction\_data\_cleanup
</div>

<SettingsInfoBlock type="Segundos" default_value="10800" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "10800"},{"label": "Nova configuração"}]}]} />

O período após o qual os dados serão excluídos.

<div id="iceberg_compaction_delay_bias">
  ## iceberg\_compaction\_delay\_bias
</div>

<SettingsInfoBlock type="Segundos" default_value="10800" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "10800"},{"label": "Nova configuração"}]}]} />

Atraso mínimo entre 2 operações de compactação em segundo plano.

<div id="iceberg_data_file_size_lower_threshold_compaction">
  ## iceberg\_data\_file\_size\_lower\_threshold\_compaction
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "10485760"},{"label": "Nova configuração"}]}]} />

Limite para arquivos de dados na compactação no Iceberg.

<div id="iceberg_data_file_size_upper_threshold_compaction">
  ## iceberg\_data\_file\_size\_upper\_threshold\_compaction
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "10737418240"},{"label": "Nova configuração"}]}]} />

Limite superior para compactação de arquivos de dados no Iceberg.

<div id="iceberg_delete_data_on_drop">
  ## iceberg\_delete\_data\_on\_drop
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.9"},{"label": "0"},{"label": "Nova configuração"}]}]} />

Se todos os arquivos do Iceberg devem ser excluídos ao executar `drop`.

<div id="iceberg_expire_default_max_ref_age_ms">
  ## iceberg\_expire\_default\_max\_ref\_age\_ms
</div>

<SettingsInfoBlock type="Int64" default_value="9223372036854775807" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": "9223372036854775807"},{"label": "Nova configuração."}]}]} />

Valor padrão da propriedade da tabela Iceberg `history.expire.max-ref-age-ms`, usada por `expire_snapshots` quando essa propriedade não está presente.

<div id="iceberg_expire_default_max_snapshot_age_ms">
  ## iceberg\_expire\_default\_max\_snapshot\_age\_ms
</div>

<SettingsInfoBlock type="Int64" default_value="432000000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": "432000000"},{"label": "Nova configuração."}]}]} />

Valor padrão da propriedade de tabela Iceberg `history.expire.max-snapshot-age-ms` usado por `expire_snapshots` quando essa propriedade não está presente.

<div id="iceberg_expire_default_min_snapshots_to_keep">
  ## iceberg\_expire\_default\_min\_snapshots\_to\_keep
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": "1"},{"label": "Nova configuração."}]}]} />

Valor padrão da propriedade `history.expire.min-snapshots-to-keep` da tabela Iceberg, usado por `expire_snapshots` quando essa propriedade não está presente.

<div id="iceberg_insert_max_bytes_in_data_file">
  ## iceberg\_insert\_max\_bytes\_in\_data\_file
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.9"},{"label": "1073741824"},{"label": "Nova configuração."}]}]} />

Máximo de bytes do arquivo de dados Parquet do Iceberg em uma operação de inserção.

<div id="iceberg_insert_max_partitions">
  ## iceberg\_insert\_max\_partitions
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "100"},{"label": "Nova configuração."}]}]} />

Número máximo de partições permitido em uma única operação de inserção para o mecanismo de tabela Iceberg.

<div id="iceberg_insert_max_rows_in_data_file">
  ## iceberg\_insert\_max\_rows\_in\_data\_file
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.9"},{"label": "1000000"},{"label": "Nova configuração."}]}]} />

Número máximo de linhas no arquivo de dados Parquet do Iceberg durante a operação de inserção.

<div id="iceberg_max_number_datafiles_to_compact">
  ## iceberg\_max\_number\_datafiles\_to\_compact
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "1000"},{"label": "Nova configuração"}]}]} />

Limite de arquivos de dados para compactação no Iceberg.

<div id="iceberg_metadata_compression_method">
  ## iceberg\_metadata\_compression\_method
</div>

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": ""},{"label": "Nova configuração"}]}]} />

Método de compressão do arquivo `.metadata.json`.

<div id="iceberg_metadata_log_level">
  ## iceberg\_metadata\_log\_level
</div>

<SettingsInfoBlock type="IcebergMetadataLogLevel" default_value="none" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.9"},{"label": "none"},{"label": "Nova configuração."}]}]} />

Controla o nível de log de metadados para tabelas Iceberg em system.iceberg\_metadata\_log.
Em geral, essa configuração pode ser modificada para fins de depuração.

Valores possíveis:

* none - Sem log de metadados.
* metadata - Arquivo raiz metadata.json.
* manifest\_list\_metadata - Tudo o que está acima + metadados da manifest list avro correspondente a um snapshot.
* manifest\_list\_entry - Tudo o que está acima + entradas da manifest list avro.
* manifest\_file\_metadata - Tudo o que está acima + metadados dos manifest files avro percorridos.
* manifest\_file\_entry - Tudo o que está acima + entradas dos manifest files avro percorridos.

<div id="iceberg_metadata_staleness_ms">
  ## iceberg\_metadata\_staleness\_ms
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": "0"},{"label": "Nova configuração que permite usar a versão em cache dos metadados em operações READ para evitar a busca no catálogo remoto"}]}]} />

Se for diferente de zero, ignora a busca dos metadados do Iceberg no catálogo remoto se houver um snapshot de metadados em cache mais recente do que a janela de desatualização especificada. Zero significa sempre buscar a versão mais recente dos metadados no catálogo remoto. Definir esse valor como diferente de zero troca um pouco de desatualização por menor latência nas operações de leitura.

<div id="iceberg_orphan_files_older_than_seconds">
  ## iceberg\_orphan\_files\_older\_than\_seconds
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "259200"},{"label": "Nova configuração para o limite padrão de idade de arquivos órfãos"}]}]} />

Limite padrão de idade, em segundos, para a remoção de arquivos órfãos em tabelas Iceberg. Arquivos mais recentes do que esse limite não são considerados órfãos. É usado quando o argumento `older_than` é omitido da chamada do procedimento `remove_orphan_files()`. O padrão é 259200 (3 dias).

<div id="iceberg_snapshot_id">
  ## iceberg\_snapshot\_id
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.4"},{"label": "0"},{"label": "Nova configuração."}]}]} />

Consulta a tabela Iceberg usando o ID de snapshot especificado.

<div id="iceberg_timestamp_ms">
  ## iceberg\_timestamp\_ms
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.4"},{"label": "0"},{"label": "Nova configuração."}]}]} />

Consulte a tabela Iceberg usando o snapshot vigente em um timestamp específico.

<div id="idle_connection_timeout">
  ## idle\_connection\_timeout
</div>

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

Tempo limite para encerrar conexões TCP ociosas após o número especificado de segundos.

Valores possíveis:

* Inteiro positivo (0 - encerra imediatamente, após 0 segundos).

<div id="ignore_cold_parts_seconds">
  ## ignore\_cold\_parts\_seconds
</div>

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

Só tem efeito no ClickHouse Cloud. Exclui novas partes de dados de consultas SELECT até que sejam pré-aquecidas (consulte [cache\_populated\_by\_fetch](/pt-BR/reference/settings/merge-tree-settings#cache_populated_by_fetch)) ou atinjam essa quantidade de segundos. Somente para Replicated-/SharedMergeTree.

<div id="ignore_data_skipping_indices">
  ## ignore\_data\_skipping\_indices
</div>

Ignora os índices de data skipping especificados, caso sejam usados pela consulta.

Considere o exemplo a seguir:

```sql theme={null}
CREATE TABLE data
(
    key Int,
    x Int,
    y Int,
    INDEX x_idx x TYPE minmax GRANULARITY 1,
    INDEX y_idx y TYPE minmax GRANULARITY 1,
    INDEX xy_idx (x,y) TYPE minmax GRANULARITY 1
)
Engine=MergeTree()
ORDER BY key;

INSERT INTO data VALUES (1, 2, 3);

SELECT * FROM data;
SELECT * FROM data SETTINGS ignore_data_skipping_indices=''; -- a consulta produzirá o erro CANNOT_PARSE_TEXT.
SELECT * FROM data SETTINGS ignore_data_skipping_indices='x_idx'; -- Ok.
SELECT * FROM data SETTINGS ignore_data_skipping_indices='na_idx'; -- Ok.

SELECT * FROM data WHERE x = 1 AND y = 1 SETTINGS ignore_data_skipping_indices='xy_idx',force_data_skipping_indices='xy_idx' ; -- a consulta produzirá o erro INDEX_NOT_USED, pois xy_idx é explicitamente ignorado.
SELECT * FROM data WHERE x = 1 AND y = 2 SETTINGS ignore_data_skipping_indices='xy_idx';
```

A consulta sem ignorar nenhum índice:

```sql theme={null}
EXPLAIN indexes = 1 SELECT * FROM data WHERE x = 1 AND y = 2;

Expression ((Projection + Before ORDER BY))
  Filter (WHERE)
    ReadFromMergeTree (default.data)
    Indexes:
      PrimaryKey
        Condition: true
        Parts: 1/1
        Granules: 1/1
      Skip
        Name: x_idx
        Description: minmax GRANULARITY 1
        Parts: 0/1
        Granules: 0/1
      Skip
        Name: y_idx
        Description: minmax GRANULARITY 1
        Parts: 0/0
        Granules: 0/0
      Skip
        Name: xy_idx
        Description: minmax GRANULARITY 1
        Parts: 0/0
        Granules: 0/0
```

Desconsiderando o índice `xy_idx`:

```sql theme={null}
EXPLAIN indexes = 1 SELECT * FROM data WHERE x = 1 AND y = 2 SETTINGS ignore_data_skipping_indices='xy_idx';

Expression ((Projection + Before ORDER BY))
  Filter (WHERE)
    ReadFromMergeTree (default.data)
    Indexes:
      PrimaryKey
        Condition: true
        Parts: 1/1
        Granules: 1/1
      Skip
        Name: x_idx
        Description: minmax GRANULARITY 1
        Parts: 0/1
        Granules: 0/1
      Skip
        Name: y_idx
        Description: minmax GRANULARITY 1
        Parts: 0/0
        Granules: 0/0
```

Compatível com tabelas da família MergeTree.

<div id="ignore_drop_queries_probability">
  ## ignore\_drop\_queries\_probability
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.4"},{"label": "0"},{"label": "Permite ignorar consultas DROP no servidor com a probabilidade especificada, para fins de teste"}]}]} />

Se estiver habilitada, o servidor ignorará todas as consultas DROP TABLE com a probabilidade especificada (para os motores Memory e JOIN, substituirá DROP por TRUNCATE). Usado para fins de teste

<div id="ignore_format_null_for_explain">
  ## ignore\_format\_null\_for\_explain
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "1"},{"label": "FORMAT Null agora é ignorado por padrão em consultas EXPLAIN"}]}]} />

Se estiver habilitado, `FORMAT Null` será ignorado em consultas `EXPLAIN`, e o formato de saída padrão será usado no lugar dele.
Se estiver desabilitado, consultas `EXPLAIN` com `FORMAT Null` não produzirão saída (comportamento compatível com versões anteriores).

<div id="ignore_materialized_views_with_dropped_target_table">
  ## ignore\_materialized\_views\_with\_dropped\_target\_table
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.1"},{"label": "0"},{"label": "Adicionar nova configuração para permitir ignorar visões materializadas com tabela de destino removida"}]}]} />

Ignorar MVs com tabela de destino removida ao enviar para views

<div id="ignore_on_cluster_for_replicated_access_entities_queries">
  ## ignore\_on\_cluster\_for\_replicated\_access\_entities\_queries
</div>

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

Ignora a cláusula ON CLUSTER em queries de gerenciamento de entidades de acesso replicadas.

<div id="ignore_on_cluster_for_replicated_database">
  ## ignore\_on\_cluster\_for\_replicated\_database
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.1"},{"label": "0"},{"label": "Adiciona uma nova configuração para ignorar a cláusula ON CLUSTER em consultas DDL com um banco de dados Replicated."}]}]} />

Sempre ignora a cláusula ON CLUSTER em consultas DDL com bancos de dados Replicated.

<div id="ignore_on_cluster_for_replicated_named_collections_queries">
  ## ignore\_on\_cluster\_for\_replicated\_named\_collections\_queries
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.7"},{"label": "0"},{"label": "Ignorar a cláusula ON CLUSTER em consultas de gerenciamento de coleções nomeadas replicadas."}]}]} />

Ignorar a cláusula ON CLUSTER em consultas de gerenciamento de coleções nomeadas replicadas.

<div id="ignore_on_cluster_for_replicated_udf_queries">
  ## ignore\_on\_cluster\_for\_replicated\_udf\_queries
</div>

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

Ignora a cláusula ON CLUSTER em consultas de gerenciamento de UDF replicadas.

<div id="implicit_select">
  ## implicit\_select
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.10"},{"label": "0"},{"label": "Uma nova configuração."}]}]} />

Permite escrever consultas SELECT simples sem a palavra-chave SELECT no início, o que facilita o uso como calculadora; por exemplo, `1 + 2` se torna uma consulta válida.

No `clickhouse-local`, isso é habilitado por padrão e pode ser desabilitado explicitamente.

<div id="implicit_table_at_top_level">
  ## implicit\_table\_at\_top\_level
</div>

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": ""},{"label": "Uma nova configuração, usada no clickhouse-local"}]}]} />

Se não estiver vazio, consultas sem FROM no nível superior lerão desta tabela em vez de system.one.

Isso é usado no clickhouse-local para processar dados de entrada.
A configuração pode ser definida explicitamente por um usuário, mas não foi concebida para esse tipo de uso.

Subconsultas não são afetadas por essa configuração (nem subconsultas escalares, nem subconsultas em FROM ou IN).
SELECTs no nível superior em cadeias de UNION, INTERSECT e EXCEPT são tratados de maneira uniforme e afetados por essa configuração, independentemente do agrupamento entre parênteses.
Não está definido como essa configuração afeta views e consultas distribuídas.

A configuração aceita um nome de tabela (nesse caso, a tabela é resolvida a partir do banco de dados atual) ou um nome qualificado na forma 'database.table'.
Tanto o nome do banco de dados quanto o da tabela devem estar sem aspas — somente identificadores simples são permitidos.

<div id="implicit_transaction">
  ## implicit\_transaction
</div>

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

Se estiver habilitado e ainda não estiver em uma transação, envolve a consulta em uma transação completa (begin + commit ou rollback)

<div id="inject_random_order_for_select_without_order_by">
  ## inject\_random\_order\_for\_select\_without\_order\_by
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.10"},{"label": "0"},{"label": "Nova configuração"}]}]} />

Quando habilitada, injeta 'ORDER BY rand()' em consultas SELECT sem cláusula ORDER BY.
Aplica-se apenas à profundidade de subconsulta = 0. Subconsultas e INSERT INTO ... SELECT não são afetados.
Se a construção de nível superior for UNION, 'ORDER BY rand()' é injetado em cada filho de forma independente.
Útil apenas para testes e desenvolvimento (a ausência de ORDER BY é uma fonte de resultados de consulta não determinísticos).

<div id="insert_allow_materialized_columns">
  ## insert\_allow\_materialized\_columns
</div>

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

Se esta configuração estiver habilitada, permite colunas materializadas em INSERT.

<div id="insert_deduplicate">
  ## insert\_deduplicate
</div>

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

Ativa ou desativa a desduplicação de blocos de `INSERT` (para tabelas Replicated\*).

Possíveis valores:

* 0 — Desativado.
* 1 — Ativado.

Por padrão, os blocos inseridos em tabelas replicadas pela instrução `INSERT` são desduplicados (consulte [Replicação de dados](/pt-BR/reference/engines/table-engines/mergetree-family/replication)).
Em tabelas replicadas, por padrão, apenas os 100 blocos mais recentes de cada partição são desduplicados (consulte [replicated\_deduplication\_window](/pt-BR/reference/settings/merge-tree-settings#replicated_deduplication_window), [replicated\_deduplication\_window\_seconds](/pt-BR/reference/settings/merge-tree-settings#replicated_deduplication_window_seconds)).
Para tabelas não replicadas, consulte [non\_replicated\_deduplication\_window](/pt-BR/reference/settings/merge-tree-settings#non_replicated_deduplication_window).

<div id="insert_deduplication_token">
  ## insert\_deduplication\_token
</div>

Essa configuração permite que o usuário defina sua própria semântica de desduplicação em MergeTree/ReplicatedMergeTree.
Por exemplo, ao fornecer um valor único para a configuração em cada instrução INSERT,
o usuário pode evitar que os mesmos dados inseridos sejam desduplicados.

Valores possíveis:

* Qualquer string

`insert_deduplication_token` é usado para desduplicação *apenas* quando não está vazio.

Para tabelas replicadas, por padrão, apenas as 100 inserções mais recentes de cada partição são desduplicadas (consulte [replicated\_deduplication\_window](/pt-BR/reference/settings/merge-tree-settings#replicated_deduplication_window), [replicated\_deduplication\_window\_seconds](/pt-BR/reference/settings/merge-tree-settings#replicated_deduplication_window_seconds)).
Para tabelas não replicadas, consulte [non\_replicated\_deduplication\_window](/pt-BR/reference/settings/merge-tree-settings#non_replicated_deduplication_window).

<Note>
  `insert_deduplication_token` funciona no nível da partição (assim como o checksum `insert_deduplication`). Várias partições podem ter o mesmo `insert_deduplication_token`.
</Note>

Exemplo:

```sql theme={null}
CREATE TABLE test_table
( A Int64 )
ENGINE = MergeTree
ORDER BY A
SETTINGS non_replicated_deduplication_window = 100;

INSERT INTO test_table SETTINGS insert_deduplication_token = 'test' VALUES (1);

-- o próximo insert não será desduplicado porque insert_deduplication_token é diferente
INSERT INTO test_table SETTINGS insert_deduplication_token = 'test1' VALUES (1);

-- o próximo insert será desduplicado porque insert_deduplication_token
-- é igual a um dos anteriores
INSERT INTO test_table SETTINGS insert_deduplication_token = 'test' VALUES (2);

SELECT * FROM test_table

┌─A─┐
│ 1 │
└───┘
┌─A─┐
│ 1 │
└───┘
```

<div id="insert_keeper_fault_injection_probability">
  ## insert\_keeper\_fault\_injection\_probability
</div>

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

Probabilidade aproximada de falha de uma solicitação do Keeper durante uma operação de insert. O valor válido está no intervalo \[0.0f, 1.0f]

<div id="insert_keeper_fault_injection_seed">
  ## insert\_keeper\_fault\_injection\_seed
</div>

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

0 - semente aleatória; caso contrário, o valor da configuração

<div id="insert_keeper_max_retries">
  ## insert\_keeper\_max\_retries
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "23.2"},{"label": "20"},{"label": "Habilita reconexões ao Keeper em INSERT para melhorar a confiabilidade"}]}]} />

Esta configuração define o número máximo de novas tentativas para solicitações ao ClickHouse Keeper (ou ZooKeeper) durante inserções em MergeTree replicado. Só são consideradas para novas tentativas as solicitações ao Keeper que falharem devido a erro de rede, timeout de sessão do Keeper ou timeout da solicitação.

Valores possíveis:

* Inteiro positivo.
* 0 — As novas tentativas ficam desabilitadas

Valor padrão no Cloud: `20`.

As novas tentativas de solicitações ao Keeper são feitas após um determinado timeout. O timeout é controlado pelas seguintes configurações: `insert_keeper_retry_initial_backoff_ms`, `insert_keeper_retry_max_backoff_ms`.
A primeira nova tentativa é feita após o timeout definido por `insert_keeper_retry_initial_backoff_ms`. Os timeouts subsequentes serão calculados da seguinte forma:

```
timeout = min(insert_keeper_retry_max_backoff_ms, latest_timeout * 2)
```

Por exemplo, se `insert_keeper_retry_initial_backoff_ms=100`, `insert_keeper_retry_max_backoff_ms=10000` e `insert_keeper_max_retries=8`, então os timeouts serão `100, 200, 400, 800, 1600, 3200, 6400, 10000`.

Além da tolerância a falhas, as tentativas de repetição visam proporcionar uma melhor experiência ao usuário — elas permitem evitar o retorno de um erro durante a execução de INSERT se o Keeper for reiniciado, por exemplo, devido a uma atualização.

<div id="insert_keeper_retry_initial_backoff_ms">
  ## insert\_keeper\_retry\_initial\_backoff\_ms
</div>

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

Tempo de espera inicial (em milissegundos) para tentar novamente uma solicitação do Keeper com falha durante a execução da consulta INSERT

Valores possíveis:

* Inteiro positivo.
* 0 — Sem tempo limite

<div id="insert_keeper_retry_max_backoff_ms">
  ## insert\_keeper\_retry\_max\_backoff\_ms
</div>

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

Tempo limite máximo (em milissegundos) para tentar novamente uma solicitação do Keeper com falha durante a execução de uma consulta INSERT

Valores possíveis:

* Inteiro positivo.
* 0 — O tempo limite máximo não é limitado

<div id="insert_null_as_default">
  ## insert\_null\_as\_default
</div>

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

Habilita ou desabilita a inserção de [valores padrão](/pt-BR/reference/statements/create/table#default_values) no lugar de [NULL](/pt-BR/reference/syntax#null) em colunas com tipo de dado não [Nullable](/pt-BR/reference/data-types/nullable).
Se o tipo da coluna não for Nullable e essa configuração estiver desabilitada, a inserção de `NULL` causará uma exceção. Se o tipo da coluna for Nullable, os valores `NULL` serão inseridos como estão, independentemente dessa configuração.

Essa configuração se aplica a consultas [INSERT ... SELECT](/pt-BR/reference/statements/insert-into#inserting-the-results-of-select). Observe que subconsultas `SELECT` podem ser concatenadas com a cláusula `UNION ALL`.

Valores possíveis:

* 0 — Inserir `NULL` em uma coluna não Nullable causa uma exceção.
* 1 — O valor padrão da coluna é inserido no lugar de `NULL`.

<div id="insert_quorum">
  ## insert\_quorum
</div>

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

<Note>
  Esta configuração não se aplica ao SharedMergeTree; consulte [consistência do SharedMergeTree](/pt-BR/products/cloud/features/infrastructure/shared-merge-tree#consistency) para mais informações.
</Note>

Habilita gravações com quorum.

* Se `insert_quorum < 2`, as gravações com quorum ficam desabilitadas.
* Se `insert_quorum >= 2`, as gravações com quorum ficam habilitadas.
* Se `insert_quorum = 'auto'`, use o número da maioria (`number_of_replicas / 2 + 1`) como quorum.

Gravações com quorum

`INSERT` só é bem-sucedido quando o ClickHouse consegue gravar corretamente os dados em `insert_quorum` réplicas dentro de `insert_quorum_timeout`. Se, por qualquer motivo, o número de réplicas com gravações bem-sucedidas não atingir `insert_quorum`, a gravação será considerada malsucedida, e o ClickHouse excluirá o bloco inserido de todas as réplicas em que os dados já tiverem sido gravados.

Quando `insert_quorum_parallel` está desabilitado, todas as réplicas do quorum são consistentes, ou seja, contêm dados de todas as consultas `INSERT` anteriores (a sequência de `INSERT` é linearizada). Ao ler dados gravados com `insert_quorum` enquanto `insert_quorum_parallel` está desabilitado, você pode ativar a consistência sequencial para consultas `SELECT` usando [select\_sequential\_consistency](#select_sequential_consistency).

O ClickHouse gera uma exceção:

* Se o número de réplicas disponíveis no momento da consulta for menor que `insert_quorum`.
* Quando `insert_quorum_parallel` está desabilitado e é feita uma tentativa de gravar dados enquanto o bloco anterior ainda não foi inserido em `insert_quorum` réplicas. Essa situação pode ocorrer se o usuário tentar executar outra consulta `INSERT` na mesma tabela antes de a anterior com `insert_quorum` ser concluída.

Veja também:

* [insert\_quorum\_timeout](#insert_quorum_timeout)
* [insert\_quorum\_parallel](#insert_quorum_parallel)
* [select\_sequential\_consistency](#select_sequential_consistency)

<div id="insert_quorum_parallel">
  ## insert\_quorum\_parallel
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "21.1"},{"label": "1"},{"label": "Usar inserts com quorum paralelos por padrão. É significativamente mais conveniente do que usar inserts com quorum sequenciais"}]}]} />

<Note>
  Esta configuração não se aplica ao SharedMergeTree; veja [SharedMergeTree consistency](/pt-BR/products/cloud/features/infrastructure/shared-merge-tree#consistency) para mais informações.
</Note>

Habilita ou desabilita o paralelismo para consultas `INSERT` com quorum. Se estiver habilitado, consultas `INSERT` adicionais poderão ser enviadas enquanto as consultas anteriores ainda não tiverem terminado. Se estiver desabilitado, gravações adicionais na mesma tabela serão rejeitadas.

Valores possíveis:

* 0 — Desabilitado.
* 1 — Habilitado.

Veja também:

* [insert\_quorum](#insert_quorum)
* [insert\_quorum\_timeout](#insert_quorum_timeout)
* [select\_sequential\_consistency](#select_sequential_consistency)

<div id="insert_quorum_timeout">
  ## insert\_quorum\_timeout
</div>

<SettingsInfoBlock type="Milissegundos" default_value="600000" />

Tempo limite, em milissegundos, para gravação com quorum. Se o tempo limite expirar e nenhuma gravação tiver sido realizada até então, o ClickHouse gerará uma exceção, e o cliente deverá repetir a consulta para gravar o mesmo bloco na mesma ou em qualquer outra réplica.

Veja também:

* [insert\_quorum](#insert_quorum)
* [insert\_quorum\_parallel](#insert_quorum_parallel)
* [select\_sequential\_consistency](#select_sequential_consistency)

<div id="insert_shard_id">
  ## insert\_shard\_id
</div>

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

Se não for `0`, especifica o shard da tabela [Distributed](/pt-BR/reference/engines/table-engines/special/distributed) no qual os dados serão inseridos sincronicamente.

Se o valor de `insert_shard_id` estiver incorreto, o servidor lançará uma exceção.

Para obter o número de shards em `requested_cluster`, você pode verificar a config do servidor ou usar esta consulta:

```sql theme={null}
SELECT uniq(shard_num) FROM system.clusters WHERE cluster = 'requested_cluster';
```

Valores possíveis:

* 0 — Desativado.
* Qualquer número de `1` a `shards_num` da tabela [Distributed](/pt-BR/reference/engines/table-engines/special/distributed) correspondente.

**Exemplo**

Consulta:

```sql theme={null}
CREATE TABLE x AS system.numbers ENGINE = MergeTree ORDER BY number;
CREATE TABLE x_dist AS x ENGINE = Distributed('test_cluster_two_shards_localhost', currentDatabase(), x);
INSERT INTO x_dist SELECT * FROM numbers(5) SETTINGS insert_shard_id = 1;
SELECT * FROM x_dist ORDER BY number ASC;
```

Resultado:

```text theme={null}
┌─number─┐
│      0 │
│      0 │
│      1 │
│      1 │
│      2 │
│      2 │
│      3 │
│      3 │
│      4 │
│      4 │
└────────┘
```

<div id="interactive_delay">
  ## interactive\_delay
</div>

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

O intervalo, em microssegundos, para verificar se a execução da requisição foi cancelada e enviar o progresso.

<div id="intersect_default_mode">
  ## intersect\_default\_mode
</div>

<SettingsInfoBlock type="SetOperationMode" default_value="ALL" />

Define o modo padrão da consulta INTERSECT. Valores possíveis: string vazia, 'ALL', 'DISTINCT'. Se estiver vazio, a consulta sem modo lançará uma exceção.

<div id="jemalloc_collect_profile_samples_in_trace_log">
  ## jemalloc\_collect\_profile\_samples\_in\_trace\_log
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.9"},{"label": "0"},{"label": "Nova configuração"}]}]} />

Coleta amostras de alocação e desalocação do jemalloc no log de trace.

<div id="jemalloc_enable_profiler">
  ## jemalloc\_enable\_profiler
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.9"},{"label": "0"},{"label": "Nova configuração"}]}]} />

Habilita o profiler do jemalloc para a consulta. O jemalloc fará a amostragem das alocações e de todas as desalocações das alocações amostradas.
Os perfis podem ser descarregados com SYSTEM JEMALLOC FLUSH PROFILE, que pode ser usado para análise de alocação.
As amostras também podem ser armazenadas em system.trace\_log usando a configuração jemalloc\_collect\_global\_profile\_samples\_in\_trace\_log ou a configuração da consulta jemalloc\_collect\_profile\_samples\_in\_trace\_log.
Consulte [Profiling de alocação](/pt-BR/concepts/features/performance/allocation-profiling)

<div id="jemalloc_profile_text_collapsed_use_count">
  ## jemalloc\_profile\_text\_collapsed\_use\_count
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "0"},{"label": "Nova configuração para agregar por número de alocações em vez de bytes no formato collapsed do perfil de heap do jemalloc"}]}]} />

Ao usar o formato de saída 'collapsed' para o perfil de heap do jemalloc, agregue por número de alocações em vez de bytes. Quando false (padrão), cada pilha é ponderada por bytes ativos; quando true, pela contagem de alocações ativas.

<div id="jemalloc_profile_text_output_format">
  ## jemalloc\_profile\_text\_output\_format
</div>

<SettingsInfoBlock type="JemallocProfileFormat" default_value="collapsed" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "collapsed"},{"label": "Nova configuração para controlar o formato de saída da tabela system.jemalloc_profile_text. Valores possíveis: 'raw', 'symbolized', 'collapsed'"}]}]} />

Formato de saída do perfil de heap do jemalloc na tabela system.jemalloc\_profile\_text. Pode ser: 'raw' (perfil bruto), 'symbolized' (formato jeprof com símbolos) ou 'collapsed' (formato FlameGraph).

<div id="jemalloc_profile_text_symbolize_with_inline">
  ## jemalloc\_profile\_text\_symbolize\_with\_inline
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "1"},{"label": "Nova configuração para controlar se os frames inline devem ser incluídos ao simbolizar o perfil de heap do jemalloc. Quando ativada, os frames inline são incluídos, ao custo de uma simbolização mais lenta; quando desativada, eles são ignorados para uma saída mais rápida"}]}]} />

Define se os frames inline devem ser incluídos ao simbolizar o perfil de heap do jemalloc. Quando ativada, os frames inline são incluídos, o que pode tornar o processo de simbolização drasticamente mais lento; quando desativada, eles são ignorados. Afeta apenas os formatos de saída 'symbolized' e 'collapsed'.

<div id="join_algorithm">
  ## join\_algorithm
</div>

<SettingsInfoBlock type="JoinAlgorithm" default_value="direct,parallel_hash,hash" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.12"},{"label": "direct,parallel_hash,hash"},{"label": "'default' foi descontinuado em favor de algoritmos de join explicitamente especificados; além disso, agora parallel_hash tem preferência sobre hash"}]}]} />

Especifica qual algoritmo de [JOIN](/pt-BR/reference/statements/select/join) é usado.

É possível especificar vários algoritmos, e um deles será escolhido para uma consulta específica com base em kind/strictness e no mecanismo da tabela.

Valores possíveis:

* grace\_hash

[Grace hash join](https://en.wikipedia.org/wiki/Hash_join#Grace_hash_join) é usado. O Grace hash oferece uma opção de algoritmo para executar junções complexas com bom desempenho, limitando o uso de memória.

A primeira fase de um grace join lê a tabela da direita e a divide em N buckets, dependendo do valor hash das colunas-chave (inicialmente, N é `grace_hash_join_initial_buckets`). Isso é feito de modo a garantir que cada bucket possa ser processado de forma independente. As linhas do primeiro bucket são adicionadas a uma tabela hash em memória, enquanto as demais são salvas em disco. Se a tabela hash crescer além do limite de memória (por exemplo, conforme definido por [`max_bytes_in_join`](/pt-BR/reference/settings/session-settings#max_bytes_in_join)), o número de buckets será aumentado, assim como o bucket atribuído a cada linha. Quaisquer linhas que não pertençam ao bucket atual são descarregadas e reatribuídas.

Oferece suporte a `INNER/LEFT/RIGHT/FULL ALL/ANY JOIN`.

* hash

[Hash join algorithm](https://en.wikipedia.org/wiki/Hash_join) é usado. É a implementação mais genérica e oferece suporte a todas as combinações de kind e strictness, além de múltiplas chaves de junção combinadas com `OR` na seção `JOIN ON`.

Ao usar o algoritmo `hash`, a parte direita de `JOIN` é carregada na RAM.

* parallel\_hash

Uma variação de `hash` join que divide os dados em buckets e cria várias tabelas hash simultaneamente, em vez de apenas uma, para acelerar esse processo.

Ao usar o algoritmo `parallel_hash`, a parte direita de `JOIN` é carregada na RAM.

* partial\_merge

Uma variação do [algoritmo sort-merge](https://en.wikipedia.org/wiki/Sort-merge_join), em que apenas a tabela da direita é totalmente ordenada.

`RIGHT JOIN` e `FULL JOIN` são compatíveis apenas com strictness `ALL` (`SEMI`, `ANTI`, `ANY` e `ASOF` não são compatíveis).

Ao usar o algoritmo `partial_merge`, o ClickHouse ordena os dados e os grava em disco. O algoritmo `partial_merge` no ClickHouse difere ligeiramente da implementação clássica. Primeiro, o ClickHouse ordena a tabela da direita pelas chaves de junção em blocos e cria um índice min-max para os blocos ordenados. Em seguida, ele ordena partes da tabela da esquerda pela `chave de junção` e faz a junção com a tabela da direita. O índice min-max também é usado para ignorar blocos desnecessários da tabela da direita.

* direct

O algoritmo `direct` (também conhecido como nested loop) faz uma busca na tabela da direita usando as linhas da tabela da esquerda como chaves.
É compatível com armazenamentos especiais, como [Dictionary](/pt-BR/reference/engines/table-engines/special/dictionary), [EmbeddedRocksDB](/pt-BR/reference/engines/table-engines/integrations/embedded-rocksdb) e tabelas [MergeTree](/pt-BR/reference/engines/table-engines/mergetree-family/mergetree).

Para tabelas MergeTree, o algoritmo envia filtros de chave de junção diretamente para a camada de armazenamento. Isso pode ser mais eficiente quando a chave pode usar o índice de chave primária da tabela para buscas; caso contrário, ele executa varreduras completas da tabela da direita para cada bloco da tabela da esquerda.

Oferece suporte a junções `INNER` e `LEFT` e apenas a chaves de junção de igualdade com uma única coluna, sem outras condições.

* auto

Quando definido como `auto`, `hash` join é tentado primeiro, e o algoritmo é alternado dinamicamente para outro algoritmo se o limite de memória for excedido.

* full\_sorting\_merge

[Algoritmo sort-merge](https://en.wikipedia.org/wiki/Sort-merge_join) com ordenação completa das tabelas unidas antes da junção.

* prefer\_partial\_merge

O ClickHouse sempre tenta usar `partial_merge` join, se possível; caso contrário, usa `hash`. *Descontinuado*, igual a `partial_merge,hash`.

* default (descontinuado)

Valor legado; não use mais.
Igual a `direct,hash`, ou seja, tenta usar direct join e hash join (nessa ordem).

<div id="join_any_take_last_row">
  ## join\_any\_take\_last\_row
</div>

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

Altera o comportamento das operações `JOIN` com strictness `ANY`.

<Note>
  Essa configuração se aplica apenas a operações `JOIN` com tabelas que usam o motor [Join](/pt-BR/reference/engines/table-engines/special/join).
</Note>

Valores possíveis:

* 0 — Se a tabela da direita tiver mais de uma linha correspondente, apenas a primeira encontrada será associada.
* 1 — Se a tabela da direita tiver mais de uma linha correspondente, apenas a última encontrada será associada.

Veja também:

* [cláusula JOIN](/pt-BR/reference/statements/select/join)
* [motor de tabela Join](/pt-BR/reference/engines/table-engines/special/join)
* [join\_default\_strictness](#join_default_strictness)

<div id="join_default_strictness">
  ## join\_default\_strictness
</div>

<SettingsInfoBlock type="JoinStrictness" default_value="ALL" />

Define a strictness padrão para [cláusulas JOIN](/pt-BR/reference/statements/select/join).

Valores possíveis:

* `ALL` — Se a tabela da direita tiver várias linhas correspondentes, o ClickHouse cria um [produto cartesiano](https://en.wikipedia.org/wiki/Cartesian_product) com as linhas correspondentes. Esse é o comportamento normal de `JOIN` no SQL padrão.
* `ANY` — Se a tabela da direita tiver várias linhas correspondentes, apenas a primeira encontrada será usada na junção. Se a tabela da direita tiver apenas uma linha correspondente, os resultados de `ANY` e `ALL` serão os mesmos.
* `ASOF` — Para unir sequências com correspondência incerta.
* `Empty string` — Se `ALL` ou `ANY` não for especificado na consulta, o ClickHouse lança uma exceção.

<div id="join_on_disk_max_files_to_merge">
  ## join\_on\_disk\_max\_files\_to\_merge
</div>

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

Limita o número de arquivos permitidos para ordenação paralela em operações de MergeJoin quando executadas em disco.

Quanto maior o valor da configuração, mais RAM é usada e menos E/S de disco é necessária.

Possíveis valores:

* Qualquer inteiro positivo, a partir de 2.

<div id="join_output_by_rowlist_perkey_rows_threshold">
  ## join\_output\_by\_rowlist\_perkey\_rows\_threshold
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.9"},{"label": "5"},{"label": "O limite inferior da média de linhas por chave na tabela à direita para determinar se a saída deve usar uma lista de linhas no hash join."}]}]} />

O limite inferior da média de linhas por chave na tabela à direita para determinar se a saída deve usar uma lista de linhas no hash join.

<div id="join_overflow_mode">
  ## join\_overflow\_mode
</div>

<SettingsInfoBlock type="OverflowMode" default_value="throw" />

Define qual ação o ClickHouse executa quando qualquer um dos limites de join a seguir é atingido:

* [max\_bytes\_in\_join](/pt-BR/reference/settings/session-settings#max_bytes_in_join)
* [max\_rows\_in\_join](/pt-BR/reference/settings/session-settings#max_rows_in_join)

Valores possíveis:

* `THROW` — o ClickHouse lança uma exceção e interrompe a operação.
* `BREAK` — o ClickHouse interrompe a operação e não lança uma exceção.

Valor padrão: `THROW`.

**Veja também**

* [cláusula JOIN](/pt-BR/reference/statements/select/join)
* [motor de tabela Join](/pt-BR/reference/engines/table-engines/special/join)

<div id="join_runtime_bloom_filter_bytes">
  ## join\_runtime\_bloom\_filter\_bytes
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.10"},{"label": "524288"},{"label": "Nova configuração"}]}]} />

Tamanho, em bytes, de um filtro de Bloom usado como filtro de runtime para JOIN (consulte a configuração enable\_join\_runtime\_filters).

<div id="join_runtime_bloom_filter_hash_functions">
  ## join\_runtime\_bloom\_filter\_hash\_functions
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.10"},{"label": "3"},{"label": "Nova configuração"}]}]} />

Número de funções hash em um filtro de Bloom usado como filtro de runtime de JOIN (consulte a configuração enable\_join\_runtime\_filters).

<div id="join_runtime_bloom_filter_max_ratio_of_set_bits">
  ## join\_runtime\_bloom\_filter\_max\_ratio\_of\_set\_bits
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.1"},{"label": "0.7"},{"label": "Nova configuração"}]}]} />

Se o número de bits definidos em um filtro de Bloom em tempo de execução exceder essa proporção, o filtro será desativado completamente para reduzir a sobrecarga.

<div id="join_runtime_filter_blocks_to_skip_before_reenabling">
  ## join\_runtime\_filter\_blocks\_to\_skip\_before\_reenabling
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.1"},{"label": "30"},{"label": "Nova configuração"}]}]} />

Número de blocos ignorados antes de tentar reativar dinamicamente um runtime filter que havia sido desabilitado anteriormente devido a uma baixa taxa de filtragem.

<div id="join_runtime_filter_exact_values_limit">
  ## join\_runtime\_filter\_exact\_values\_limit
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.10"},{"label": "10000"},{"label": "Nova configuração"}]}]} />

Número máximo de elementos no runtime filter armazenados como estão em um conjunto; quando esse limite é excedido, ele passa a usar um filtro de Bloom.

<div id="join_runtime_filter_pass_ratio_threshold_for_disabling">
  ## join\_runtime\_filter\_pass\_ratio\_threshold\_for\_disabling
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.1"},{"label": "0.7"},{"label": "Nova configuração"}]}]} />

Se a razão entre as linhas aprovadas e as linhas verificadas for maior que esse limite, o filtro de runtime será considerado ineficiente e será desativado pelos próximos `join_runtime_filter_blocks_to_skip_before_reenabling` blocos para reduzir a sobrecarga.

<div id="join_to_sort_maximum_table_rows">
  ## join\_to\_sort\_maximum\_table\_rows
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.9"},{"label": "10000"},{"label": "O número máximo de linhas na tabela da direita para determinar se ela deve ser reordenada pela chave em LEFT ou INNER JOIN"}]}]} />

O número máximo de linhas na tabela da direita para determinar se ela deve ser reordenada pela chave em LEFT ou INNER JOIN.

<div id="join_to_sort_minimum_perkey_rows">
  ## join\_to\_sort\_minimum\_perkey\_rows
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.9"},{"label": "40"},{"label": "O limite inferior da média de linhas por chave na tabela da direita para determinar se a tabela da direita deve ser reordenada pela chave em left join ou inner join. Essa configuração garante que a otimização não seja aplicada a chaves esparsas da tabela"}]}]} />

O limite inferior da média de linhas por chave na tabela da direita para determinar se a tabela da direita deve ser reordenada pela chave em left join ou inner join. Essa configuração garante que a otimização não seja aplicada a chaves esparsas da tabela

<div id="join_use_nulls">
  ## join\_use\_nulls
</div>

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

Define como o [JOIN](/pt-BR/reference/statements/select/join) se comporta. Ao combinar tabelas, podem surgir células vazias. O ClickHouse as preenche de maneiras diferentes com base nesta configuração.

Possíveis valores:

* 0 — As células vazias são preenchidas com o valor padrão do tipo do campo correspondente.
* 1 — `JOIN` se comporta da mesma forma que no SQL padrão. O tipo do campo correspondente é convertido para [Nullable](/pt-BR/reference/data-types/nullable), e as células vazias são preenchidas com [NULL](/pt-BR/reference/syntax).

<div id="joined_block_split_single_row">
  ## joined\_block\_split\_single\_row
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.10"},{"label": "0"},{"label": "Nova configuração"}]}]} />

Permite dividir em fragmentos o resultado do hash join por linhas correspondentes a uma única linha da tabela à esquerda.
Isso pode reduzir o uso de memória no caso de uma linha com muitas correspondências na tabela à direita, mas pode aumentar o uso de CPU.
Observe que `max_joined_block_size_rows != 0` é obrigatório para que essa configuração tenha efeito.
O `max_joined_block_size_bytes`, em combinação com essa configuração, é útil para evitar uso excessivo de memória em caso de dados desbalanceados, com algumas linhas grandes tendo muitas correspondências na tabela à direita.

<div id="joined_subquery_requires_alias">
  ## joined\_subquery\_requires\_alias
</div>

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

Exige que subconsultas usadas em joins e funções de tabela tenham aliases para a qualificação correta dos nomes.

<div id="kafka_disable_num_consumers_limit">
  ## kafka\_disable\_num\_consumers\_limit
</div>

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

Desabilita o limite de kafka\_num\_consumers, que depende do número de núcleos de CPU disponíveis.

<div id="kafka_max_wait_ms">
  ## kafka\_max\_wait\_ms
</div>

<SettingsInfoBlock type="Milliseconds" default_value="5000" />

O tempo de espera, em milissegundos, para ler mensagens do [Kafka](/pt-BR/reference/engines/table-engines/integrations/kafka) antes de tentar novamente.

Valores possíveis:

* Inteiro positivo.
* 0 — Sem limite de tempo.

Veja também:

* [Apache Kafka](https://kafka.apache.org/)

<div id="keeper_map_strict_mode">
  ## keeper\_map\_strict\_mode
</div>

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

Impõe verificações adicionais durante operações no KeeperMap. Ex.: lança uma exceção ao inserir uma chave que já existe

<div id="keeper_max_retries">
  ## keeper\_max\_retries
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "10"},{"label": "Máximo de tentativas para operações gerais do Keeper"}]}]} />

Máximo de tentativas para operações gerais do Keeper

<div id="keeper_retry_initial_backoff_ms">
  ## keeper\_retry\_initial\_backoff\_ms
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "100"},{"label": "Tempo limite de backoff inicial para operações gerais do Keeper"}]}]} />

Tempo limite de backoff inicial para operações gerais do Keeper

<div id="keeper_retry_max_backoff_ms">
  ## keeper\_retry\_max\_backoff\_ms
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "5000"},{"label": "Tempo máximo de backoff para operações gerais do Keeper"}]}]} />

Tempo máximo de backoff para operações gerais do Keeper

<div id="least_greatest_legacy_null_behavior">
  ## least\_greatest\_legacy\_null\_behavior
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.12"},{"label": "0"},{"label": "Nova configuração"}]}]} />

Se ativada, as funções 'least' e 'greatest' retornam NULL se um de seus argumentos for NULL.

<div id="legacy_column_name_of_tuple_literal">
  ## legacy\_column\_name\_of\_tuple\_literal
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "21.7"},{"label": "0"},{"label": "Adicione esta configuração apenas por motivos de compatibilidade. Faz sentido defini-la como 'true' ao fazer um rolling update do cluster de uma versão inferior a 21.7 para uma superior"}]}]} />

Liste todos os nomes dos elementos de literais Tuple grandes nos nomes de coluna, em vez de hash. Esta configuração existe apenas por motivos de compatibilidade. Faz sentido defini-la como 'true' ao fazer um rolling update do cluster de uma versão inferior a 21.7 para uma superior.

<div id="lightweight_delete_mode">
  ## lightweight\_delete\_mode
</div>

<SettingsInfoBlock type="LightweightDeleteMode" default_value="alter_update" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "alter_update"},{"label": "Nova configuração"}]}]} />

Modo de consulta de atualização interna executada como parte da exclusão leve.

Valores possíveis:

* `alter_update` - executa a consulta `ALTER UPDATE`, que cria uma mutação pesada.
* `lightweight_update` - executa atualização leve, se possível; caso contrário, executa `ALTER UPDATE`.
* `lightweight_update_force` - executa atualização leve, se possível; caso contrário, gera uma exceção.

<div id="lightweight_deletes_sync">
  ## lightweight\_deletes\_sync
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.4"},{"label": "2"},{"label": "O mesmo que 'mutation_sync', mas controla apenas a execução de exclusões leves"}]}]} />

O mesmo que [`mutations_sync`](#mutations_sync), mas controla apenas a execução de exclusões leves.

Valores possíveis:

| Valor | Descrição                                                                                                                                                             |
| ----- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `0`   | As mutações são executadas de forma assíncrona.                                                                                                                       |
| `1`   | A consulta aguarda a conclusão das exclusões leves no servidor atual.                                                                                                 |
| `2`   | A consulta aguarda a conclusão das exclusões leves em todas as réplicas (se existirem).                                                                               |
| `3`   | A consulta aguarda apenas as réplicas ativas. Compatível apenas com `SharedMergeTree`. Para `ReplicatedMergeTree`, o comportamento é o mesmo de `mutations_sync = 2`. |

**Veja também**

* [Sincronicidade das consultas ALTER](/pt-BR/reference/statements/alter#synchronicity-of-alter-queries)
* [Mutações](/pt-BR/reference/statements/alter#mutations)

Valor padrão no Cloud: `1`.

<div id="limit">
  ## limit
</div>

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

Define o número máximo de linhas a retornar no resultado da consulta. Ele ajusta o valor definido pela cláusula [LIMIT](/pt-BR/reference/statements/select/limit), para que o limite especificado na consulta não possa exceder o limite definido por esta configuração.

Valores possíveis:

* 0 — O número de linhas não é limitado.
* Inteiro positivo.

<div id="load_balancing">
  ## load\_balancing
</div>

<SettingsInfoBlock type="LoadBalancing" default_value="random" />

Especifica o algoritmo de seleção de réplicas usado para o processamento distribuído de consultas.

O ClickHouse oferece suporte aos seguintes algoritmos de seleção de réplicas:

* [Random](#load_balancing-random) (por padrão)
* [Nearest hostname](#load_balancing-nearest_hostname)
* [Hostname levenshtein distance](#load_balancing-hostname_levenshtein_distance)
* [In order](#load_balancing-in_order)
* [First or random](#load_balancing-first_or_random)
* [Round robin](#load_balancing-round_robin)

Veja também:

* [distributed\_replica\_max\_ignored\_errors](#distributed_replica_max_ignored_errors)

<div id="load_balancing-random">
  ### Random (padrão)
</div>

```sql theme={null}
load_balancing = random
```

O número de erros é contabilizado para cada réplica. A consulta é enviada para a réplica com menos erros e, se houver várias nessas condições, para qualquer uma delas.
Desvantagens: a proximidade do servidor não é levada em conta; se as réplicas tiverem dados diferentes, você também obterá dados diferentes.

<div id="load_balancing-nearest_hostname">
  ### Hostname mais semelhante
</div>

```sql theme={null}
load_balancing = nearest_hostname
```

O número de erros é contado para cada réplica. A cada 5 minutos, o número de erros é dividido por 2 usando divisão inteira. Assim, o número de erros é calculado com suavização exponencial para um período recente. Se houver uma réplica com o menor número de erros (ou seja, se erros tiverem ocorrido recentemente nas outras réplicas), a consulta será enviada para ela. Se houver várias réplicas com o mesmo número mínimo de erros, a consulta será enviada para a réplica com o hostname mais parecido com o hostname do servidor no arquivo de configuração (com base no número de caracteres diferentes nas mesmas posições, até o comprimento mínimo de ambos os hostnames).

Por exemplo, example01-01-1 e example01-01-2 diferem em uma posição, enquanto example01-01-1 e example01-02-2 diferem em duas posições.
Esse método pode parecer primitivo, mas não requer dados externos sobre a topologia da rede nem compara endereços IP, o que seria complicado no caso dos nossos endereços IPv6.

Assim, se houver réplicas equivalentes, a mais próxima pelo nome será preferida.
Também podemos supor que, ao enviar uma consulta para o mesmo servidor, na ausência de falhas, uma consulta distribuída também irá para os mesmos servidores. Portanto, mesmo que dados diferentes estejam nas réplicas, a consulta retornará, em sua maior parte, os mesmos resultados.

<div id="load_balancing-hostname_levenshtein_distance">
  ### Distância de Levenshtein entre hostnames
</div>

```sql theme={null}
load_balancing = hostname_levenshtein_distance
```

Assim como `nearest_hostname`, mas compara o hostname usando a [distância de Levenshtein](https://en.wikipedia.org/wiki/Levenshtein_distance). Por exemplo:

```text theme={null}
example-clickhouse-0-0 ample-clickhouse-0-0
1

example-clickhouse-0-0 example-clickhouse-1-10
2

example-clickhouse-0-0 example-clickhouse-12-0
3
```

<div id="load_balancing-in_order">
  ### Em ordem
</div>

```sql theme={null}
load_balancing = in_order
```

As réplicas com o mesmo número de erros são acessadas na mesma ordem em que foram especificadas na configuração.
Esse método é adequado quando você sabe exatamente qual réplica é preferível.

<div id="load_balancing-first_or_random">
  ### Primeiro ou aleatório
</div>

```sql theme={null}
load_balancing = first_or_random
```

Esse algoritmo escolhe a primeira réplica do conjunto ou uma réplica aleatória se a primeira não estiver disponível. Ele é eficaz em topologias de replicação cruzada, mas não é útil em outras configurações.

O algoritmo `first_or_random` resolve o problema do algoritmo `in_order`. Com `in_order`, se uma réplica ficar indisponível, a próxima recebe o dobro da carga, enquanto as demais réplicas continuam lidando com o volume habitual de tráfego. Ao usar o algoritmo `first_or_random`, a carga é distribuída de forma uniforme entre as réplicas que ainda estão disponíveis.

É possível definir explicitamente qual é a primeira réplica usando a configuração `load_balancing_first_offset`. Isso dá mais controle para redistribuir a carga das consultas entre as réplicas.

<div id="load_balancing-round_robin">
  ### Round Robin
</div>

```sql theme={null}
load_balancing = round_robin
```

Este algoritmo usa uma política round-robin entre réplicas com o mesmo número de erros (apenas as consultas com a política `round_robin` são levadas em conta).

<div id="load_balancing_first_offset">
  ## load\_balancing\_first\_offset
</div>

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

A qual réplica a consulta deve ser enviada de preferência quando a estratégia de balanceamento de carga FIRST\_OR\_RANDOM é usada.

<div id="load_marks_asynchronously">
  ## load\_marks\_asynchronously
</div>

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

Carrega as marcas do MergeTree de forma assíncrona

Valor padrão no Cloud: `1`.

<div id="local_filesystem_read_method">
  ## local\_filesystem\_read\_method
</div>

<SettingsInfoBlock type="String" default_value="pread_threadpool" />

Método de leitura de dados do sistema de arquivos local, um dos seguintes: read, pread, mmap, io\_uring, pread\_threadpool.

O método 'io\_uring' é experimental e não funciona para Log, TinyLog, StripeLog, File, Set e Join, nem para outras tabelas com arquivos aos quais é possível acrescentar dados quando há leituras e gravações concorrentes.
Se você ler vários artigos sobre 'io\_uring' na Internet, não se deixe impressionar por eles. Ele não é um método melhor de leitura de arquivos, exceto no caso de uma grande quantidade de pequenas solicitações de E/S, o que não ocorre no ClickHouse. Não há motivo para habilitar o 'io\_uring'.

<div id="local_filesystem_read_prefetch">
  ## local\_filesystem\_read\_prefetch
</div>

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

Deve usar pré-carregamento ao ler dados do sistema de arquivos local.

<div id="lock_acquire_timeout">
  ## lock\_acquire\_timeout
</div>

<SettingsInfoBlock type="Segundos" default_value="120" />

Define quantos segundos uma solicitação de bloqueio espera antes de falhar.

O timeout de bloqueio é usado para evitar deadlocks ao executar operações de leitura/gravação em tabelas. Quando o timeout expira e a solicitação de bloqueio falha, o servidor ClickHouse gera uma exceção "Locking attempt timed out! Possible deadlock avoided. Client should retry." com o código de erro `DEADLOCK_AVOIDED`.

Valores possíveis:

* Inteiro positivo (em segundos).
* 0 — Sem timeout de bloqueio.

<div id="log_comment">
  ## log\_comment
</div>

Especifica o valor do campo `log_comment` da tabela [system.query\_log](/pt-BR/reference/system-tables/query_log) e o texto de comentário do log do servidor.

Pode ser usado para melhorar a legibilidade dos logs do servidor. Além disso, ajuda a selecionar consultas relacionadas ao teste em `system.query_log` após executar [clickhouse-test](/pt-BR/resources/develop-contribute/contribute/tests).

Valores possíveis:

* Qualquer string com comprimento máximo de [max\_query\_size](#max_query_size). Se `max&#95;query&#95;size` for excedido, o servidor gera uma exceção.

**Exemplo**

Consulta:

```sql theme={null}
SET log_comment = 'log_comment test', log_queries = 1;
SELECT 1;
SYSTEM FLUSH LOGS;
SELECT type, query FROM system.query_log WHERE log_comment = 'log_comment test' AND event_date >= yesterday() ORDER BY event_time DESC LIMIT 2;
```

Resultado:

```text theme={null}
┌─type────────┬─query─────┐
│ QueryStart  │ SELECT 1; │
│ QueryFinish │ SELECT 1; │
└─────────────┴───────────┘
```

<div id="log_formatted_queries">
  ## log\_formatted\_queries
</div>

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

Permite registrar consultas formatadas na tabela de sistema [system.query\_log](/pt-BR/reference/system-tables/query_log) (preenche a coluna `formatted_query` na [system.query\_log](/pt-BR/reference/system-tables/query_log)).

Valores possíveis:

* 0 — As consultas formatadas não são registradas na tabela de sistema.
* 1 — As consultas formatadas são registradas na tabela de sistema.

<div id="log_processors_profiles">
  ## log\_processors\_profiles
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "1"},{"label": "Habilitado por padrão"}]}]} />

Grava na tabela `system.processors_profile_log` o tempo que o processador passou em execução/aguardando dados.

Veja também:

* [`system.processors_profile_log`](/pt-BR/reference/system-tables/processors_profile_log)
* [`EXPLAIN PIPELINE`](/pt-BR/reference/statements/explain#explain-pipeline)

<div id="log_profile_events">
  ## log\_profile\_events
</div>

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

Registra estatísticas de desempenho de consultas em `query_log`, `query_thread_log` e `query_views_log`.

<div id="log_queries">
  ## log\_queries
</div>

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

Configura o registro de consultas.

As consultas enviadas ao ClickHouse com essa configuração são registradas de acordo com as regras do parâmetro de configuração do servidor [query\_log](/pt-BR/reference/settings/server-settings/settings#query_log).

Exemplo:

```text theme={null}
log_queries=1
```

<div id="log_queries_cut_to_length">
  ## log\_queries\_cut\_to\_length
</div>

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

Se o comprimento da consulta for maior que um limite especificado (em bytes), a consulta será truncada ao ser gravada no log de consultas. O comprimento da consulta exibida no log de texto comum também será limitado.

<div id="log_queries_min_query_duration_ms">
  ## log\_queries\_min\_query\_duration\_ms
</div>

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

Se estiver habilitada (valor diferente de zero), as consultas mais rápidas do que o valor dessa configuração não serão registradas (você pode entendê-la como um `long_query_time` do [MySQL Slow Query Log](https://dev.mysql.com/doc/refman/5.7/slow-query-log.html)); isso basicamente significa que você não as encontrará nas tabelas a seguir:

* `system.query_log`
* `system.query_thread_log`

Somente consultas do seguinte tipo serão registradas no log:

* `QUERY_FINISH`

* `EXCEPTION_WHILE_PROCESSING`

* Tipo: milissegundos

* Valor padrão: 0 (qualquer consulta)

<div id="log_queries_min_type">
  ## log\_queries\_min\_type
</div>

<SettingsInfoBlock type="LogQueriesType" default_value="QUERY_START" />

Tipo mínimo de `query_log` a ser registrado.

Valores possíveis:

* `QUERY_START` (`=1`)
* `QUERY_FINISH` (`=2`)
* `EXCEPTION_BEFORE_START` (`=3`)
* `EXCEPTION_WHILE_PROCESSING` (`=4`)

Pode ser usado para limitar quais registros irão para `query_log`; por exemplo, se você estiver interessado apenas em erros, pode usar `EXCEPTION_WHILE_PROCESSING`:

```text theme={null}
log_queries_min_type='EXCEPTION_WHILE_PROCESSING'
```

<div id="log_queries_probability">
  ## log\_queries\_probability
</div>

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

Permite que um usuário grave nas tabelas de sistema [query\_log](/pt-BR/reference/system-tables/query_log), [query\_thread\_log](/pt-BR/reference/system-tables/query_thread_log) e [query\_views\_log](/pt-BR/reference/system-tables/query_views_log) apenas uma amostra das consultas, selecionadas aleatoriamente com a probabilidade especificada. Isso ajuda a reduzir a carga quando há um grande volume de consultas por segundo.

Valores possíveis:

* 0 — As consultas não são registradas nas tabelas de sistema.
* Número positivo de ponto flutuante no intervalo \[0..1]. Por exemplo, se o valor da configuração for `0.5`, cerca de metade das consultas será registrada nas tabelas de sistema.
* 1 — Todas as consultas são registradas nas tabelas de sistema.

<div id="log_query_settings">
  ## log\_query\_settings
</div>

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

Registra as configurações da consulta no query\_log e no log de span do OpenTelemetry.

<div id="log_query_threads">
  ## log\_query\_threads
</div>

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

Configura o registro em log das threads de consulta.

As threads de consulta são registradas na tabela [system.query\_thread\_log](/pt-BR/reference/system-tables/query_thread_log). Essa configuração só tem efeito quando [log\_queries](#log_queries) é true. As threads das consultas executadas pelo ClickHouse com essa configuração são registradas de acordo com as regras definidas no parâmetro de configuração do servidor [query\_thread\_log](/pt-BR/reference/settings/server-settings/settings#query_thread_log).

Valores possíveis:

* 0 — Desabilitado.
* 1 — Habilitado.

**Exemplo**

```text theme={null}
log_query_threads=1
```

<div id="log_query_views">
  ## log\_query\_views
</div>

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

Configura o registro de visualizações de consultas.

Quando uma consulta executada pelo ClickHouse com essa configuração habilitada tem visualizações associadas (materializadas ou visualizações em tempo real), elas são registradas no parâmetro de configuração do servidor [query\_views\_log](/pt-BR/reference/settings/server-settings/settings#query_views_log).

Exemplo:

```text theme={null}
log_query_views=1
```

<div id="low_cardinality_allow_in_native_format">
  ## low\_cardinality\_allow\_in\_native\_format
</div>

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

Permite ou restringe o uso do tipo de dado [LowCardinality](/pt-BR/reference/data-types/lowcardinality) com o formato [Native](/pt-BR/reference/formats/Native).

Se o uso de `LowCardinality` for restringido, o servidor ClickHouse converte colunas `LowCardinality` em colunas comuns em consultas `SELECT` e converte colunas comuns em colunas `LowCardinality` em consultas `INSERT`.

Essa configuração é necessária principalmente para clientes de terceiros que não oferecem suporte ao tipo de dado `LowCardinality`.

Possible values:

* 1 — O uso de `LowCardinality` não é restringido.
* 0 — O uso de `LowCardinality` é restringido.

<div id="low_cardinality_max_dictionary_size">
  ## low\_cardinality\_max\_dictionary\_size
</div>

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

Define o tamanho máximo, em linhas, de um Dicionário global compartilhado para o tipo de dado [LowCardinality](/pt-BR/reference/data-types/lowcardinality) que pode ser gravado em um sistema de arquivos de armazenamento. Essa configuração evita problemas de RAM em caso de crescimento ilimitado do Dicionário. Todos os dados que não puderem ser codificados devido à limitação do tamanho máximo do Dicionário são gravados pelo ClickHouse usando o método comum.

Valores possíveis:

* Qualquer número inteiro positivo.

<div id="low_cardinality_use_single_dictionary_for_part">
  ## low\_cardinality\_use\_single\_dictionary\_for\_part
</div>

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

Ativa ou desativa o uso de um único Dicionário para a data part.

Por padrão, o servidor ClickHouse monitora o tamanho dos dicionários e, se um dicionário exceder o limite, o servidor começa a gravar o próximo. Para impedir a criação de vários dicionários, defina `low_cardinality_use_single_dictionary_for_part = 1`.

Valores possíveis:

* 1 — A criação de vários dicionários para a data part é proibida.
* 0 — A criação de vários dicionários para a data part não é proibida.

<div id="low_priority_query_wait_time_ms">
  ## low\_priority\_query\_wait\_time\_ms
</div>

<SettingsInfoBlock type="Milissegundos" default_value="1000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.4"},{"label": "1000"},{"label": "Nova configuração."}]}]} />

Quando o mecanismo de priorização de consultas é usado (consulte a configuração `priority`), consultas de baixa prioridade aguardam o término das consultas de maior prioridade. Esta configuração define por quanto tempo elas aguardam.

<div id="make_distributed_plan">
  ## make\_distributed\_plan
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "0"},{"label": "Nova configuração experimental."}]}]} />

Cria plano de consulta distribuída.

<div id="materialize_skip_indexes_on_insert">
  ## materialize\_skip\_indexes\_on\_insert
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.6"},{"label": "1"},{"label": "Nova configuração adicionada para permitir desabilitar a materialização de skip indexes no insert"}]}]} />

Define se os INSERTs criam e armazenam skip indexes. Se desabilitado, os skip indexes só serão criados e armazenados [durante mesclagens](/pt-BR/reference/settings/merge-tree-settings#materialize_skip_indexes_on_merge) ou por um [MATERIALIZE INDEX](/pt-BR/reference/statements/alter/skipping-index#materialize-index) explícito.

Veja também [exclude\_materialize\_skip\_indexes\_on\_insert](#exclude_materialize_skip_indexes_on_insert).

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

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "0"},{"label": "Desabilita a criação de estatísticas em INSERT por padrão; em vez disso, depende de merges"}]}, {"id": "row-2","items": [{"label": "24.6"},{"label": "1"},{"label": "Nova configuração adicionada para permitir desabilitar a materialização de estatísticas no insert"}]}]} />

Define se INSERTs criam e inserem estatísticas. Se desabilitado, as estatísticas serão criadas e armazenadas durante as merges ou por MATERIALIZE STATISTICS explícito

<div id="materialize_ttl_after_modify">
  ## materialize\_ttl\_after\_modify
</div>

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

Aplica o TTL a dados antigos após a consulta ALTER MODIFY TTL

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

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

Permite ignorar erros em MATERIALIZED VIEW e enviar o bloco original para a tabela, independentemente das MVs

<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 uma configuração para preservar o comportamento antigo, se necessário."}]}]} />

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

<div id="max_analyze_depth">
  ## max\_analyze\_depth
</div>

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

Número máximo de análises executadas pelo interpretador.

<div id="max_ast_depth">
  ## max\_ast\_depth
</div>

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

A profundidade máxima de aninhamento da árvore sintática de uma consulta. Se for excedida, uma exceção será lançada.

<Note>
  No momento, isso não é verificado durante o parsing, mas apenas após o parsing da consulta.
  Isso significa que uma árvore sintática profunda demais pode ser criada durante o parsing,
  mas a consulta falhará.
</Note>

<div id="max_ast_elements">
  ## max\_ast\_elements
</div>

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

O número máximo de elementos em uma árvore sintática de consulta. Se esse limite for excedido, uma exceção será lançada.

<Note>
  No momento, isso não é verificado durante o parsing, mas apenas após o parsing da consulta.
  Isso significa que uma árvore sintática excessivamente profunda pode ser criada durante o parsing,
  mas a consulta falhará.
</Note>

<div id="max_autoincrement_series">
  ## max\_autoincrement\_series
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "1000"},{"label": "Nova configuração"}]}]} />

O limite para o número de séries criadas pela função `generateSerialID`.

Como cada série representa um nó no Keeper, recomenda-se não ter mais do que alguns milhões delas.

<div id="max_backup_bandwidth">
  ## max\_backup\_bandwidth
</div>

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

A velocidade máxima de leitura, em bytes por segundo, para um backup específico no servidor. Zero significa sem limite.

<div id="max_block_size">
  ## max\_block\_size
</div>

<SettingsInfoBlock type="NonZeroUInt64" default_value="65409" />

No ClickHouse, os dados são processados em blocos, que são conjuntos de partes de colunas. Os ciclos internos de processamento de um único bloco são eficientes, mas há custos perceptíveis no processamento de cada bloco.

A configuração `max_block_size` indica o número máximo recomendado de linhas a serem incluídas em um único bloco ao carregar dados de tabelas. Blocos com o tamanho de `max_block_size` nem sempre são carregados da tabela: se o ClickHouse determinar que menos dados precisam ser recuperados, um bloco menor será processado.

O tamanho do bloco não deve ser muito pequeno, para evitar custos perceptíveis no processamento de cada bloco. Também não deve ser muito grande, para garantir que consultas com uma cláusula LIMIT sejam executadas rapidamente após o processamento do primeiro bloco. Ao definir `max_block_size`, o objetivo deve ser evitar o consumo excessivo de memória ao extrair um grande número de colunas em múltiplas threads e preservar ao menos alguma localidade de cache.

<div id="max_bytes_before_external_group_by">
  ## max\_bytes\_before\_external\_group\_by
</div>

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

Valor padrão no Cloud: metade da quantidade de memória por réplica.

Habilita ou desabilita a execução de cláusulas `GROUP BY` na memória externa.
(Consulte [GROUP BY na memória externa](/pt-BR/reference/statements/select/group-by#group-by-in-external-memory))

Valores possíveis:

* Volume máximo de RAM (em bytes) que pode ser usado por uma única operação [GROUP BY](/pt-BR/reference/statements/select/group-by).
* `0` — `GROUP BY` na memória externa desabilitado.

<Note>
  Se o uso de memória durante operações de GROUP BY exceder esse limite em bytes,
  ative o modo de agregação externa (gravar dados em disco).

  O valor recomendado é metade da memória disponível do sistema.
</Note>

<div id="max_bytes_before_external_join">
  ## max\_bytes\_before\_external\_join
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "0"},{"label": "Nova configuração para controlar o spilling automático de hash joins para disco. Um valor diferente de zero habilita o spilling e define o limite em bytes."}]}]} />

Se for definido com um valor diferente de zero e `join_algorithm` for `hash`, `parallel_hash`, `default` ou `auto`, o hash join será convertido automaticamente em grace hash join para permitir o spilling para disco quando os dados do lado direito excederem essa quantidade de bytes. Quando definido como 0 (padrão), esse limite absoluto em bytes é desabilitado, mas o spilling automático ainda pode ocorrer por meio de `max_bytes_ratio_before_external_join` (que, por padrão, é `0.5`); defina ambos como `0` para desabilitar totalmente o spilling automático. Isso impede a otimização de leitura em ordem por meio de join.

<div id="max_bytes_before_external_sort">
  ## max\_bytes\_before\_external\_sort
</div>

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

Valor padrão no Cloud: metade da quantidade de memória por réplica.

Habilita ou desabilita a execução de cláusulas `ORDER BY` em memória externa. Consulte [Detalhes de implementação de ORDER BY](/pt-BR/reference/statements/select/order-by#implementation-details)
Se o uso de memória durante a operação `ORDER BY` exceder esse limite em bytes, o modo de "ordenação externa" (gravar dados em disco) será ativado.

Valores possíveis:

* Volume máximo de RAM (em bytes) que pode ser usado por uma única operação [ORDER BY](/pt-BR/reference/statements/select/order-by).
  O valor recomendado é metade da memória disponível do sistema
* `0` — `ORDER BY` em memória externa desabilitado.

<div id="max_bytes_before_remerge_sort">
  ## max\_bytes\_before\_remerge\_sort
</div>

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

No caso de ORDER BY com LIMIT, quando o uso de memória exceder o limite especificado, execute etapas adicionais de mesclagem de blocos antes da mesclagem final para manter apenas as primeiras LIMIT linhas.

<div id="max_bytes_for_lazy_final">
  ## max\_bytes\_for\_lazy\_final
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "256000000"},{"label": "Nova configuração para o número máximo de bytes no conjunto para a otimização lazy FINAL"}]}]} />

Número máximo de bytes no conjunto para a otimização lazy FINAL. Se esse limite for excedido, usa o FINAL normal.

<div id="max_bytes_in_distinct">
  ## max\_bytes\_in\_distinct
</div>

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

O número máximo de bytes do estado (em bytes descomprimidos) na memória,
usado por uma tabela hash ao utilizar DISTINCT.

<div id="max_bytes_in_join">
  ## max\_bytes\_in\_join
</div>

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

O tamanho máximo, em bytes, da tabela hash usada em junções entre tabelas.

Essa configuração se aplica às operações [SELECT ... JOIN](/pt-BR/reference/statements/select/join)
e ao [motor de tabela Join](/pt-BR/reference/engines/table-engines/special/join).

Se a consulta contiver junções, o ClickHouse verifica essa configuração para cada resultado intermediário.

O ClickHouse pode prosseguir com diferentes ações quando o limite é atingido. Use
a configuração [join\_overflow\_mode](/pt-BR/reference/settings/session-settings#join_overflow_mode) para escolher a ação.

Valores possíveis:

* Inteiro positivo.
* 0 — O controle de memória está desabilitado.

<div id="max_bytes_in_set">
  ## max\_bytes\_in\_set
</div>

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

O número máximo de bytes (de dados não comprimidos) usado por um conjunto criado a partir de uma subconsulta na cláusula IN.

<div id="max_bytes_ratio_before_external_group_by">
  ## max\_bytes\_ratio\_before\_external\_group\_by
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "0.5"},{"label": "Ativar o spilling automático para disco por padrão."}]}, {"id": "row-2","items": [{"label": "24.12"},{"label": "0"},{"label": "Nova configuração."}]}]} />

A fração da memória disponível que pode ser usada pelo `GROUP BY`. Quando esse limite é atingido,
a agregação passa a usar memória externa.

Por exemplo, se definido como `0.6`, o `GROUP BY` permitirá usar 60% da memória disponível
(para servidor/usuário/mesclagens) no início da execução; depois disso, passará
a usar agregação externa.

<div id="max_bytes_ratio_before_external_join">
  ## max\_bytes\_ratio\_before\_external\_join
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "0.5"},{"label": "Nova configuração: proporção da memória disponível usada como limite de spill para junções hash. Ativada por padrão em `0.5`, seguindo `max_bytes_ratio_before_external_group_by` e `max_bytes_ratio_before_external_sort`. Combinada com o valor absoluto `max_bytes_before_external_join` (aplica-se o menor dos dois)."}]}]} />

A proporção da memória disponível que pode ser usada para `JOIN`. Quando esse valor é atingido, o hash join será convertido em grace hash join para fazer spill dos dados do lado direito para disco.

Por exemplo, se definido como `0.6`, `JOIN` permitirá usar `60%` da memória disponível (para servidor/usuário/mesclagens) para a tabela hash do lado direito no início da execução; depois disso, começa o spill para disco.

Se `max_bytes_before_external_join` e `max_bytes_ratio_before_external_join` estiverem definidos, será usado o menor limite resultante. Se a proporção for `0`, apenas a configuração absoluta se aplica.

Tem efeito apenas quando `join_algorithm` é `hash`, `parallel_hash`, `default` ou `auto` e um caminho de dados temporários está configurado.

<div id="max_bytes_ratio_before_external_sort">
  ## max\_bytes\_ratio\_before\_external\_sort
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "0.5"},{"label": "Habilita o spilling automático para disco por padrão."}]}, {"id": "row-2","items": [{"label": "24.12"},{"label": "0"},{"label": "Nova configuração."}]}]} />

A fração da memória disponível que pode ser usada por `ORDER BY`. Quando esse limite é atingido, a ordenação externa é utilizada.

Por exemplo, se definido como `0.6`, `ORDER BY` permitirá usar `60%` da memória disponível (para servidor/usuário/merges) no início da execução; depois disso, começará a usar ordenação externa.

Observe que `max_bytes_before_external_sort` ainda é respeitado; o spilling para disco só será feito se o bloco de ordenação for maior que `max_bytes_before_external_sort`.

<div id="max_bytes_to_read">
  ## max\_bytes\_to\_read
</div>

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

O número máximo de bytes (de dados não comprimidos) que podem ser lidos de uma tabela ao executar uma consulta.
A restrição é verificada para cada fragmento de dados processado, aplicada apenas à
expressão de tabela mais profunda e, ao ler de um servidor remoto, verificada apenas no
servidor remoto.

<div id="max_bytes_to_read_leaf">
  ## max\_bytes\_to\_read\_leaf
</div>

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

O número máximo de bytes (de dados não comprimidos) que pode ser lido de uma
tabela local em um nó folha ao executar uma consulta distribuída. Embora consultas distribuídas
possam emitir várias subconsultas para cada shard (folha), esse limite
será verificado apenas na etapa de leitura nos nós folha e será ignorado na
etapa de mesclagem dos resultados no nó raiz.

Por exemplo, um cluster consiste em 2 shards, e cada shard contém uma tabela com
100 bytes de dados. Uma consulta distribuída que deveria ler todos os dados
de ambas as tabelas com a configuração `max_bytes_to_read=150` falhará, pois o total
será de 200 bytes. Uma consulta com `max_bytes_to_read_leaf=150` terá êxito, já que
os nós folha lerão no máximo 100 bytes.

A restrição é verificada para cada fragmento de dados processado.

<Note>
  Essa configuração é instável com `prefer_localhost_replica=1`.
</Note>

<div id="max_bytes_to_sort">
  ## max\_bytes\_to\_sort
</div>

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

O número máximo de bytes antes da ordenação. Se for necessário processar mais do que a quantidade especificada de
bytes não comprimidos para a operação ORDER BY, o comportamento
será determinado por `sort_overflow_mode`, que por padrão está definido como `throw`.

<div id="max_bytes_to_transfer">
  ## max\_bytes\_to\_transfer
</div>

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

O número máximo de bytes (dados não comprimidos) que podem ser enviados a um servidor remoto
ou salvos em uma tabela temporária quando a seção GLOBAL IN/JOIN é executada.

<div id="max_columns_to_read">
  ## max\_columns\_to\_read
</div>

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

O número máximo de colunas que podem ser lidas de uma tabela em uma única consulta.
Se uma consulta exigir a leitura de mais colunas do que o número especificado, uma exceção
será gerada.

<Tip>
  Essa configuração é útil para evitar consultas excessivamente complexas.
</Tip>

O valor `0` significa sem limite.

<div id="max_compress_block_size">
  ## max\_compress\_block\_size
</div>

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

O tamanho máximo dos blocos de dados não comprimidos antes da compressão para gravação em uma tabela. O padrão é 1.048.576 (1 MiB). Especificar um tamanho de bloco menor geralmente resulta em uma taxa de compressão ligeiramente menor; a velocidade de compressão e descompressão aumenta um pouco devido à localidade de cache, e o consumo de memória é reduzido.

<Note>
  Esta é uma configuração de nível avançado, e você não deve alterá-la se estiver apenas começando a usar o ClickHouse.
</Note>

Não confunda blocos usados para compressão (um bloco de memória composto por bytes) com blocos usados no processamento de consultas (um conjunto de linhas de uma tabela).

<div id="max_concurrent_queries_for_all_users">
  ## max\_concurrent\_queries\_for\_all\_users
</div>

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

Gera uma exceção se o valor dessa configuração for menor ou igual ao número atual de consultas processadas simultaneamente.

Exemplo: `max_concurrent_queries_for_all_users` pode ser definido como 99 para todos os usuários, e o administrador do banco de dados pode defini-lo como 100 para a própria conta para executar consultas de investigação mesmo quando o servidor estiver sobrecarregado.

Modificar a configuração para uma consulta ou um usuário não afeta outras consultas.

Valores possíveis:

* Inteiro positivo.
* 0 — Sem limite.

**Exemplo**

```xml theme={null}
<max_concurrent_queries_for_all_users>99</max_concurrent_queries_for_all_users>
```

**Veja também**

* [max\_concurrent\_queries](/pt-BR/reference/settings/server-settings/settings#max_concurrent_queries)

Valor padrão no Cloud: `1000`.

<div id="max_concurrent_queries_for_user">
  ## max\_concurrent\_queries\_for\_user
</div>

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

O número máximo de consultas processadas simultaneamente por usuário.

Valores possíveis:

* Inteiro positivo.
* 0 — Sem limite.

**Exemplo**

```xml theme={null}
<max_concurrent_queries_for_user>5</max_concurrent_queries_for_user>
```

<div id="max_consume_snapshots">
  ## max\_consume\_snapshots
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "0"},{"label": "Nova configuração."}]}]} />

Número máximo de snapshots do Paimon a consumir por leitura incremental. 0 significa que não há limite.

<div id="max_distributed_connections">
  ## max\_distributed\_connections
</div>

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

O número máximo de conexões simultâneas com servidores remotos para o processamento distribuído de uma única consulta em uma única tabela Distributed. Recomendamos definir um valor no mínimo igual ao número de servidores no cluster.

Os parâmetros a seguir são usados apenas ao criar tabelas Distributed (e ao iniciar o servidor), portanto não há motivo para alterá-los em tempo de execução.

<div id="max_distributed_depth">
  ## max\_distributed\_depth
</div>

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

Limita a profundidade máxima de consultas recursivas em tabelas [Distributed](/pt-BR/reference/engines/table-engines/special/distributed).

Se esse valor for excedido, o servidor lança uma exceção.

Valores possíveis:

* Inteiro positivo.
* 0 — Profundidade ilimitada.

<div id="max_download_buffer_size">
  ## max\_download\_buffer\_size
</div>

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

O tamanho máximo do buffer para download em paralelo por thread (por exemplo, para URL engine).

<div id="max_download_threads">
  ## max\_download\_threads
</div>

<SettingsInfoBlock type="MaxThreads" default_value="4" />

O número máximo de threads para fazer download de dados (por exemplo, para o URL engine).

<div id="max_estimated_execution_time">
  ## max\_estimated\_execution\_time
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.1"},{"label": "0"},{"label": "Separados max_execution_time e max_estimated_execution_time"}]}]} />

Tempo máximo estimado de execução da consulta, em segundos. Verificado em cada bloco de dados
quando [`timeout_before_checking_execution_speed`](/pt-BR/reference/settings/session-settings#timeout_before_checking_execution_speed)
é atingido.

<div id="max_execution_speed">
  ## max\_execution\_speed
</div>

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

O número máximo de linhas processadas por segundo. Verificado em cada bloco de dados quando
[`timeout_before_checking_execution_speed`](/pt-BR/reference/settings/session-settings#timeout_before_checking_execution_speed)
expira. Se a velocidade de execução estiver alta, ela será reduzida.

<div id="max_execution_speed_bytes">
  ## max\_execution\_speed\_bytes
</div>

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

O número máximo de bytes processados por segundo. É verificado em cada bloco de dados quando
[`timeout_before_checking_execution_speed`](/pt-BR/reference/settings/session-settings#timeout_before_checking_execution_speed)
expira. Se a velocidade de execução for alta, ela será reduzida.

<div id="max_execution_time">
  ## max\_execution\_time
</div>

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

O tempo máximo de execução da consulta, em segundos.

O parâmetro `max_execution_time` pode ser um pouco difícil de entender.
Ele funciona com base em interpolação em relação à velocidade atual de execução da consulta
(esse comportamento é controlado por [`timeout_before_checking_execution_speed`](/pt-BR/reference/settings/session-settings#timeout_before_checking_execution_speed)).

O ClickHouse interromperá uma consulta se o tempo de execução projetado exceder o
`max_execution_time` especificado. Por padrão, `timeout_before_checking_execution_speed`
é definido como 10 segundos. Isso significa que, após 10 segundos de execução da consulta, o ClickHouse
começará a estimar o tempo total de execução. Se, por exemplo, `max_execution_time`
for definido como 3600 segundos (1 hora), o ClickHouse encerrará a consulta se o tempo estimado
ultrapassar esse limite de 3600 segundos. Se você definir `timeout_before_checking_execution_speed`
como 0, o ClickHouse usará o tempo de relógio como base para `max_execution_time`.

Se o tempo de execução da consulta exceder o número especificado de segundos, o comportamento será
determinado por 'timeout\_overflow\_mode', que, por padrão, é definido como `throw`.

<Note>
  O timeout é verificado, e a consulta só pode ser interrompida em pontos específicos durante o processamento de dados.
  Atualmente, ela não pode ser interrompida durante a mesclagem de estados de agregação nem durante a análise da consulta,
  e o tempo real de execução será maior que o valor dessa configuração.
</Note>

<div id="max_execution_time_leaf">
  ## max\_execution\_time\_leaf
</div>

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

Semanticamente semelhante a [`max_execution_time`](#max_execution_time), mas aplicado apenas
aos nós folha em consultas distribuídas ou remotas.

Por exemplo, se quisermos limitar o tempo de execução em um nó folha a `10s`, mas
não houver limite no nó inicial, em vez de definir `max_execution_time` nas
configurações da subconsulta aninhada:

```sql theme={null}
SELECT count()
FROM cluster(cluster, view(SELECT * FROM t SETTINGS max_execution_time = 10));
```

Podemos usar `max_execution_time_leaf` nas configurações da consulta:

```sql theme={null}
SELECT count()
FROM cluster(cluster, view(SELECT * FROM t)) SETTINGS max_execution_time_leaf = 10;
```

<div id="max_expanded_ast_elements">
  ## max\_expanded\_ast\_elements
</div>

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

Tamanho máximo da árvore de sintaxe da consulta, em número de nós, após a expansão de aliases e do asterisco.

<div id="max_fetch_partition_retries_count">
  ## max\_fetch\_partition\_retries\_count
</div>

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

Número de tentativas ao buscar uma partição em outro host.

<div id="max_final_threads">
  ## max\_final\_threads
</div>

<SettingsInfoBlock type="MaxThreads" default_value="'auto(N)'" />

Define o número máximo de threads paralelas para a fase de leitura de dados da consulta `SELECT` com o modificador [FINAL](/pt-BR/reference/statements/select/from#final-modifier).

Valores possíveis:

* Inteiro positivo.
* 0 ou 1 — Desativado. As consultas `SELECT` são executadas em uma única thread.

<div id="max_http_get_redirects">
  ## max\_http\_get\_redirects
</div>

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

Número máximo de saltos de redirecionamento HTTP GET permitidos. Isso garante medidas adicionais de segurança para impedir que um servidor malicioso redirecione suas requisições para serviços inesperados.\n\nIsso pode acontecer quando um servidor externo redireciona para outro endereço, mas esse endereço parece ser interno à infraestrutura da empresa e, ao enviar uma requisição HTTP para um servidor interno, você pode acessar uma API interna pela rede interna, contornando a autenticação, ou até mesmo consultar outros serviços, como Redis ou Memcached. Se você não tem uma infraestrutura interna (incluindo algo em execução no seu localhost) ou confia no servidor, é seguro permitir redirecionamentos. Ainda assim, tenha em mente que, se a URL usar HTTP em vez de HTTPS, você terá de confiar não apenas no servidor remoto, mas também no seu ISP e em todas as redes intermediárias.

Valor padrão no Cloud: `10`.

<div id="max_hyperscan_regexp_length">
  ## max\_hyperscan\_regexp\_length
</div>

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

Define o tamanho máximo de cada expressão regular nas [funções hyperscan multi-match](/pt-BR/reference/functions/regular-functions/string-search-functions#multiMatchAny).

Valores possíveis:

* Inteiro positivo.
* 0 - O tamanho não é limitado.

**Exemplo**

Consulta:

```sql theme={null}
SELECT multiMatchAny('abcd', ['ab','bcd','c','d']) SETTINGS max_hyperscan_regexp_length = 3;
```

Resultado:

```text theme={null}
┌─multiMatchAny('abcd', ['ab', 'bcd', 'c', 'd'])─┐
│                                              1 │
└────────────────────────────────────────────────┘
```

Consulta:

```sql theme={null}
SELECT multiMatchAny('abcd', ['ab','bcd','c','d']) SETTINGS max_hyperscan_regexp_length = 2;
```

Resultado:

```text theme={null}
Exception: Regexp length too large.
```

**Veja também**

* [max\_hyperscan\_regexp\_total\_length](#max_hyperscan_regexp_total_length)

<div id="max_hyperscan_regexp_total_length">
  ## max\_hyperscan\_regexp\_total\_length
</div>

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

Define o comprimento total máximo de todas as expressões regulares em cada [hyperscan multi-match function](/pt-BR/reference/functions/regular-functions/string-search-functions#multiMatchAny).

Valores possíveis:

* Inteiro positivo.
* 0 — O comprimento não é limitado.

**Exemplo**

Consulta:

```sql theme={null}
SELECT multiMatchAny('abcd', ['a','b','c','d']) SETTINGS max_hyperscan_regexp_total_length = 5;
```

Resultado:

```text theme={null}
┌─multiMatchAny('abcd', ['a', 'b', 'c', 'd'])─┐
│                                           1 │
└─────────────────────────────────────────────┘
```

Consulta:

```sql theme={null}
SELECT multiMatchAny('abcd', ['ab','bc','c','d']) SETTINGS max_hyperscan_regexp_total_length = 5;
```

Resultado:

```text theme={null}
Exception: Total regexp lengths too large.
```

**Veja também**

* [max\_hyperscan\_regexp\_length](#max_hyperscan_regexp_length)

<div id="max_insert_block_size">
  ## max\_insert\_block\_size
</div>

**Aliases**: `max_insert_block_size_rows`

<SettingsInfoBlock type="NonZeroUInt64" default_value="1048449" />

O tamanho máximo dos blocos (em número de linhas) a serem formados para inserção em uma tabela.

Essa configuração controla a formação de blocos em dois contextos:

1. Análise de formato: quando o servidor analisa formatos de entrada baseados em linhas (CSV, TSV, JSONEachRow etc.) de qualquer interface (HTTP, clickhouse-client com dados inline, gRPC, PostgreSQL wire protocol), os blocos são emitidos quando:

   * min\_insert\_block\_size\_rows AND min\_insert\_block\_size\_bytes são atingidos, OR
   * max\_insert\_block\_size\_rows OR max\_insert\_block\_size\_bytes é atingido

   Observação: ao usar clickhouse-client ou clickhouse-local para ler de um arquivo, o próprio cliente analisa os dados, e essa configuração se aplica no lado do cliente.

2. Operações de INSERT: durante consultas INSERT e quando os dados passam por visões materializadas, o comportamento dessa configuração depende de `use_strict_insert_block_limits`:

   * Quando habilitada: os blocos são emitidos quando:
     * Limiares mínimos (AND): min\_insert\_block\_size\_rows AND min\_insert\_block\_size\_bytes são atingidos
     * Limiares máximos (OR): max\_insert\_block\_size\_rows OR max\_insert\_block\_size\_bytes é atingido

   * Quando desabilitada: os blocos são emitidos quando min\_insert\_block\_size\_rows OR min\_insert\_block\_size\_bytes é atingido. As configurações de max\_insert\_block\_size não são aplicadas.

Valores possíveis:

* Inteiro positivo.

<div id="max_insert_block_size_bytes">
  ## max\_insert\_block\_size\_bytes
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.1"},{"label": "0"},{"label": "Nova configuração que permite controlar o tamanho dos blocos, em bytes, durante a análise de dados no formato Row Input."}]}]} />

O tamanho máximo dos blocos (em bytes) a serem formados para inserção em uma tabela.

Esta configuração funciona em conjunto com max\_insert\_block\_size\_rows e controla a formação de blocos no mesmo contexto. Consulte max\_insert\_block\_size\_rows para informações detalhadas sobre quando e como essas configurações são aplicadas.

Valores possíveis:

* Inteiro positivo.
* 0 — a configuração não participa da formação de blocos.

<div id="max_insert_delayed_streams_for_parallel_write">
  ## max\_insert\_delayed\_streams\_for\_parallel\_write
</div>

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

O número máximo de streams (colunas) para atrasar o flush final da part. Padrão: automático (100 caso o armazenamento subjacente tenha suporte a gravação paralela, por exemplo, S3, e desativado caso contrário)

Valor padrão no Cloud: `50`.

<div id="max_insert_threads">
  ## max\_insert\_threads
</div>

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

O número máximo de threads para executar a consulta `INSERT SELECT`.

Valores possíveis:

* 0 (ou 1) — `INSERT SELECT` sem execução em paralelo.
* Inteiro positivo, maior que 1.

Valor padrão do Cloud:

* `1` para nós com 8 GiB de memória
* `2` para nós com 16 GiB de memória
* `4` para nós maiores

O `INSERT SELECT` em paralelo só tem efeito se a parte `SELECT` for executada em paralelo. Consulte a configuração [`max_threads`](#max_threads).
Valores mais altos resultarão em maior uso de memória.

<div id="max_insert_threads_min_free_memory_per_thread">
  ## max\_insert\_threads\_min\_free\_memory\_per\_thread
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "4294967296"},{"label": "Nova configuração para limitar o número de threads de inserção com base na memória livre disponível"}]}]} />

Igual a `max_threads_min_free_memory_per_thread`, mas aplicada a `max_insert_threads` em vez de `max_threads`. O valor padrão é maior porque pipelines de inserção normalmente mantêm buffers por thread maiores (partes do MergeTree, blocos de compressão) do que pipelines de leitura.

Se a quantidade de memória livre for menor que `max_insert_threads` multiplicado por esse valor, `max_insert_threads` será reduzido para se adequar, até um mínimo de `1`.

Defina como `0` para desativar esse limite.

<div id="max_joined_block_size_bytes">
  ## max\_joined\_block\_size\_bytes
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "4194304"},{"label": "Nova configuração"}]}]} />

Tamanho máximo, em bytes, do bloco para o resultado do JOIN (se o algoritmo de join oferecer suporte). 0 significa ilimitado.

<div id="max_joined_block_size_rows">
  ## max\_joined\_block\_size\_rows
</div>

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

Tamanho máximo do bloco para o resultado do JOIN (se o algoritmo de join oferecer suporte). 0 significa ilimitado.

<div id="max_limit_for_vector_search_queries">
  ## max\_limit\_for\_vector\_search\_queries
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "1000"},{"label": "Nova configuração"}]}]} />

Consultas SELECT com LIMIT maior do que o definido nessa configuração não podem usar índices de similaridade vetorial. Isso ajuda a evitar estouros de memória nesses índices.

<div id="max_local_read_bandwidth">
  ## max\_local\_read\_bandwidth
</div>

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

A velocidade máxima das leituras locais em bytes por segundo.

<div id="max_local_write_bandwidth">
  ## max\_local\_write\_bandwidth
</div>

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

A velocidade máxima das gravações locais em bytes por segundo.

<div id="max_memory_usage">
  ## max\_memory\_usage
</div>

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

Valor padrão no Cloud: depende da quantidade de RAM na réplica.

A quantidade máxima de RAM usada para executar uma consulta em um único servidor.
Um valor de `0` significa ilimitado.

Essa configuração não considera o volume de memória disponível nem o volume total
de memória da máquina. A restrição se aplica a uma única consulta em um
único servidor.

Você pode usar `SHOW PROCESSLIST` para ver o consumo de memória atual de cada consulta.
O pico de consumo de memória é rastreado para cada consulta e registrado no log.

O uso de memória não é totalmente rastreado para os estados das seguintes funções de agregação
com argumentos `String` e `Array`:

* `min`
* `max`
* `any`
* `anyLast`
* `argMin`
* `argMax`

O consumo de memória também é limitado pelos parâmetros [`max_memory_usage_for_user`](/pt-BR/reference/settings/session-settings#max_memory_usage_for_user)
e [`max_server_memory_usage`](/pt-BR/reference/settings/server-settings/settings#max_server_memory_usage).

<div id="max_memory_usage_for_user">
  ## max\_memory\_usage\_for\_user
</div>

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

A quantidade máxima de RAM usada para executar as consultas de um usuário em um único servidor. Zero significa ilimitado.

Por padrão, essa quantidade não é restrita (`max_memory_usage_for_user = 0`).

Veja também a descrição de [`max_memory_usage`](/pt-BR/reference/settings/session-settings#max_memory_usage).

Por exemplo, se você quiser definir `max_memory_usage_for_user` como 1000 bytes para um usuário chamado `clickhouse_read`, poderá usar a instrução

```sql theme={null}
ALTER USER clickhouse_read SETTINGS max_memory_usage_for_user = 1000;
```

Você pode verificar se funcionou saindo do cliente, entrando novamente e usando a função `getSetting`:

```sql theme={null}
SELECT getSetting('max_memory_usage_for_user');
```

<div id="max_network_bandwidth">
  ## max\_network\_bandwidth
</div>

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

Limita a velocidade da transferência de dados pela rede em bytes por segundo. Esta configuração se aplica a cada consulta.

Valores possíveis:

* Inteiro positivo.
* 0 — O controle de largura de banda está desativado.

<div id="max_network_bandwidth_for_all_users">
  ## max\_network\_bandwidth\_for\_all\_users
</div>

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

Limita a velocidade com que os dados são transferidos pela rede, em bytes por segundo. Esta configuração se aplica a todas as consultas executadas simultaneamente no servidor.

Valores possíveis:

* Inteiro positivo.
* 0 — O controle da taxa de transferência de dados está desabilitado.

<div id="max_network_bandwidth_for_user">
  ## max\_network\_bandwidth\_for\_user
</div>

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

Limita a velocidade da transferência de dados pela rede em bytes por segundo. Essa configuração se aplica a todas as consultas executadas simultaneamente por um único usuário.

Valores possíveis:

* Inteiro positivo.
* 0 — O controle da velocidade de transferência de dados está desabilitado.

<div id="max_network_bytes">
  ## max\_network\_bytes
</div>

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

Limita o volume de dados (em bytes) recebido ou transmitido pela rede durante a execução de uma consulta. Essa configuração se aplica a cada consulta individual.

Valores possíveis:

* Inteiro positivo.
* 0 — O controle do volume de dados está desativado.

<div id="max_number_of_partitions_for_independent_aggregation">
  ## max\_number\_of\_partitions\_for\_independent\_aggregation
</div>

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

Número máximo de partições na tabela para aplicar a otimizaçã

<div id="max_os_cpu_wait_time_ratio_to_throw">
  ## max\_os\_cpu\_wait\_time\_ratio\_to\_throw
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "0"},{"label": "Os valores da configuração foram alterados e backportados para a 25.4"}]}, {"id": "row-2","items": [{"label": "25.4"},{"label": "0"},{"label": "Nova configuração"}]}]} />

Proporção máxima entre os tempos de espera de CPU do SO (métrica OSCPUWaitMicroseconds) e de uso (métrica OSCPUVirtualTimeMicroseconds) para considerar a rejeição de consultas. A interpolação linear entre a proporção mínima e a máxima é usada para calcular a probabilidade; a probabilidade é 1 neste ponto.

<div id="max_parallel_replicas">
  ## max\_parallel\_replicas
</div>

<SettingsInfoBlock type="NonZeroUInt64" default_value="1000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "1000"},{"label": "Usa até 1000 réplicas paralelas por padrão."}]}]} />

O número máximo de réplicas para cada shard ao executar uma consulta.

Possíveis valores:

* Inteiro positivo.

**Informações adicionais**

Essa opção pode produzir resultados diferentes, dependendo das configurações usadas.

<div id="parallel-processing-using-sample-key">
  ### Processamento em paralelo usando a chave `SAMPLE`
</div>

Uma consulta pode ser processada mais rapidamente se for executada em vários servidores em paralelo. Mas o desempenho da consulta pode piorar nos seguintes casos:

* A posição da chave de amostragem na chave de particionamento não permite varreduras por intervalo eficientes.
* Adicionar uma chave de amostragem à tabela torna menos eficiente a filtragem por outras colunas.
* A chave de amostragem é uma expressão cara de calcular.
* A distribuição de latência do cluster tem uma cauda longa, de modo que consultar mais servidores aumenta a latência geral da consulta.

<div id="parallel-processing-using-parallel_replicas_custom_keyparallel_replicas_custom_key">
  ### Processamento paralelo com [parallel\_replicas\_custom\_key](#parallel_replicas_custom_key)
</div>

Essa configuração é útil para qualquer tabela replicada.

<div id="max_parser_backtracks">
  ## max\_parser\_backtracks
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "1000000"},{"label": "Limitando a complexidade da análise sintática"}]}]} />

Número máximo de retrocessos do analisador sintático (quantas vezes ele tenta alternativas diferentes durante o processo de análise descendente recursiva).

<div id="max_parser_depth">
  ## max\_parser\_depth
</div>

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

Limita a profundidade máxima de recursão no parser recursivo descendente. Permite controlar o tamanho da pilha.

Valores possíveis:

* Inteiro positivo.
* 0 — A profundidade de recursão é ilimitada.

<div id="max_parsing_threads">
  ## max\_parsing\_threads
</div>

<SettingsInfoBlock type="MaxThreads" default_value="'auto(N)'" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.4"},{"label": "0"},{"label": "Adicionada uma configuração separada para controlar o número de threads no parsing em paralelo de arquivos"}]}]} />

O número máximo de threads para fazer o parsing de dados em formatos de entrada que suportam parsing em paralelo. Por padrão, ele é determinado automaticamente.

<div id="max_partition_size_to_drop">
  ## max\_partition\_size\_to\_drop
</div>

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

Restrição para remover partições durante a consulta. O valor `0` significa que você pode remover partições sem restrições.

Valor padrão no Cloud: 1 TB.

<Note>
  Esta configuração de consulta substitui a configuração equivalente no servidor; consulte [max\_partition\_size\_to\_drop](/pt-BR/reference/settings/server-settings/settings#max_partition_size_to_drop)
</Note>

<div id="max_partitions_per_insert_block">
  ## max\_partitions\_per\_insert\_block
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "19.5"},{"label": "100"},{"label": "Adicionado um limite para o número de partições em um bloco"}]}]} />

Limita o número máximo de partições em um único bloco inserido,
e uma exceção é gerada se o bloco contiver partições demais.

* Inteiro positivo.
* `0` — Número ilimitado de partições.

**Detalhes**

Ao inserir dados, o ClickHouse calcula o número de partições no
bloco inserido. Se o número de partições for maior que
`max_partitions_per_insert_block`, o ClickHouse registra um aviso ou gera uma
exceção com base em `throw_on_max_partitions_per_insert_block`. As exceções têm
o seguinte texto:

> "Partições demais em um único bloco INSERT (`partitions_count` partições, o limite é " + toString(max\_partitions) + ").
> O limite é controlado pela configuração 'max\_partitions\_per\_insert\_block'.
> Um grande número de partições é um equívoco comum. Isso causará um grave
> impacto negativo no desempenho, incluindo inicialização lenta do servidor, consultas INSERT lentas
> e consultas SELECT lentas. O número total recomendado de partições para uma tabela é
> abaixo de 1000..10000. Observe que o particionamento não se destina a acelerar
> consultas SELECT (a ORDER BY key é suficiente para tornar consultas de intervalo rápidas).
> As partições se destinam à manipulação de dados (DROP PARTITION, etc)."

<Note>
  Essa configuração é um limite de segurança, porque usar um grande número de partições é um equívoco comum.
</Note>

<div id="max_partitions_to_read">
  ## max\_partitions\_to\_read
</div>

<SettingsInfoBlock type="Int64" default_value="-1" />

Limita o número máximo de partições que podem ser acessadas em uma única consulta.

O valor da configuração especificado quando a tabela é criada pode ser substituído por uma configuração no nível da consulta.

Valores possíveis:

* Inteiro positivo
* `-1` - ilimitado (padrão)

<Note>
  Você também pode especificar a configuração do MergeTree [`max_partitions_to_read`](/pt-BR/reference/settings/session-settings#max_partitions_to_read) nas configurações da tabela.
</Note>

<div id="max_parts_to_move">
  ## max\_parts\_to\_move
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.10"},{"label": "1000"},{"label": "Nova configuração"}]}]} />

Limita o número de partes que podem ser movidas em uma consulta. Zero significa sem limite.

<div id="max_projection_rows_to_use_projection_index">
  ## max\_projection\_rows\_to\_use\_projection\_index
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.11"},{"label": "1000000"},{"label": "Nova configuração"}]}]} />

Se o número de linhas lidas do índice de projeção for menor ou igual a esse limite, o ClickHouse tentará aplicar o índice de projeção durante a execução da consulta.

<div id="max_query_size">
  ## max\_query\_size
</div>

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

O número máximo de bytes de uma string de consulta analisada pelo parser SQL.
Os dados na cláusula VALUES de consultas INSERT são processados por um parser de fluxo separado (que consome O(1) de RAM) e não são afetados por essa restrição.

<Note>
  `max_query_size` não pode ser definido dentro de uma consulta SQL (por exemplo, `SELECT now() SETTINGS max_query_size=10000`) porque o ClickHouse precisa alocar um buffer para analisar a consulta, e o tamanho desse buffer é determinado pela configuração `max_query_size`, que deve ser definida antes da execução da consulta.
</Note>

<div id="max_rand_distribution_parameter">
  ## max\_rand\_distribution\_parameter
</div>

<SettingsInfoBlock type="Float" default_value="1000000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "1000000"},{"label": "Nova configuração para limitar os parâmetros de forma em funções de distribuição aleatória, evitando travamentos com entradas extremas."}]}]} />

Valor máximo para os parâmetros de forma da distribuição em funções de distribuição aleatória, como `randChiSquared`, `randStudentT` e `randFisherF`. Isso evita tempos de computação extremamente longos com valores extremos dos parâmetros.

<div id="max_rand_distribution_trials">
  ## max\_rand\_distribution\_trials
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "1000000000"},{"label": "Nova configuração para limitar o número de tentativas em funções de distribuição aleatória, evitando travamentos com entradas extremas."}]}]} />

Número máximo de tentativas permitido para funções de distribuição aleatória, como `randBinomial` e `randNegativeBinomial`. Isso evita tempos de processamento excessivamente longos com um grande número de tentativas.

<div id="max_read_buffer_size">
  ## max\_read\_buffer\_size
</div>

<SettingsInfoBlock type="NonZeroUInt64" default_value="1048576" />

O tamanho máximo do buffer para leitura do filesystem.

<div id="max_read_buffer_size_local_fs">
  ## max\_read\_buffer\_size\_local\_fs
</div>

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

O tamanho máximo do buffer para leitura no sistema de arquivos local. Se definido como 0, `max_read_buffer_size` será usado.

<div id="max_read_buffer_size_remote_fs">
  ## max\_read\_buffer\_size\_remote\_fs
</div>

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

O tamanho máximo do buffer para leitura em um filesystem remoto. Se for definido como 0, `max_read_buffer_size` será usado.

<div id="max_recursive_cte_evaluation_depth">
  ## max\_recursive\_cte\_evaluation\_depth
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.4"},{"label": "1000"},{"label": "Limite máximo para a profundidade de avaliação de CTEs recursivas"}]}]} />

Limite máximo para a profundidade de avaliação de CTEs recursivas

<div id="max_remote_read_network_bandwidth">
  ## max\_remote\_read\_network\_bandwidth
</div>

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

A velocidade máxima de transferência de dados pela rede, em bytes por segundo, para leitura.

<div id="max_remote_write_network_bandwidth">
  ## max\_remote\_write\_network\_bandwidth
</div>

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

A velocidade máxima de transferência de dados pela rede, em bytes por segundo, para gravação.

<div id="max_replica_delay_for_distributed_queries">
  ## max\_replica\_delay\_for\_distributed\_queries
</div>

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

Desativa réplicas com defasagem em consultas distribuídas. Veja [Replicação](/pt-BR/reference/engines/table-engines/mergetree-family/replication).

Define o tempo em segundos. Se a defasagem de uma réplica for maior ou igual ao valor definido, essa réplica não será usada.

Valores possíveis:

* Inteiro positivo.
* 0 — A defasagem das réplicas não é verificada.

Para evitar o uso de qualquer réplica com defasagem diferente de zero, defina este parâmetro como 1.

Usado ao executar `SELECT` em uma tabela distribuída que aponta para tabelas replicadas.

<div id="max_result_bytes">
  ## max\_result\_bytes
</div>

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

Limita o tamanho do resultado em bytes (sem compressão). A consulta será interrompida após o processamento de um bloco de dados se o limite for atingido,
mas o último bloco do resultado não será cortado; portanto, o tamanho do resultado pode ser maior que esse limite.

**Observações**

O tamanho do resultado na memória é considerado para esse limite.
Mesmo que o tamanho do resultado seja pequeno, ele pode fazer referência a estruturas de dados maiores na memória,
como dicionários de colunas LowCardinality e Arenas de colunas AggregateFunction,
portanto o limite pode ser excedido apesar do pequeno tamanho do resultado.

<Warning>
  Essa configuração é de baixo nível e deve ser usada com cautela
</Warning>

<div id="max_result_rows">
  ## max\_result\_rows
</div>

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

Valor padrão no Cloud: `0`.

Limita o número de linhas no resultado. Também é verificado para subconsultas e em servidores remotos ao executar partes de uma consulta Distributed.
Nenhum limite é aplicado quando o valor é `0`.

A consulta será interrompida após processar um bloco de dados se o limite for atingido, mas
não cortará o último bloco do resultado; portanto, o tamanho do resultado pode ser
maior que o limite.

<div id="max_reverse_dictionary_lookup_cache_size_bytes">
  ## max\_reverse\_dictionary\_lookup\_cache\_size\_bytes
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "104857600"},{"label": "Nova configuração. Tamanho máximo, em bytes, do cache por consulta de lookup reverso em dicionário usado pela função `dictGetKeys`. O cache armazena tuplas de chave serializadas por valor de atributo para evitar varrer o dicionário novamente na mesma consulta."}]}]} />

Tamanho máximo, em bytes, do cache por consulta de lookup reverso em dicionário usado pela função `dictGetKeys`. O cache armazena tuplas de chave serializadas por valor de atributo para evitar varrer o dicionário novamente na mesma consulta. Quando o limite é atingido, as entradas são removidas usando LRU. Defina como 0 para desativar o cache.

<div id="max_rows_for_lazy_final">
  ## max\_rows\_for\_lazy\_final
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "10000000"},{"label": "Nova configuração para o número máximo de linhas no conjunto para a otimização lazy FINAL"}]}]} />

Número máximo de linhas no conjunto para a otimização lazy FINAL. Se esse limite for excedido, recorre ao FINAL normal.

<div id="max_rows_in_distinct">
  ## max\_rows\_in\_distinct
</div>

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

O número máximo de linhas distintas ao usar DISTINCT.

<div id="max_rows_in_join">
  ## max\_rows\_in\_join
</div>

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

Limita o número de linhas na tabela hash usada em junções entre tabelas.

Esta configuração se aplica às operações [SELECT ... JOIN](/pt-BR/reference/statements/select/join)
e ao motor de tabela [Join](/pt-BR/reference/engines/table-engines/special/join).

Se uma consulta contiver várias junções, o ClickHouse verificará essa configuração para cada resultado intermediário.

O ClickHouse pode prosseguir com diferentes ações quando o limite for atingido. Use a
configuração [`join_overflow_mode`](/pt-BR/reference/settings/session-settings#join_overflow_mode) para escolher a ação.

Valores possíveis:

* Inteiro positivo.
* `0` — Número ilimitado de linhas.

<div id="max_rows_in_set">
  ## max\_rows\_in\_set
</div>

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

O número máximo de linhas de um conjunto de dados na cláusula IN criado a partir de uma subconsulta.

<div id="max_rows_in_set_to_optimize_join">
  ## max\_rows\_in\_set\_to\_optimize\_join
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.1"},{"label": "0"},{"label": "Desativa a otimização de join, pois ela impede a otimização de leitura em ordem"}]}]} />

Tamanho máximo do conjunto usado para filtrar tabelas em join pelos conjuntos de linhas umas das outras antes do join.

Valores possíveis:

* 0 — Desativa.
* Qualquer inteiro positivo.

<div id="max_rows_to_group_by">
  ## max\_rows\_to\_group\_by
</div>

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

O número máximo de chaves únicas geradas pela agregação. Essa configuração permite
limitar o consumo de memória durante a agregação.

Se a agregação durante o GROUP BY gerar mais do que o número especificado de
linhas (chaves únicas de GROUP BY), o comportamento será determinado por
'group\_by\_overflow\_mode', que por padrão é `throw`, mas também pode ser alterado
para um modo aproximado de GROUP BY.

<div id="max_rows_to_read">
  ## max\_rows\_to\_read
</div>

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

O número máximo de linhas que podem ser lidas de uma tabela ao executar uma consulta.
A restrição é verificada em cada fragmento de dados processado, aplicada apenas à
expressão de tabela mais interna e, ao ler de um servidor remoto, verificada apenas no
servidor remoto.

<div id="max_rows_to_read_leaf">
  ## max\_rows\_to\_read\_leaf
</div>

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

O número máximo de linhas que podem ser lidas de uma tabela local em um nó folha ao
executar uma consulta distribuída. Embora as consultas distribuídas possam emitir várias subconsultas
para cada shard (folha), esse limite será verificado apenas na etapa de leitura nos
nós folha e ignorado na etapa de mesclagem de resultados no nó raiz.

Por exemplo, um cluster consiste em 2 shards, e cada shard contém uma tabela com
100 linhas. A consulta distribuída que deve ler todos os dados de ambas as
tabelas com a configuração `max_rows_to_read=150` falhará, pois, no total, haverá
200 linhas. Uma consulta com `max_rows_to_read_leaf=150` terá êxito, já que os nós folha
lerão no máximo 100 linhas.

A restrição é verificada para cada fragmento de dados processado.

<Note>
  Essa configuração é instável com `prefer_localhost_replica=1`.
</Note>

<div id="max_rows_to_sort">
  ## max\_rows\_to\_sort
</div>

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

O número máximo de linhas antes da ordenação. Isso permite limitar o consumo de memória durante a ordenação.
Se mais do que a quantidade especificada de registros precisar ser processada para a operação ORDER BY,
o comportamento será determinado por `sort_overflow_mode`, que por padrão é definido como `throw`.

<div id="max_rows_to_transfer">
  ## max\_rows\_to\_transfer
</div>

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

Número máximo de linhas que podem ser enviadas a um servidor remoto ou salvas em uma
tabela temporária quando a seção GLOBAL IN/JOIN é executada.

<div id="max_sessions_for_user">
  ## max\_sessions\_for\_user
</div>

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

Número máximo de sessões simultâneas por usuário autenticado no servidor ClickHouse.

Exemplo:

```xml theme={null}
<profiles>
    <single_session_profile>
        <max_sessions_for_user>1</max_sessions_for_user>
    </single_session_profile>
    <two_sessions_profile>
        <max_sessions_for_user>2</max_sessions_for_user>
    </two_sessions_profile>
    <unlimited_sessions_profile>
        <max_sessions_for_user>0</max_sessions_for_user>
    </unlimited_sessions_profile>
</profiles>
<users>
    <!-- O usuário Alice pode se conectar a um servidor ClickHouse no máximo uma vez por vez. -->
    <Alice>
        <profile>single_session_user</profile>
    </Alice>
    <!-- O usuário Bob pode usar 2 sessões simultâneas. -->
    <Bob>
        <profile>two_sessions_profile</profile>
    </Bob>
    <!-- O usuário Charles pode usar um número ilimitado de sessões simultâneas. -->
    <Charles>
        <profile>unlimited_sessions_profile</profile>
    </Charles>
</users>
```

Valores possíveis:

* Inteiro positivo
* `0` - número infinito de sessões simultâneas (padrão)

<div id="max_size_to_preallocate_for_aggregation">
  ## max\_size\_to\_preallocate\_for\_aggregation
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.12"},{"label": "1000000000000"},{"label": "Habilita a otimização para tabelas maiores."}]}, {"id": "row-2","items": [{"label": "22.12"},{"label": "100000000"},{"label": "Otimiza o desempenho"}]}]} />

Para quantos elementos é permitido pré-alocar espaço, no total, em todas as tabelas hash antes da agregaçã

<div id="max_size_to_preallocate_for_joins">
  ## max\_size\_to\_preallocate\_for\_joins
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.7"},{"label": "100000000"},{"label": "Nova configuração."}]}, {"id": "row-2","items": [{"label": "24.12"},{"label": "1000000000000"},{"label": "Ativa a otimização para tabelas maiores."}]}]} />

Para quantos elementos é permitido pré-alocar, no total, espaço em todas as tabelas hash antes da jun

<div id="max_skip_unavailable_shards_num">
  ## max\_skip\_unavailable\_shards\_num
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": "0"},{"label": "Nova configuração para limitar o número de shards que podem ser ignorados silenciosamente quando skip_unavailable_shards está ativado."}]}]} />

Quando `skip_unavailable_shards` está ativado, limita o número máximo de shards que podem ser ignorados silenciosamente.
Se o número de shards indisponíveis exceder esse valor, uma exceção é lançada em vez de eles serem ignorados silenciosamente.

Um valor de 0 significa que não há limite (comportamento padrão — todos os shards indisponíveis podem ser ignorados).

<div id="max_skip_unavailable_shards_ratio">
  ## max\_skip\_unavailable\_shards\_ratio
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": "0"},{"label": "Nova configuração para limitar a proporção de shards que podem ser ignorados silenciosamente quando skip_unavailable_shards está ativado."}]}]} />

Quando `skip_unavailable_shards` está ativado, limita a proporção máxima (de 0 a 1) de shards que podem ser ignorados silenciosamente.
Se a proporção de shards indisponíveis em relação ao total de shards exceder esse valor, uma exceção será lançada em vez de serem ignorados silenciosamente.

Um valor de 0 significa que não há limite (comportamento padrão — todos os shards indisponíveis podem ser ignorados).

<div id="max_streams_for_files_processing_in_cluster_functions">
  ## max\_streams\_for\_files\_processing\_in\_cluster\_functions
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "0"},{"label": "Adiciona uma nova configuração que permite limitar o número de streams no processamento de arquivos em *funções de tabela Cluster*"}]}]} />

Se não for zero, limita o número de threads que leem dados de arquivos em *funções de tabela Cluster*.

<div id="max_streams_for_merge_tree_reading">
  ## max\_streams\_for\_merge\_tree\_reading
</div>

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

Se não for zero, limita o número de streams de leitura ao ler a tabela MergeTree.

<div id="max_streams_for_union_step">
  ## max\_streams\_for\_union\_step
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "0"},{"label": "Nova configuração para limitar o número de fluxos de dados ativos simultaneamente em uma etapa `UNION`, reduzindo o pico de memória."}]}]} />

Limita o número de fluxos de dados ativos simultaneamente em uma etapa `UNION` (aplica-se tanto a `UNION ALL` quanto a `UNION DISTINCT`, porque `UNION DISTINCT` é implementado por meio de uma etapa `UNION ALL` seguida de uma etapa `DISTINCT`). Quando uma consulta `UNION` tem muitas subconsultas, todas elas abrem seus buffers de leitura ao mesmo tempo, o que faz com que o uso de memória seja proporcional ao número de subconsultas. Essa configuração insere processadores `Concat` para afunilar o pipeline, de modo que, no máximo, essa quantidade de fluxos fique ativa ao mesmo tempo, reduzindo drasticamente o pico de memória. O limite real é o menor entre este valor e `max_threads * max_streams_for_union_step_to_max_threads_ratio` (se qualquer um dos dois for 0, ele será ignorado). Quando ambos são 0, nenhum afunilamento é aplicado.

<div id="max_streams_for_union_step_to_max_threads_ratio">
  ## max\_streams\_for\_union\_step\_to\_max\_threads\_ratio
</div>

<SettingsInfoBlock type="Float" default_value="8" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "8"},{"label": "Nova configuração: o limite de fluxos ativos simultaneamente em uma etapa de UNION é calculado como min(max_streams_for_union_step, max_threads * max_streams_for_union_step_to_max_threads_ratio); se qualquer um deles for 0, esse componente do cálculo será desabilitado."}]}]} />

Essa proporção, multiplicada por `max_threads`, determina um limite para a quantidade de fluxos ativos simultaneamente em uma etapa `UNION` (aplica-se tanto a `UNION ALL` quanto a `UNION DISTINCT`). O limite real é o menor entre esse valor calculado e `max_streams_for_union_step` (se qualquer um deles for 0, ele é ignorado). Por exemplo, com `max_threads = 8` e essa proporção definida como 1, no máximo 8 fluxos ficarão ativos. Defina como 0 para desabilitar esse limite baseado nessa proporção.

<div id="max_streams_multiplier_for_merge_tables">
  ## max\_streams\_multiplier\_for\_merge\_tables
</div>

<SettingsInfoBlock type="Float" default_value="5" />

Solicita mais streams ao ler de uma tabela Merge. As streams serão distribuídas entre as tabelas usadas pela tabela Merge. Isso permite uma distribuição mais uniforme do trabalho entre as threads e é especialmente útil quando as tabelas mescladas têm tamanhos diferentes.

<div id="max_streams_to_max_threads_ratio">
  ## max\_streams\_to\_max\_threads\_ratio
</div>

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

Permite usar mais fontes do que o número de threads, para distribuir o trabalho de maneira mais uniforme entre elas. Presume-se que esta seja uma solução temporária, já que no futuro será possível fazer com que o número de fontes seja igual ao número de threads, mas com cada fonte selecionando dinamicamente o trabalho disponível para si.

<div id="max_subquery_depth">
  ## max\_subquery\_depth
</div>

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

Se uma consulta tiver mais subconsultas aninhadas do que o número especificado, uma
exceção será gerada.

<Tip>
  Isso permite fazer uma verificação preventiva para evitar que os usuários do seu
  cluster escrevam consultas excessivamente complexas.
</Tip>

<div id="max_table_size_to_drop">
  ## max\_table\_size\_to\_drop
</div>

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

Restrição para excluir tabelas no momento da consulta. O valor `0` significa que você pode excluir todas as tabelas sem nenhuma restrição.

Valor padrão no Cloud: 1 TB.

<Note>
  Esta configuração de consulta substitui a configuração equivalente no servidor; consulte [max\_table\_size\_to\_drop](/pt-BR/reference/settings/server-settings/settings#max_table_size_to_drop)
</Note>

<div id="max_temporary_columns">
  ## max\_temporary\_columns
</div>

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

O número máximo de colunas temporárias que podem ser mantidas na RAM simultaneamente
durante a execução de uma consulta, incluindo colunas constantes. Se uma consulta gerar mais
colunas temporárias na memória do que o número especificado, como resultado de cálculos
intermediários, uma exceção será lançada.

<Tip>
  Essa configuração é útil para evitar consultas excessivamente complexas.
</Tip>

O valor `0` significa ilimitado.

<div id="max_temporary_data_on_disk_size_for_query">
  ## max\_temporary\_data\_on\_disk\_size\_for\_query
</div>

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

A quantidade máxima de dados consumida por arquivos temporários em disco, em bytes, para todas as
consultas em execução simultânea.

Valores possíveis:

* Inteiro positivo.
* `0` — ilimitado (padrão)

<div id="max_temporary_data_on_disk_size_for_user">
  ## max\_temporary\_data\_on\_disk\_size\_for\_user
</div>

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

A quantidade máxima de dados, em bytes, consumida por arquivos temporários no disco em todas as
consultas do usuário executadas simultaneamente.

Valores possíveis:

* Inteiro positivo.
* `0` — ilimitado (padrão)

<div id="max_temporary_non_const_columns">
  ## max\_temporary\_non\_const\_columns
</div>

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

Assim como `max_temporary_columns`, o número máximo de colunas temporárias que devem
ser mantidas na RAM simultaneamente durante a execução de uma consulta, sem contar as
colunas constantes.

<Note>
  Colunas constantes são geradas com bastante frequência durante a execução de uma consulta, mas exigem
  praticamente zero recursos computacionais.
</Note>

<div id="max_threads">
  ## max\_threads
</div>

<SettingsInfoBlock type="MaxThreads" default_value="'auto(N)'" />

O número máximo de threads de processamento de consultas, excluindo as threads usadas para recuperar dados de servidores remotos (consulte o parâmetro ['max\_distributed\_connections'](/pt-BR/reference/settings/session-settings#max_distributed_connections)).

Esse parâmetro se aplica a threads que executam, em paralelo, os mesmos estágios do pipeline de processamento da consulta.
Por exemplo, ao ler uma tabela, se for possível avaliar expressões com funções, filtrar com `WHERE` e pré-agregar para `GROUP BY` em paralelo usando pelo menos o número de threads definido por 'max\_threads', então 'max\_threads' será usado.

Para consultas concluídas rapidamente por causa de um LIMIT, você pode definir um valor menor para 'max\_threads'.
Por exemplo, se a quantidade necessária de registros estiver presente em cada bloco e max\_threads = 8, então 8 blocos serão recuperados, embora bastasse ler apenas um.
Quanto menor o valor de `max_threads`, menor o consumo de memória.

A configuração `max_threads`, por padrão, corresponde ao número de threads de hardware (número de CPU cores) disponíveis para o ClickHouse.
Como caso especial, para processadores x86 com menos de 32 CPU cores e SMT (por exemplo, Intel HyperThreading), o ClickHouse usa por padrão o número de núcleos lógicos (= 2 x número de núcleos físicos).

Sem SMT (por exemplo, Intel HyperThreading), isso corresponde ao número de CPU cores.

Para usuários do ClickHouse Cloud, o valor padrão será exibido como `auto(N)`, em que N corresponde ao tamanho de vCPU do seu serviço, por exemplo, 2vCPU/8GiB, 4vCPU/16GiB etc.
Consulte a aba de configurações no console do Cloud para ver uma lista de todos os tamanhos de serviço.

<div id="max_threads_for_indexes">
  ## max\_threads\_for\_indexes
</div>

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

O número máximo de threads que processam os índices.

<div id="max_threads_min_free_memory_per_thread">
  ## max\_threads\_min\_free\_memory\_per\_thread
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "1073741824"},{"label": "Nova configuração para limitar o número de threads com base na memória livre disponível"}]}]} />

Reduz `max_threads` quando o servidor está sob pressão de memória, para evitar iniciar consultas com alto paralelismo que provavelmente atingiriam o limite de memória.

A memória livre é calculada como o `max_server_memory_usage` do servidor menos a memória atualmente rastreada pelo memory tracker global. Se essa memória livre for menor que `max_threads` multiplicado por esse valor, `max_threads` será reduzido ao maior N tal que `N * value <= free_memory`, com mínimo de `1`.

Defina como `0` para desabilitar esse limite.

Por exemplo, com o padrão de 1 GiB e 32 GiB de memória livre, `max_threads` fica limitado a 32; com 1 GiB de memória livre, ele volta para 1.

Essa configuração se aplica ao paralelismo no lado da leitura (`SELECT`, `UNION`, `INTERSECT`/`EXCEPT` e o lado `SELECT` de `INSERT ... SELECT`). Para o lado da escrita, veja `max_insert_threads_min_free_memory_per_thread`.

<div id="max_untracked_memory">
  ## max\_untracked\_memory
</div>

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

Pequenas alocações e desalocações são agrupadas em uma variável local da thread e rastreadas ou analisadas pelo profiler apenas quando um valor (em valor absoluto) se torna maior que o valor especificado. Se o valor for maior que 'memory\_profiler\_step', ele será efetivamente reduzido para 'memory\_profiler\_step'.

<div id="max_wkb_geometry_elements">
  ## max\_wkb\_geometry\_elements
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "1000000"},{"label": "Nova configuração para limitar a quantidade de elementos na análise de geometrias WKB, evitando alocações excessivas de memória em dados malformados."}]}]} />

Número máximo de pontos, anéis ou polígonos permitidos em um único elemento de geometria WKB durante a análise por `readWKB` e funções relacionadas. Isso protege contra alocações excessivas de memória causadas por dados WKB malformados. Defina como 0 para usar o limite fixo no código (100 milhões).

<div id="memory_overcommit_ratio_denominator">
  ## memory\_overcommit\_ratio\_denominator
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "22.5"},{"label": "1073741824"},{"label": "Habilita o recurso memory overcommit por padrão"}]}]} />

Ele representa o limite flexível de memória quando o limite rígido é atingido em nível global.
Esse valor é usado para calcular a razão de overcommit da consulta.
Zero significa ignorar a consulta.
Leia mais sobre [memory overcommit](/pt-BR/concepts/features/configuration/settings/memory-overcommit).

<div id="memory_overcommit_ratio_denominator_for_user">
  ## memory\_overcommit\_ratio\_denominator\_for\_user
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "22.5"},{"label": "1073741824"},{"label": "Ativa o recurso de overcommit de memória por padrão"}]}]} />

Representa o limite flexível de memória quando o limite rígido é atingido no nível do usuário.
Esse valor é usado para calcular a razão de overcommit da consulta.
Zero significa ignorar a consulta.
Leia mais sobre [overcommit de memória](/pt-BR/concepts/features/configuration/settings/memory-overcommit).

<div id="memory_profiler_sample_max_allocation_size">
  ## memory\_profiler\_sample\_max\_allocation\_size
</div>

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

Coleta alocações aleatórias com tamanho menor ou igual ao valor especificado, com probabilidade igual a `memory_profiler_sample_probability`. 0 significa desabilitado. Talvez você queira definir 'max\_untracked\_memory' como 0 para que esse limite funcione como esperado.

<div id="memory_profiler_sample_min_allocation_size">
  ## memory\_profiler\_sample\_min\_allocation\_size
</div>

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

Coleta alocações aleatórias com tamanho maior ou igual ao valor especificado, com probabilidade igual a `memory_profiler_sample_probability`. 0 significa desabilitado. Talvez seja interessante definir 'max\_untracked\_memory' como 0 para que esse limite funcione como esperado.

<div id="memory_profiler_sample_probability">
  ## memory\_profiler\_sample\_probability
</div>

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

Coleta alocações e desalocações aleatórias e as grava em system.trace\_log com trace\_type 'MemorySample'. A probabilidade se aplica a cada operação de alloc/free, independentemente do tamanho da alocação (isso pode ser alterado com `memory_profiler_sample_min_allocation_size` e `memory_profiler_sample_max_allocation_size`). Observe que a amostragem ocorre apenas quando a quantidade de memória não rastreada excede 'max\_untracked\_memory'. Talvez você queira definir 'max\_untracked\_memory' como 0 para uma amostragem ainda mais granular.

<div id="memory_profiler_step">
  ## memory\_profiler\_step
</div>

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

Define o intervalo do profiler de memória. Sempre que o uso de memória da consulta ultrapassar cada próximo intervalo, em número de bytes, o profiler de memória coletará o stacktrace de alocação e o gravará em [trace\_log](/pt-BR/reference/system-tables/trace_log).

Valores possíveis:

* Um número inteiro positivo de bytes.

* 0 para desativar o profiler de memória.

<div id="memory_tracker_fault_probability">
  ## memory\_tracker\_fault\_probability
</div>

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

Para testar a `exception safety`, lance uma exceção sempre que alocar memória, com a probabilidade especificada.

<div id="memory_usage_overcommit_max_wait_microseconds">
  ## memory\_usage\_overcommit\_max\_wait\_microseconds
</div>

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

Tempo máximo que a thread aguardará a liberação de memória em caso de memory overcommit no nível do usuário.
Se o timeout for atingido e a memória não for liberada, uma exceção será lançada.
Leia mais sobre [memory overcommit](/pt-BR/concepts/features/configuration/settings/memory-overcommit).

<div id="merge_table_max_tables_to_look_for_schema_inference">
  ## merge\_table\_max\_tables\_to\_look\_for\_schema\_inference
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "1000"},{"label": "Uma nova configuração"}]}]} />

Ao criar uma tabela `Merge` sem um esquema explícito ou ao usar a função de tabela `merge`, infira o esquema como a união de, no máximo, o número especificado de tabelas correspondentes.
Se houver mais tabelas do que esse número, o esquema será inferido com base nas primeiras tabelas até o limite especificado.

<div id="merge_tree_coarse_index_granularity">
  ## merge\_tree\_coarse\_index\_granularity
</div>

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

Ao buscar dados, o ClickHouse verifica as marcas de dados no arquivo de índice. Se o ClickHouse constatar que as chaves necessárias estão em um determinado intervalo, ele divide esse intervalo em `merge_tree_coarse_index_granularity` subintervalos e busca recursivamente as chaves necessárias neles.

Valores possíveis:

* Qualquer número inteiro par positivo.

<div id="merge_tree_compact_parts_min_granules_to_multibuffer_read">
  ## merge\_tree\_compact\_parts\_min\_granules\_to\_multibuffer\_read
</div>

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

Só tem efeito no ClickHouse Cloud. Número de grânulos na stripe de uma parte compacta de tabelas MergeTree para usar o leitor multibuffer, que oferece suporte à leitura paralela e ao prefetch. No caso de leitura a partir de um sistema de arquivos remoto, o uso do leitor multibuffer aumenta o número de solicitações de leitura.

<div id="merge_tree_determine_task_size_by_prewhere_columns">
  ## merge\_tree\_determine\_task\_size\_by\_prewhere\_columns
</div>

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

Se deve usar apenas o tamanho das colunas `prewhere` para determinar o tamanho da tarefa de leitura.

<div id="merge_tree_max_bytes_to_use_cache">
  ## merge\_tree\_max\_bytes\_to\_use\_cache
</div>

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

Se o ClickHouse precisar ler mais de `merge_tree_max_bytes_to_use_cache` bytes em uma consulta, ele não usará o cache de blocos não comprimidos.

O cache de blocos não comprimidos armazena dados extraídos para consultas. O ClickHouse usa esse cache para acelerar as respostas a consultas pequenas e repetidas. Essa configuração protege o cache contra a degradação causada por consultas que leem uma grande quantidade de dados. A configuração do servidor [uncompressed\_cache\_size](/pt-BR/reference/settings/server-settings/settings#uncompressed_cache_size) define o tamanho do cache de blocos não comprimidos.

Valores possíveis:

* Qualquer número inteiro positivo.

<div id="merge_tree_max_rows_to_use_cache">
  ## merge\_tree\_max\_rows\_to\_use\_cache
</div>

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

Se o ClickHouse precisar ler mais de `merge_tree_max_rows_to_use_cache` linhas em uma consulta, ele não usará o cache de blocos descomprimidos.

O cache de blocos descomprimidos armazena dados extraídos para consultas. O ClickHouse usa esse cache para acelerar as respostas a consultas pequenas e repetidas. Essa configuração evita que o cache seja prejudicado por consultas que leem uma grande quantidade de dados. A configuração do servidor [uncompressed\_cache\_size](/pt-BR/reference/settings/server-settings/settings#uncompressed_cache_size) define o tamanho do cache de blocos descomprimidos.

Valores possíveis:

* Qualquer número inteiro positivo.

<div id="merge_tree_min_bytes_for_concurrent_read">
  ## merge\_tree\_min\_bytes\_for\_concurrent\_read
</div>

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

Se o número de bytes a serem lidos de um arquivo de uma tabela com o motor [MergeTree](/pt-BR/reference/engines/table-engines/mergetree-family/mergetree) exceder `merge_tree_min_bytes_for_concurrent_read`, o ClickHouse tentará ler esse arquivo de forma concorrente usando várias threads.

Valor possível:

* Inteiro positivo.

<div id="merge_tree_min_bytes_for_concurrent_read_for_remote_filesystem">
  ## merge\_tree\_min\_bytes\_for\_concurrent\_read\_for\_remote\_filesystem
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.10"},{"label": "0"},{"label": "Configuração obsoleta"}]}]} />

O número mínimo de bytes a serem lidos de um arquivo para que o motor [MergeTree](/pt-BR/reference/engines/table-engines/mergetree-family/mergetree) possa paralelizar a leitura ao ler de um sistema de arquivos remoto. Não recomendamos usar essa configuração.

Valores possíveis:

* Inteiro positivo.

<div id="merge_tree_min_bytes_for_seek">
  ## merge\_tree\_min\_bytes\_for\_seek
</div>

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

Se a distância entre dois blocos de dados a serem lidos em um arquivo for menor que `merge_tree_min_bytes_for_seek` bytes, o ClickHouse lerá sequencialmente uma faixa do arquivo que contém ambos os blocos, evitando assim uma operação de seek adicional.

Valores possíveis:

* Qualquer inteiro positivo.

<div id="merge_tree_min_bytes_per_task_for_remote_reading">
  ## merge\_tree\_min\_bytes\_per\_task\_for\_remote\_reading
</div>

**Aliases**: `filesystem_prefetch_min_bytes_for_single_read_task`

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.8"},{"label": "2097152"},{"label": "O valor foi unificado com `filesystem_prefetch_min_bytes_for_single_read_task`"}]}]} />

Número mínimo de bytes lidos por tarefa.

<div id="merge_tree_min_read_task_size">
  ## merge\_tree\_min\_read\_task\_size
</div>

<SettingsInfoBlock type="NonZeroUInt64" default_value="8" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.10"},{"label": "8"},{"label": "Nova configuração"}]}]} />

Limite inferior estrito para o tamanho da tarefa (mesmo quando o número de grânulos é baixo e o número de threads disponíveis é alto, não alocaremos tarefas menores

<div id="merge_tree_min_rows_for_concurrent_read">
  ## merge\_tree\_min\_rows\_for\_concurrent\_read
</div>

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

Se o número de linhas a serem lidas de um arquivo de uma tabela [MergeTree](/pt-BR/reference/engines/table-engines/mergetree-family/mergetree) exceder `merge_tree_min_rows_for_concurrent_read`, o ClickHouse tentará realizar a leitura concorrente desse arquivo em várias threads.

Valores possíveis:

* Inteiro positivo.

<div id="merge_tree_min_rows_for_concurrent_read_for_remote_filesystem">
  ## merge\_tree\_min\_rows\_for\_concurrent\_read\_for\_remote\_filesystem
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.10"},{"label": "0"},{"label": "Configuração obsoleta"}]}]} />

O número mínimo de linhas que devem ser lidas de um arquivo antes que o motor [MergeTree](/pt-BR/reference/engines/table-engines/mergetree-family/mergetree) possa paralelizar a leitura ao ler de um sistema de arquivos remoto. Não recomendamos usar essa configuração.

Possíveis valores:

* Inteiro positivo.

<div id="merge_tree_min_rows_for_seek">
  ## merge\_tree\_min\_rows\_for\_seek
</div>

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

Se a distância entre dois blocos de dados a serem lidos em um arquivo for menor que `merge_tree_min_rows_for_seek` linhas, o ClickHouse não faz seek no arquivo, mas lê os dados sequencialmente.

Valores possíveis:

* Qualquer número inteiro positivo.

<div id="merge_tree_read_split_ranges_into_intersecting_and_non_intersecting_injection_probability">
  ## merge\_tree\_read\_split\_ranges\_into\_intersecting\_and\_non\_intersecting\_injection\_probability
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "0"},{"label": "Para testes do `PartsSplitter` - divide os intervalos de leitura em intervalos que se intersectam e que não se intersectam sempre que houver leitura do MergeTree, com a probabilidade especificada."}]}]} />

Para testes do `PartsSplitter` - divide os intervalos de leitura em intervalos que se intersectam e que não se intersectam sempre que houver leitura do MergeTree, com a probabilidade especificada.

<div id="merge_tree_storage_snapshot_sleep_ms">
  ## merge\_tree\_storage\_snapshot\_sleep\_ms
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.6"},{"label": "0"},{"label": "Nova configuração para depurar a consistência do snapshot de armazenamento em consultas"}]}]} />

Injeta um atraso artificial (em milissegundos) ao criar um snapshot de armazenamento para tabelas MergeTree.
Usado apenas para testes e depuração.

Valores possíveis:

* 0 - Sem atraso (padrão)
* N - Atraso em milissegundos

<div id="merge_tree_use_const_size_tasks_for_remote_reading">
  ## merge\_tree\_use\_const\_size\_tasks\_for\_remote\_reading
</div>

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

Define se tarefas de tamanho constante devem ser usadas para ler de uma tabela remota.

<div id="merge_tree_use_deserialization_prefixes_cache">
  ## merge\_tree\_use\_deserialization\_prefixes\_cache
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.2"},{"label": "1"},{"label": "Uma nova configuração para controlar o uso do cache de prefixos de desserialização no MergeTree"}]}]} />

Habilita o cache dos metadados das colunas a partir dos prefixos dos arquivos durante a leitura em discos remotos no MergeTree.

<div id="merge_tree_use_prefixes_deserialization_thread_pool">
  ## merge\_tree\_use\_prefixes\_deserialization\_thread\_pool
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.2"},{"label": "1"},{"label": "Uma nova configuração que controla o uso do pool de threads para a desserialização paralela de prefixos no MergeTree"}]}]} />

Habilita o uso do pool de threads para a leitura paralela de prefixos em partes no formato Wide no MergeTree. O tamanho desse pool de threads é controlado pela configuração do servidor `max_prefixes_deserialization_thread_pool_size`.

<div id="merge_tree_use_v1_object_and_dynamic_serialization">
  ## merge\_tree\_use\_v1\_object\_and\_dynamic\_serialization
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.11"},{"label": "0"},{"label": "Adiciona a nova versão de serialização V2 para os tipos JSON e Dynamic"}]}]} />

Quando ativado, a versão de serialização V1 dos tipos JSON e Dynamic será usada no MergeTree em vez da V2. A alteração dessa configuração só tem efeito após a reinicialização do servidor.

<div id="metrics_perf_events_enabled">
  ## metrics\_perf\_events\_enabled
</div>

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

Se ativado, alguns eventos de perf serão medidos durante a execução das consultas.

<div id="metrics_perf_events_list">
  ## metrics\_perf\_events\_list
</div>

Lista de métricas de perf separadas por vírgulas que serão medidas durante a execução das consultas. Em branco significa todos os eventos. Consulte `PerfEventInfo` no código-fonte para ver os eventos disponíveis.

<div id="min_bytes_to_use_direct_io">
  ## min\_bytes\_to\_use\_direct\_io
</div>

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

O volume mínimo de dados necessário para usar acesso de E/S direta ao disco de armazenamento.

O ClickHouse usa essa configuração ao ler dados de tabelas. Se o volume total de armazenamento de todos os dados a serem lidos exceder `min_bytes_to_use_direct_io` bytes, o ClickHouse lerá os dados do disco de armazenamento com a opção `O_DIRECT`.

Valores possíveis:

* 0 — A E/S direta está desabilitada.
* Inteiro positivo.

<div id="min_bytes_to_use_mmap_io">
  ## min\_bytes\_to\_use\_mmap\_io
</div>

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

Esta é uma configuração experimental. Define a quantidade mínima de memória para ler arquivos grandes sem copiar dados do kernel para o espaço do usuário. O valor recomendado é de cerca de 64 MB, porque [mmap/munmap](https://en.wikipedia.org/wiki/Mmap) é lento. Isso só faz sentido para arquivos grandes e só ajuda se os dados estiverem no cache de páginas.

Valores possíveis:

* Inteiro positivo.
* 0 — Arquivos grandes são lidos apenas com cópia de dados do kernel para o espaço do usuário.

<div id="min_chunk_bytes_for_parallel_parsing">
  ## min\_chunk\_bytes\_for\_parallel\_parsing
</div>

<SettingsInfoBlock type="NonZeroUInt64" default_value="10485760" />

* Tipo: inteiro sem sinal
* Valor padrão: 1 MiB

O tamanho mínimo do fragmento, em bytes, que cada thread fará o parsing em paralelo.

<div id="min_compress_block_size">
  ## min\_compress\_block\_size
</div>

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

Para tabelas [MergeTree](/pt-BR/reference/engines/table-engines/mergetree-family/mergetree). Para reduzir a latência no processamento de consultas, um bloco é comprimido ao gravar a próxima marca se seu tamanho for de pelo menos `min_compress_block_size`. Por padrão, 65.536.

O tamanho real do bloco, se os dados descomprimidos forem menores que `max_compress_block_size`, não fica abaixo desse valor nem do volume de dados de uma marca.

Vejamos um exemplo. Suponha que `index_granularity` tenha sido definido como 8192 durante a criação da tabela.

Estamos gravando uma coluna do tipo UInt32 (4 bytes por valor). Ao gravar 8192 linhas, o total será de 32 KB de dados. Como min\_compress\_block\_size = 65.536, um bloco comprimido será formado a cada duas marcas.

Estamos gravando uma coluna de URL do tipo String (tamanho médio de 60 bytes por valor). Ao gravar 8192 linhas, o volume médio será de pouco menos de 500 KB de dados. Como isso é mais que 65.536, um bloco comprimido será formado para cada marca. Nesse caso, ao ler dados do disco no intervalo de uma única marca, dados extras não serão descomprimidos.

<Note>
  Esta é uma configuração de nível avançado, e você não deve alterá-la se estiver apenas começando a usar o ClickHouse.
</Note>

<div id="min_count_to_compile_aggregate_expression">
  ## min\_count\_to\_compile\_aggregate\_expression
</div>

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

O número mínimo de expressões agregadas idênticas necessário para iniciar a compilação JIT. Funciona apenas se a configuração [compile\_aggregate\_expressions](#compile_aggregate_expressions) estiver habilitada.

Valores possíveis:

* Inteiro positivo.
* 0 — Expressões agregadas idênticas são sempre compiladas por JIT.

<div id="min_count_to_compile_expression">
  ## min\_count\_to\_compile\_expression
</div>

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

Número mínimo de execuções da mesma expressão antes de ela ser compilada.

<div id="min_count_to_compile_sort_description">
  ## min\_count\_to\_compile\_sort\_description
</div>

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

O número de descrições de ordenação idênticas antes da compilação JIT

<div id="min_execution_speed">
  ## min\_execution\_speed
</div>

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

Velocidade mínima de execução em linhas por segundo. Verificada em cada bloco de dados quando
[`timeout_before_checking_execution_speed`](/pt-BR/reference/settings/session-settings#timeout_before_checking_execution_speed)
expira. Se a velocidade de execução for inferior, uma exceção é lançada.

<div id="min_execution_speed_bytes">
  ## min\_execution\_speed\_bytes
</div>

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

A quantidade mínima de bytes processados por segundo. Verificada em cada bloco de dados quando
[`timeout_before_checking_execution_speed`](/pt-BR/reference/settings/session-settings#timeout_before_checking_execution_speed)
expira. Se a velocidade de execução for menor, uma exceção será lançada.

<div id="min_external_table_block_size_bytes">
  ## min\_external\_table\_block\_size\_bytes
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.2"},{"label": "268402944"},{"label": "Combina os blocos enviados à tabela externa até atingirem o tamanho especificado em bytes, caso não sejam grandes o suficiente."}]}]} />

Combina os blocos enviados à tabela externa até atingirem o tamanho especificado em bytes, caso não sejam grandes o suficiente.

<div id="min_external_table_block_size_rows">
  ## min\_external\_table\_block\_size\_rows
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.2"},{"label": "1048449"},{"label": "Combina os blocos passados para a tabela externa até atingirem o tamanho especificado em linhas, se os blocos não forem grandes o suficiente"}]}]} />

Combina os blocos passados para a tabela externa até atingirem o tamanho especificado em linhas, se os blocos não forem grandes o suficiente.

<div id="min_filtered_ratio_for_lazy_final">
  ## min\_filtered\_ratio\_for\_lazy\_final
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "0.5"},{"label": "Nova configuração para a proporção mínima de marcas filtradas para que a otimização lazy de FINAL seja aplicada"}]}]} />

Proporção mínima de marcas filtradas pela análise de índice para a otimização lazy de FINAL. Se menos do que essa fração de marcas for filtrada, o sistema volta ao FINAL normal. O valor 0 desabilita essa verificação.

<div id="min_free_disk_bytes_to_perform_insert">
  ## min\_free\_disk\_bytes\_to\_perform\_insert
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.9"},{"label": "0"},{"label": "Mantém alguns bytes de espaço livre em disco para inserts, ainda permitindo gravações temporárias."}]}, {"id": "row-2","items": [{"label": "24.10"},{"label": "0"},{"label": "Nova configuração."}]}]} />

Mínimo de bytes de espaço livre em disco para realizar um insert.

<div id="min_free_disk_ratio_to_perform_insert">
  ## min\_free\_disk\_ratio\_to\_perform\_insert
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.9"},{"label": "0"},{"label": "Mantém uma certa quantidade de espaço livre em disco, expressa como proporção do espaço total em disco, para inserções, ainda permitindo gravação temporária."}]}, {"id": "row-2","items": [{"label": "24.10"},{"label": "0"},{"label": "Nova configuração."}]}]} />

Proporção mínima de espaço livre em disco necessária para realizar uma inserção.

<div id="min_free_disk_space_for_temporary_data">
  ## min\_free\_disk\_space\_for\_temporary\_data
</div>

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

O espaço mínimo em disco que deve ser mantido ao gravar dados temporários usados na ordenação externa e na agregação.

<div id="min_hit_rate_to_use_consecutive_keys_optimization">
  ## min\_hit\_rate\_to\_use\_consecutive\_keys\_optimization
</div>

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

Taxa mínima de acerto de um cache usada na otimização de chaves consecutivas na agregação para mantê-la habilitada

<div id="min_insert_block_size_bytes">
  ## min\_insert\_block\_size\_bytes
</div>

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

O tamanho mínimo dos blocos (em bytes) a serem formados para inserção em uma tabela.

Essa configuração funciona em conjunto com min\_insert\_block\_size\_rows e controla a formação de blocos nos mesmos contextos (análise do formato e operações INSERT). Consulte min\_insert\_block\_size\_rows para obter informações detalhadas sobre quando e como essas configurações são aplicadas.

Valores possíveis:

* Inteiro positivo.
* 0 — a configuração não participa da formação de blocos.

<div id="min_insert_block_size_bytes_for_materialized_views">
  ## min\_insert\_block\_size\_bytes\_for\_materialized\_views
</div>

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

Define o número mínimo de bytes em um bloco que pode ser inserido em uma tabela por uma consulta `INSERT`. Blocos menores são agrupados em blocos maiores. Essa configuração é aplicada apenas a blocos inseridos em [visão materializada](/pt-BR/reference/statements/create/view). Ao ajustar essa configuração, você controla o agrupamento de blocos ao enviar para a visão materializada e evita o uso excessivo de memória.

Valores possíveis:

* Qualquer número inteiro positivo.
* 0 — Agrupamento desativado.

**Veja também**

* [min\_insert\_block\_size\_bytes](#min_insert_block_size_bytes)

<div id="min_insert_block_size_rows">
  ## min\_insert\_block\_size\_rows
</div>

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

O tamanho mínimo dos blocos (em linhas) a serem formados para inserção em uma tabela.

Esta configuração controla a formação de blocos em dois contextos:

1. Análise de formato: Quando o servidor analisa formatos de entrada baseados em linhas (CSV, TSV, JSONEachRow etc.) de qualquer interface (HTTP, clickhouse-client com dados inline, gRPC, PostgreSQL wire protocol), os blocos são emitidos quando:

   * Ambos min\_insert\_block\_size\_rows AND min\_insert\_block\_size\_bytes são atingidos, OR
   * max\_insert\_block\_size\_rows OR max\_insert\_block\_size\_bytes é atingido

   Observação: ao usar clickhouse-client ou clickhouse-local para ler de um arquivo, o próprio cliente analisa os dados, e esta configuração se aplica no lado do cliente.

2. Operações de INSERT: Durante consultas INSERT e quando os dados fluem por visões materializadas, o comportamento desta configuração depende de `use_strict_insert_block_limits`:

   * Quando habilitado: Os blocos são emitidos quando:
     * Limiares mínimos (AND): Ambos min\_insert\_block\_size\_rows AND min\_insert\_block\_size\_bytes são atingidos
     * Limiares máximos (OR): max\_insert\_block\_size\_rows OR max\_insert\_block\_size\_bytes é atingido

   * Quando desabilitado (padrão): Os blocos são emitidos quando min\_insert\_block\_size\_rows OR min\_insert\_block\_size\_bytes é atingido. As configurações max\_insert\_block\_size não são aplicadas.

Valores possíveis:

* Inteiro positivo.
* 0 — a configuração não participa da formação de blocos.

<div id="min_insert_block_size_rows_for_materialized_views">
  ## min\_insert\_block\_size\_rows\_for\_materialized\_views
</div>

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

Define o número mínimo de linhas no bloco que pode ser inserido em uma tabela por uma consulta `INSERT`. Blocos menores são agrupados em blocos maiores. Essa configuração é aplicada somente aos blocos inseridos em [visão materializada](/pt-BR/reference/statements/create/view). Ao ajustar essa configuração, você controla o agrupamento de blocos durante o envio para a visão materializada e evita uso excessivo de memória.

Valores possíveis:

* Qualquer inteiro positivo.
* 0 — Agrupamento desabilitado.

**Veja também**

* [min\_insert\_block\_size\_rows](#min_insert_block_size_rows)

<div id="min_joined_block_size_bytes">
  ## min\_joined\_block\_size\_bytes
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.11"},{"label": "524288"},{"label": "Nova configuração."}]}]} />

Tamanho mínimo do bloco, em bytes, para os blocos de entrada e saída do JOIN (se o algoritmo de JOIN oferecer suporte a isso). Blocos pequenos serão consolidados. 0 significa ilimitado.

<div id="min_joined_block_size_rows">
  ## min\_joined\_block\_size\_rows
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.7"},{"label": "65409"},{"label": "Nova configuração."}]}]} />

Tamanho mínimo do bloco, em linhas, para os blocos de entrada e saída do JOIN (se o algoritmo de JOIN oferecer suporte). Blocos pequenos serão mesclados. 0 significa sem limite.

<div id="min_os_cpu_wait_time_ratio_to_throw">
  ## min\_os\_cpu\_wait\_time\_ratio\_to\_throw
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "0"},{"label": "Os valores da configuração foram alterados e retroportados para a 25.4"}]}, {"id": "row-2","items": [{"label": "25.4"},{"label": "0"},{"label": "Nova configuração"}]}]} />

Razão mínima entre os tempos de espera da CPU do SO (métrica OSCPUWaitMicroseconds) e de atividade (métrica OSCPUVirtualTimeMicroseconds) para considerar a rejeição de consultas. Usa-se interpolação linear entre a razão mínima e a máxima para calcular a probabilidade; nesse ponto, a probabilidade é 0.

<div id="min_outstreams_per_resize_after_split">
  ## min\_outstreams\_per\_resize\_after\_split
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.6"},{"label": "24"},{"label": "Nova configuração."}]}]} />

Especifica o número mínimo de fluxos de saída de um processador `Resize` ou `StrictResize` após a divisão ser realizada durante a geração do pipeline. Se o número resultante de fluxos for menor que esse valor, a operação de divisão não ocorrerá.

<div id="what-is-a-resize-node">
  ### O que é um nó Resize
</div>

Um nó `Resize` é um processador no pipeline de consulta que ajusta o número de fluxos de dados que passam pelo pipeline. Ele pode aumentar ou diminuir o número de fluxos para equilibrar a carga de trabalho entre vários threads ou processadores. Por exemplo, se uma consulta exigir mais paralelismo, o nó `Resize` pode dividir um único fluxo em vários fluxos. Por outro lado, ele pode mesclar vários fluxos em menos fluxos para consolidar o processamento de dados.

O nó `Resize` garante que os dados sejam distribuídos uniformemente entre os fluxos, mantendo a estrutura dos blocos de dados. Isso ajuda a otimizar a utilização de recursos e a melhorar o desempenho da consulta.

<div id="why-the-resize-node-needs-to-be-split">
  ### Por que o nó Resize precisa ser dividido
</div>

Durante a execução do pipeline, `ExecutingGraph::Node::status_mutex` do nó `Resize`, que fica no centro do fluxo, enfrenta forte contenção, especialmente em ambientes com muitos núcleos de CPU, e isso leva a:

1. Aumento da latência de `ExecutingGraph::updateNode`, impactando diretamente o desempenho da consulta.
2. Desperdício excessivo de ciclos de CPU com contenção de spin-lock (`native_queued_spin_lock_slowpath`), reduzindo a eficiência.
3. Redução da utilização da CPU, limitando o paralelismo e o throughput.

<div id="how-the-resize-node-gets-split">
  ### Como o nó Resize é dividido
</div>

1. O número de streams de saída é verificado para garantir que a divisão possa ser feita: os streams de saída de cada processador dividido atingem ou excedem o limiar `min_outstreams_per_resize_after_split`.
2. O nó `Resize` é dividido em nós `Resize` menores, com a mesma quantidade de portas, cada um lidando com um subconjunto de streams de entrada e saída.
3. Cada grupo é processado de forma independente, reduzindo a contenção de lock.

<div id="splitting-resize-node-with-arbitrary-inputsoutputs">
  ### Divisão do nó Resize com entradas/saídas arbitrárias
</div>

Em alguns casos, quando as entradas/saídas não são divisíveis pelo número de nós `Resize` resultantes da divisão, algumas entradas são conectadas a `NullSource`s e algumas saídas são conectadas a `NullSink`s. Isso permite que a divisão ocorra sem afetar o fluxo geral de dados.

<div id="purpose-of-the-setting">
  ### Finalidade da configuração
</div>

A configuração `min_outstreams_per_resize_after_split` garante que a divisão de nós `Resize` faça sentido e evita a criação de um número muito pequeno de streams, o que poderia levar a um processamento paralelo ineficiente. Ao impor um número mínimo de streams de saída, essa configuração ajuda a manter o equilíbrio entre paralelismo e sobrecarga, otimizando a execução da consulta em cenários que envolvem divisão e mesclagem de streams.

<div id="disabling-the-setting">
  ### Desativando a configuração
</div>

Para desativar o split dos nós `Resize`, defina esta configuração como 0. Isso impedirá o split dos nós `Resize` durante a geração do pipeline, permitindo que mantenham sua estrutura original, sem serem divididos em nós menores.

<div id="min_table_rows_to_use_projection_index">
  ## min\_table\_rows\_to\_use\_projection\_index
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.11"},{"label": "1000000"},{"label": "Nova configuração"}]}]} />

Se o número estimado de linhas a serem lidas da tabela for maior ou igual a esse limite, o ClickHouse tentará usar o índice de projeção durante a execução da consulta.

<div id="mongodb_throw_on_unsupported_query">
  ## mongodb\_throw\_on\_unsupported\_query
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.9"},{"label": "1"},{"label": "Nova configuração."}]}, {"id": "row-2","items": [{"label": "24.10"},{"label": "1"},{"label": "Nova configuração."}]}]} />

Se habilitado, as tabelas do MongoDB retornarão erro quando não for possível gerar uma consulta do MongoDB. Caso contrário, o ClickHouse lê a tabela inteira e a processa localmente. Esta opção não se aplica quando 'allow\_experimental\_analyzer=0'.

<div id="move_all_conditions_to_prewhere">
  ## move\_all\_conditions\_to\_prewhere
</div>

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

Move todas as condições aplicáveis de WHERE para PREWHERE

<div id="move_primary_key_columns_to_end_of_prewhere">
  ## move\_primary\_key\_columns\_to\_end\_of\_prewhere
</div>

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

Move para o final da cadeia de AND as condições PREWHERE que contêm colunas da chave primária. É provável que essas condições já sejam consideradas durante a análise da chave primária e, portanto, contribuam pouco para a filtragem PREWHERE.

<div id="multiple_joins_try_to_keep_original_names">
  ## multiple\_joins\_try\_to\_keep\_original\_names
</div>

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

Não adiciona aliases à lista de expressões de nível superior na reescrita de múltiplas junções

<div id="mutations_execute_nondeterministic_on_initiator">
  ## mutations\_execute\_nondeterministic\_on\_initiator
</div>

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

Se for `true`, funções constantes não determinísticas (por exemplo, a função `now()`) serão executadas no iniciador e substituídas por literais em consultas `UPDATE` e `DELETE`. Isso ajuda a manter os dados em sincronia entre as réplicas ao executar mutações com funções constantes não determinísticas. Valor padrão: `false`.

<div id="mutations_execute_subqueries_on_initiator">
  ## mutations\_execute\_subqueries\_on\_initiator
</div>

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

Se `true`, as subconsultas escalares são executadas no iniciador e substituídas por valores literais nas consultas `UPDATE` e `DELETE`. Valor padrão: `false`.

<div id="mutations_max_literal_size_to_replace">
  ## mutations\_max\_literal\_size\_to\_replace
</div>

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

O tamanho máximo, em bytes, do literal serializado a ser substituído em consultas `UPDATE` e `DELETE`. Só tem efeito se pelo menos uma das duas configurações acima estiver habilitada. Valor padrão: 16384 (16 KiB).

<div id="mutations_sync">
  ## mutations\_sync
</div>

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

Permite executar consultas `ALTER TABLE ... UPDATE|DELETE|MATERIALIZE INDEX|MATERIALIZE PROJECTION|MATERIALIZE COLUMN|MATERIALIZE STATISTICS` ([mutações](/pt-BR/reference/statements/alter#mutations)) de forma síncrona.

Valores possíveis:

| Valor | Descrição                                                                                                                                                               |
| ----- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `0`   | As mutações são executadas de forma assíncrona.                                                                                                                         |
| `1`   | A consulta aguarda a conclusão de todas as mutações no servidor atual.                                                                                                  |
| `2`   | A consulta aguarda a conclusão de todas as mutações em todas as réplicas (se existirem).                                                                                |
| `3`   | A consulta aguarda apenas as réplicas ativas. Compatível apenas com `SharedMergeTree`. Para `ReplicatedMergeTree`, comporta-se da mesma forma que `mutations_sync = 2`. |

<div id="mysql_datatypes_support_level">
  ## mysql\_datatypes\_support\_level
</div>

<SettingsInfoBlock type="MySQLDataTypesSupport" default_value="decimal,datetime64,date2Date32" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": "decimal,datetime64,date2Date32"},{"label": "Ativa os mapeamentos modernos de tipos do MySQL por padrão."}]}]} />

Define como os tipos do MySQL são convertidos nos tipos correspondentes do ClickHouse. É uma lista separada por vírgulas, com qualquer combinação de `decimal`, `datetime64`, `date2Date32` ou `date2String`. Todos os mapeamentos modernos (`decimal`, `datetime64`, `date2Date32`) são ativados por padrão.

* `decimal`: converte os tipos `NUMERIC` e `DECIMAL` em `Decimal` quando a precisão permitir.
* `datetime64`: converte os tipos `DATETIME` e `TIMESTAMP` em `DateTime64` em vez de `DateTime` quando a precisão não for `0`.
* `date2Date32`: converte `DATE` em `Date32` em vez de `Date`. Tem precedência sobre `date2String`.
* `date2String`: converte `DATE` em `String` em vez de `Date`. É substituído por `datetime64`.

<div id="mysql_map_fixed_string_to_text_in_show_columns">
  ## mysql\_map\_fixed\_string\_to\_text\_in\_show\_columns
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.2"},{"label": "1"},{"label": "Reduz o esforço de configuração para conectar o ClickHouse a ferramentas de BI."}]}]} />

Quando ativado, o tipo de dado [FixedString](/pt-BR/reference/data-types/fixedstring) do ClickHouse será exibido como `TEXT` em [SHOW COLUMNS](/pt-BR/reference/statements/show#show_columns).

Só tem efeito quando a conexão é feita por meio do protocolo wire do MySQL.

* 0 - Usar `BLOB`.
* 1 - Usar `TEXT`.

<div id="mysql_map_string_to_text_in_show_columns">
  ## mysql\_map\_string\_to\_text\_in\_show\_columns
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.2"},{"label": "1"},{"label": "Reduz o esforço de configuração para conectar o ClickHouse a ferramentas de BI."}]}]} />

Quando ativado, o tipo de dados [String](/pt-BR/reference/data-types/string) do ClickHouse será exibido como `TEXT` em [SHOW COLUMNS](/pt-BR/reference/statements/show#show_columns).

Só tem efeito quando a conexão é feita pelo MySQL wire protocol.

* 0 - Usar `BLOB`.
* 1 - Usar `TEXT`.

<div id="mysql_max_rows_to_insert">
  ## mysql\_max\_rows\_to\_insert
</div>

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

O número máximo de linhas na inserção em lote do engine MySQL

<div id="network_compression_method">
  ## network\_compression\_method
</div>

<SettingsInfoBlock type="String" default_value="LZ4" />

O codec usado para compactar a comunicação entre cliente/servidor e servidor/servidor.

Valores possíveis:

* `NONE` — sem compactação.
* `LZ4` — usa o codec LZ4.
* `LZ4HC` — usa o codec LZ4HC.
* `ZSTD` — usa o codec ZSTD.

**Veja também**

* [network\_zstd\_compression\_level](#network_zstd_compression_level)

<div id="network_zstd_compression_level">
  ## network\_zstd\_compression\_level
</div>

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

Ajusta o nível de compressão ZSTD. Usado apenas quando [network\_compression\_method](#network_compression_method) está definido como `ZSTD`.

Valores possíveis:

* Número inteiro positivo de 1 a 15.

<div id="normalize_function_names">
  ## normalize\_function\_names
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "21.3"},{"label": "1"},{"label": "Normaliza nomes de funções para seus respectivos nomes canônicos; isso era necessário para o roteamento de consultas de projeção"}]}]} />

Normalizar nomes de funções para seus respectivos nomes canônicos

<div id="number_of_mutations_to_delay">
  ## number\_of\_mutations\_to\_delay
</div>

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

Se a tabela contiver pelo menos essa quantidade de mutações não concluídas, a velocidade das mutações da tabela será reduzida artificialmente. 0 - desabilitado

<div id="number_of_mutations_to_throw">
  ## number\_of\_mutations\_to\_throw
</div>

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

Se a tabela contiver pelo menos essa quantidade de mutações não concluídas, gere a exceção 'Too many mutations ...'. 0 - desabilitado

<div id="odbc_bridge_connection_pool_size">
  ## odbc\_bridge\_connection\_pool\_size
</div>

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

Tamanho do pool de conexões para cada string de configuração de conexão no ODBC bridge.

<div id="odbc_bridge_use_connection_pooling">
  ## odbc\_bridge\_use\_connection\_pooling
</div>

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

Usa pool de conexões na ODBC bridge. Se definido como false, uma nova conexão é criada a cada vez.

<div id="offset">
  ## offset
</div>

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

Define o número de linhas a serem ignoradas antes de começar a retornar linhas da consulta. Ele ajusta o offset definido pela cláusula [OFFSET](/pt-BR/reference/statements/select/offset), de modo que esses dois valores sejam somados.

Valores possíveis:

* 0 — Nenhuma linha é ignorada.
* Inteiro positivo.

**Exemplo**

Tabela de entrada:

```sql theme={null}
CREATE TABLE test (i UInt64) ENGINE = MergeTree() ORDER BY i;
INSERT INTO test SELECT number FROM numbers(500);
```

Consulta:

```sql theme={null}
SET limit = 5;
SET offset = 7;
SELECT * FROM test LIMIT 10 OFFSET 100;
```

Resultado:

```text theme={null}
┌───i─┐
│ 107 │
│ 108 │
│ 109 │
└─────┘
```

<div id="opentelemetry_start_keeper_trace_probability">
  ## opentelemetry\_start\_keeper\_trace\_probability
</div>

<SettingsInfoBlock type="FloatAuto" default_value="auto" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "auto"},{"label": "Nova configuração"}]}]} />

Probabilidade de iniciar um trace para uma requisição do ZooKeeper, haja ou não um trace pai.

Valores possíveis:

* 'auto' - Equivale à configuração opentelemetry\_start\_trace\_probability
* 0 — O rastreamento está desabilitado
* 0 a 1 — Probabilidade (por exemplo, 1.0 = sempre ativado)

<div id="opentelemetry_start_trace_probability">
  ## opentelemetry\_start\_trace\_probability
</div>

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

Define a probabilidade de o ClickHouse iniciar um rastreamento para consultas executadas (se nenhum [contexto de rastreamento](https://www.w3.org/TR/trace-context/) pai for fornecido).

Valores possíveis:

* 0 — O rastreamento de todas as consultas executadas é desabilitado (se nenhum contexto de rastreamento pai for fornecido).
* Número de ponto flutuante positivo no intervalo \[0..1]. Por exemplo, se o valor da configuração for `0,5`, o ClickHouse poderá iniciar um rastreamento, em média, para metade das consultas.
* 1 — O rastreamento de todas as consultas executadas é habilitado.

<div id="opentelemetry_trace_cpu_scheduling">
  ## opentelemetry\_trace\_cpu\_scheduling
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "0"},{"label": "Nova configuração para rastrear o recurso `cpu_slot_preemption`."}]}]} />

Coleta spans do OpenTelemetry para o escalonamento preemptivo de CPU da carga de trabalho.

<div id="opentelemetry_trace_processors">
  ## opentelemetry\_trace\_processors
</div>

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

Coleta spans de OpenTelemetry para processadores.

<div id="optimize_aggregation_in_order">
  ## optimize\_aggregation\_in\_order
</div>

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

Habilita a otimização de [GROUP BY](/pt-BR/reference/statements/select/group-by) em consultas [SELECT](/pt-BR/reference/statements/select) para a agregação de dados na ordem correspondente em tabelas [MergeTree](/pt-BR/reference/engines/table-engines/mergetree-family/mergetree).

Valores possíveis:

* 0 — a otimização de `GROUP BY` está desabilitada.
* 1 — a otimização de `GROUP BY` está habilitada.

**Veja também**

* [Otimização de GROUP BY](/pt-BR/reference/statements/select/group-by#group-by-optimization-depending-on-table-sorting-key)

<div id="optimize_aggregators_of_group_by_keys">
  ## optimize\_aggregators\_of\_group\_by\_keys
</div>

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

Elimina os agregadores min/max/any/anyLast das chaves de GROUP BY na seção SELECT

<div id="optimize_and_compare_chain">
  ## optimize\_and\_compare\_chain
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.2"},{"label": "1"},{"label": "Nova configuração"}]}]} />

Propaga comparações com constantes em cadeias AND para melhorar a capacidade de filtragem. Suporta os operadores `<`, `<=`, `>`, `>=`, `=` e combinações entre eles. Por exemplo, `(a < b) AND (b < c) AND (c < 5)` se tornaria `(a < b) AND (b < c) AND (c < 5) AND (b < 5) AND (a < 5)`.

<div id="optimize_append_index">
  ## optimize\_append\_index
</div>

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

Use [restrições](/pt-BR/reference/statements/create/table#constraints) para adicionar a condição do índice. O padrão é `false`.

Valores possíveis:

* true, false

<div id="optimize_arithmetic_operations_in_aggregate_functions">
  ## optimize\_arithmetic\_operations\_in\_aggregate\_functions
</div>

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

Move operações aritméticas para fora das funções de agregação

<div id="optimize_const_name_size">
  ## optimize\_const\_name\_size
</div>

<SettingsInfoBlock type="Int64" default_value="256" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.11"},{"label": "256"},{"label": "Substitui por um escalar e usa um hash como nome para constantes grandes (o tamanho é estimado pelo comprimento do nome)"}]}]} />

Substitui por um escalar e usa um hash como nome para constantes grandes (o tamanho é estimado pelo comprimento do nome).

Valores possíveis:

* inteiro positivo - comprimento máximo do nome,
* 0 — sempre,
* inteiro negativo - nunca.

<div id="optimize_count_from_files">
  ## optimize\_count\_from\_files
</div>

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

Ativa ou desativa a otimização da contagem do número de linhas em arquivos em diferentes formatos de entrada. Aplica-se a table functions/motores `file`/`s3`/`url`/`hdfs`/`azureBlobStorage`.

Valores possíveis:

* 0 — Otimização desativada.
* 1 — Otimização ativada.

<div id="optimize_dictget_tuple_element">
  ## optimize\_dictget\_tuple\_element
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "1"},{"label": "Reescreve tupleElement(dictGet(..., tuple_of_attrs, ...), N) como uma chamada dictGet de atributo único."}]}]} />

Reescreve `tupleElement(dictGet('dict', ('a', 'b', 'c'), key), 2)` como `dictGet('dict', 'b', key)` para evitar buscar atributos de Dicionário desnecessários. Suporta acesso posicional (`.1`, `.2`, ...) e nomeado (`.b`) e também se aplica a `dictGetOrDefault` quando o argumento padrão é uma tupla constante ou um `tuple(...)` de constantes.

<div id="optimize_distinct_in_order">
  ## optimize\_distinct\_in\_order
</div>

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

Ativa a otimização de DISTINCT se algumas colunas em DISTINCT formarem um prefixo da chave de ordenação. Por exemplo, um prefixo da chave de ordenação em MergeTree ou da cláusula ORDER BY

<div id="optimize_distributed_group_by_sharding_key">
  ## optimize\_distributed\_group\_by\_sharding\_key
</div>

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

Otimiza consultas `GROUP BY sharding_key`, evitando agregações custosas no servidor iniciador (o que reduz o uso de memória da consulta nesse servidor).

Os seguintes tipos de consultas são suportados (bem como todas as combinações entre eles):

* `SELECT DISTINCT [..., ]sharding_key[, ...] FROM dist`
* `SELECT ... FROM dist GROUP BY sharding_key[, ...]`
* `SELECT ... FROM dist GROUP BY sharding_key[, ...] ORDER BY x`
* `SELECT ... FROM dist GROUP BY sharding_key[, ...] LIMIT 1`
* `SELECT ... FROM dist GROUP BY sharding_key[, ...] LIMIT 1 BY x`

Os seguintes tipos de consultas não são suportados (o suporte a alguns deles poderá ser adicionado posteriormente):

* `SELECT ... GROUP BY sharding_key[, ...] WITH TOTALS`
* `SELECT ... GROUP BY sharding_key[, ...] WITH ROLLUP`
* `SELECT ... GROUP BY sharding_key[, ...] WITH CUBE`
* `SELECT ... GROUP BY sharding_key[, ...] SETTINGS extremes=1`

Valores possíveis:

* 0 — Desativado.
* 1 — Ativado.

Veja também:

* [distributed\_group\_by\_no\_merge](#distributed_group_by_no_merge)
* [distributed\_push\_down\_limit](#distributed_push_down_limit)
* [optimize\_skip\_unused\_shards](#optimize_skip_unused_shards)

<Note>
  No momento, isso exige `optimize_skip_unused_shards` (o motivo é que, no futuro, isso poderá ser ativado por padrão e só funcionará corretamente se os dados tiverem sido inseridos por meio de uma tabela Distributed, ou seja, se os dados estiverem distribuídos de acordo com `sharding_key`).
</Note>

<div id="optimize_dry_run_check_part">
  ## optimize\_dry\_run\_check\_part
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "1"},{"label": "Nova configuração"}]}]} />

Quando ativado, `OPTIMIZE ... DRY RUN` valida a parte mesclada resultante com `checkDataPart`. Se a verificação falhar, uma exceção será gerada.

<div id="optimize_empty_string_comparisons">
  ## optimize\_empty\_string\_comparisons
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.10"},{"label": "1"},{"label": "Nova configuração."}]}]} />

Converte expressões como `col = ''` ou `'' = col` em `empty(col)` e `col != ''` ou `'' != col` em `notEmpty(col)`,
somente quando `col` for do tipo `String` ou `FixedString`.

<div id="optimize_extract_common_expressions">
  ## optimize\_extract\_common\_expressions
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "1"},{"label": "Otimiza expressões WHERE, PREWHERE, ON, HAVING e QUALIFY extraindo expressões comuns de uma disjunção de conjunções."}]}, {"id": "row-2","items": [{"label": "24.12"},{"label": "0"},{"label": "Introduz a configuração para otimizar expressões WHERE, PREWHERE, ON, HAVING e QUALIFY extraindo expressões comuns de uma disjunção de conjunções."}]}]} />

Permite extrair expressões comuns de disjunções em expressões WHERE, PREWHERE, ON, HAVING e QUALIFY. Uma expressão lógica como `(A AND B) OR (A AND C)` pode ser reescrita como `A AND (B OR C)`, o que pode ajudar a aproveitar:

* índices em expressões de filtro simples
* a otimização de CROSS JOIN para INNER JOIN

<div id="optimize_functions_to_subcolumns">
  ## optimize\_functions\_to\_subcolumns
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.8"},{"label": "1"},{"label": "Configuração ativada por padrão"}]}]} />

Habilita ou desabilita a otimização que converte algumas funções para a leitura de subcolunas. Isso reduz a quantidade de dados lidos.

Estas funções podem ser convertidas:

* [length](/pt-BR/reference/functions/regular-functions/array-functions#length) para ler a subcoluna [size0](/pt-BR/reference/data-types/array#array-size).
* [empty](/pt-BR/reference/functions/regular-functions/array-functions#empty) para ler a subcoluna [size0](/pt-BR/reference/data-types/array#array-size).
* [notEmpty](/pt-BR/reference/functions/regular-functions/array-functions#notEmpty) para ler a subcoluna [size0](/pt-BR/reference/data-types/array#array-size).
* [isNull](/pt-BR/reference/functions/regular-functions/functions-for-nulls#isNull) para ler a subcoluna [null](/pt-BR/reference/data-types/nullable#finding-null).
* [isNotNull](/pt-BR/reference/functions/regular-functions/functions-for-nulls#isNotNull) para ler a subcoluna [null](/pt-BR/reference/data-types/nullable#finding-null).
* [count](/pt-BR/reference/functions/aggregate-functions/count) para ler a subcoluna [null](/pt-BR/reference/data-types/nullable#finding-null).
* [mapKeys](/pt-BR/reference/functions/regular-functions/tuple-map-functions#mapKeys) para ler a subcoluna [keys](/pt-BR/reference/data-types/map#reading-subcolumns-of-map).
* [mapValues](/pt-BR/reference/functions/regular-functions/tuple-map-functions#mapValues) para ler a subcoluna [values](/pt-BR/reference/data-types/map#reading-subcolumns-of-map).

Valores possíveis:

* 0 — Otimização desativada.
* 1 — Otimização ativada.

<div id="optimize_group_by_constant_keys">
  ## optimize\_group\_by\_constant\_keys
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "23.9"},{"label": "1"},{"label": "Otimiza o GROUP BY com chaves constantes por padrão"}]}]} />

Otimiza o GROUP BY quando todas as chaves no bloco são constantes

<div id="optimize_group_by_function_keys">
  ## optimize\_group\_by\_function\_keys
</div>

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

Elimina funções de outras chaves na cláusula GROUP BY

<div id="optimize_if_chain_to_multiif">
  ## optimize\_if\_chain\_to\_multiif
</div>

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

Substitui sequências de if(cond1, then1, if(cond2, ...)) por multiIf. Atualmente, isso não é vantajoso para tipos numéricos.

<div id="optimize_if_transform_strings_to_enum">
  ## optimize\_if\_transform\_strings\_to\_enum
</div>

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

Substitui argumentos do tipo String em If e Transform por enum. Desabilitado por padrão, pois isso pode causar uma alteração inconsistente em uma consulta Distributed, o que levaria à falha dela.

<div id="optimize_injective_functions_in_group_by">
  ## optimize\_injective\_functions\_in\_group\_by
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.1"},{"label": "1"},{"label": "Substitui funções injetivas pelos respectivos argumentos na cláusula GROUP BY no analisador"}]}]} />

Substitui funções injetivas pelos respectivos argumentos na cláusula GROUP BY

<div id="optimize_injective_functions_inside_uniq">
  ## optimize\_injective\_functions\_inside\_uniq
</div>

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

Remove funções injetivas de um argumento dentro de funções uniq\*().

<div id="optimize_inverse_dictionary_lookup">
  ## optimize\_inverse\_dictionary\_lookup
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "1"},{"label": "Nova configuração"}]}]} />

Evita repetir a busca inversa no dicionário ao fazer buscas mais rápidas em um conjunto pré-computado de possíveis valores de chave.

<div id="optimize_min_equality_disjunction_chain_length">
  ## optimize\_min\_equality\_disjunction\_chain\_length
</div>

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

O tamanho mínimo da expressão `expr = x1 OR ... expr = xN` para otimizaçã

<div id="optimize_min_inequality_conjunction_chain_length">
  ## optimize\_min\_inequality\_conjunction\_chain\_length
</div>

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

O tamanho mínimo da expressão `expr <> x1 AND ... expr <> xN` para otimizaçã

<div id="optimize_move_to_prewhere">
  ## optimize\_move\_to\_prewhere
</div>

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

Ativa ou desativa a otimização automática de [PREWHERE](/pt-BR/reference/statements/select/prewhere) em consultas [SELECT](/pt-BR/reference/statements/select).

Funciona apenas com tabelas [\*MergeTree](/pt-BR/reference/engines/table-engines/mergetree-family).

Valores possíveis:

* 0 — A otimização automática de `PREWHERE` está desativada.
* 1 — A otimização automática de `PREWHERE` está ativada.

<div id="optimize_move_to_prewhere_if_final">
  ## optimize\_move\_to\_prewhere\_if\_final
</div>

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

Habilita ou desabilita a otimização automática de [PREWHERE](/pt-BR/reference/statements/select/prewhere) em consultas [SELECT](/pt-BR/reference/statements/select) com o modificador [FINAL](/pt-BR/reference/statements/select/from#final-modifier).

Funciona apenas com tabelas [\*MergeTree](/pt-BR/reference/engines/table-engines/mergetree-family).

Valores possíveis:

* 0 — A otimização automática de `PREWHERE` em consultas `SELECT` com o modificador `FINAL` está desabilitada.
* 1 — A otimização automática de `PREWHERE` em consultas `SELECT` com o modificador `FINAL` está habilitada.

**Veja também**

* configuração [optimize\_move\_to\_prewhere](#optimize_move_to_prewhere)

<div id="optimize_multiif_to_if">
  ## optimize\_multiif\_to\_if
</div>

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

Substitui 'multiIf' por 'if' quando há apenas uma condição.

<div id="optimize_normalize_count_variants">
  ## optimize\_normalize\_count\_variants
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "21.3"},{"label": "1"},{"label": "Reescreve funções de agregação semanticamente equivalentes a count() como count() por padrão"}]}]} />

Reescreve funções de agregação semanticamente equivalentes a count() como count().

<div id="optimize_on_insert">
  ## optimize\_on\_insert
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "21.1"},{"label": "1"},{"label": "Habilita a otimização de dados em INSERT por padrão para uma melhor experiência do usuário"}]}]} />

Habilita ou desabilita a transformação de dados antes da inserção, como se a mesclagem tivesse sido feita nesse bloco (de acordo com o mecanismo da tabela).

Valores possíveis:

* 0 — Desabilitado.
* 1 — Habilitado.

**Exemplo**

A diferença entre habilitado e desabilitado:

Consulta:

```sql theme={null}
SET optimize_on_insert = 1;

CREATE TABLE test1 (`FirstTable` UInt32) ENGINE = ReplacingMergeTree ORDER BY FirstTable;

INSERT INTO test1 SELECT number % 2 FROM numbers(5);

SELECT * FROM test1;

SET optimize_on_insert = 0;

CREATE TABLE test2 (`SecondTable` UInt32) ENGINE = ReplacingMergeTree ORDER BY SecondTable;

INSERT INTO test2 SELECT number % 2 FROM numbers(5);

SELECT * FROM test2;
```

Resultado:

```text theme={null}
┌─FirstTable─┐
│          0 │
│          1 │
└────────────┘

┌─SecondTable─┐
│           0 │
│           0 │
│           0 │
│           1 │
│           1 │
└─────────────┘
```

Observe que esta configuração afeta o comportamento da [visão materializada](/pt-BR/reference/statements/create/view#materialized-view).

<div id="optimize_or_like_chain">
  ## optimize\_or\_like\_chain
</div>

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

Otimiza múltiplas condições OR LIKE em `multiMatchAny`. Essa otimização não deve ser habilitada por padrão, porque em alguns casos prejudica a análise de índices.

<div id="optimize_qbit_distance_function_reads">
  ## optimize\_qbit\_distance\_function\_reads
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.10"},{"label": "1"},{"label": "Nova configuração"}]}]} />

Substitui funções de distância no tipo de dado `QBit` por equivalentes que leem do armazenamento somente as colunas necessárias para o cálculo.

<div id="optimize_read_in_order">
  ## optimize\_read\_in\_order
</div>

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

Habilita a otimização de [ORDER BY](/pt-BR/reference/statements/select/order-by#optimization-of-data-reading) em consultas [SELECT](/pt-BR/reference/statements/select) para ler dados de tabelas [MergeTree](/pt-BR/reference/engines/table-engines/mergetree-family/mergetree).

Valores possíveis:

* 0 — a otimização de `ORDER BY` está desativada.
* 1 — a otimização de `ORDER BY` está ativada.

**Veja também**

* [cláusula ORDER BY](/pt-BR/reference/statements/select/order-by#optimization-of-data-reading)

<div id="optimize_redundant_functions_in_order_by">
  ## optimize\_redundant\_functions\_in\_order\_by
</div>

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

Remove funções do ORDER BY se o argumento também estiver no ORDER BY

<div id="optimize_respect_aliases">
  ## optimize\_respect\_aliases
</div>

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

Se estiver definido como true, respeitará aliases em WHERE/GROUP BY/ORDER BY, o que ajudará na eliminação de partições/índices secundários/optimize\_aggregation\_in\_order/optimize\_read\_in\_order/optimize\_trivial\_count

<div id="optimize_rewrite_aggregate_function_with_if">
  ## optimize\_rewrite\_aggregate\_function\_with\_if
</div>

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

Reescreve funções de agregação que têm uma expressão if como argumento, quando forem logicamente equivalentes.
Por exemplo, `avg(if(cond, col, null))` pode ser reescrita como `avgOrNullIf(cond, col)`. Isso pode melhorar o desempenho.

<Note>
  Suportado apenas com o analisador (`enable_analyzer = 1`).
</Note>

<div id="optimize_rewrite_array_exists_to_has">
  ## optimize\_rewrite\_array\_exists\_to\_has
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "1"},{"label": "Habilita por padrão a otimização de reescrita de arrayExists para has, agora que a compatibilidade de tipos é verificada antes da reescrita."}]}]} />

Reescreve funções `arrayExists()` para `has()` quando forem logicamente equivalentes. Por exemplo, `arrayExists(x -> x = 1, arr)` pode ser reescrita como `has(arr, 1)`

<div id="optimize_rewrite_like_perfect_affix">
  ## optimize\_rewrite\_like\_perfect\_affix
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.10"},{"label": "1"},{"label": "Nova configuração"}]}]} />

Reescreve expressões LIKE com prefixo ou sufixo perfeitos (por exemplo, `col LIKE 'ClickHouse%'`) como funções startsWith ou endsWith (por exemplo, `startsWith(col, 'ClickHouse')`).

<div id="optimize_rewrite_regexp_functions">
  ## optimize\_rewrite\_regexp\_functions
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "1"},{"label": "Uma nova configuração"}]}]} />

Reescreve funções relacionadas a expressões regulares para formas mais simples e eficientes

<div id="optimize_rewrite_sum_if_to_count_if">
  ## optimize\_rewrite\_sum\_if\_to\_count\_if
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.4"},{"label": "1"},{"label": "Disponível apenas para o analisador, onde funciona corretamente"}]}]} />

Reescreve as funções `sumIf()` e `sum(if())` como a função `countIf()` quando forem logicamente equivalentes

<div id="optimize_skip_merged_partitions">
  ## optimize\_skip\_merged\_partitions
</div>

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

Habilita ou desabilita a otimização da consulta [OPTIMIZE TABLE ... FINAL](/pt-BR/reference/statements/optimize) se houver apenas uma parte com nível > 0 e ela não tiver TTL expirado.

* `OPTIMIZE TABLE ... FINAL SETTINGS optimize_skip_merged_partitions=1`

Por padrão, a consulta `OPTIMIZE TABLE ... FINAL` reescreve a parte mesmo quando há apenas uma única parte.

Valores possíveis:

* 1 - Habilita a otimização.
* 0 - Desabilita a otimização.

<div id="optimize_skip_unused_shards">
  ## optimize\_skip\_unused\_shards
</div>

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

Habilita ou desabilita a omissão de shards não utilizados em consultas [SELECT](/pt-BR/reference/statements/select) que tenham uma condição da chave de sharding em `WHERE/PREWHERE`, e ativa otimizações relacionadas para consultas distribuídas (por exemplo, agregação pela chave de sharding).

<Note>
  Pressupõe que os dados estejam distribuídos pela chave de sharding; caso contrário, a consulta produzirá um resultado incorreto.
</Note>

Valores possíveis:

* 0 — Desabilitado.
* 1 — Habilitado.

<div id="optimize_skip_unused_shards_limit">
  ## optimize\_skip\_unused\_shards\_limit
</div>

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

Limite para o número de valores da chave de sharding; desativa `optimize_skip_unused_shards` quando o limite é atingido.

Valores demais podem exigir um volume significativo de processamento, enquanto o benefício é duvidoso, já que, se você tiver um número muito grande de valores em `IN (...)`, muito provavelmente a consulta será enviada a todos os shards de qualquer maneira.

<div id="optimize_skip_unused_shards_nesting">
  ## optimize\_skip\_unused\_shards\_nesting
</div>

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

Controla [`optimize_skip_unused_shards`](#optimize_skip_unused_shards) (portanto, ainda requer [`optimize_skip_unused_shards`](#optimize_skip_unused_shards)) e depende do nível de aninhamento da consulta distribuída (no caso em que você tem uma tabela `Distributed` que consulta outra tabela `Distributed`).

Valores possíveis:

* 0 — Desabilitado; `optimize_skip_unused_shards` sempre funciona.
* 1 — Habilita `optimize_skip_unused_shards` apenas no primeiro nível.
* 2 — Habilita `optimize_skip_unused_shards` até o segundo nível.

<div id="optimize_skip_unused_shards_rewrite_in">
  ## optimize\_skip\_unused\_shards\_rewrite\_in
</div>

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

Reescreve `IN` na consulta para shards remotos a fim de excluir valores que não pertencem ao shard (requer `optimize_skip_unused_shards`).

Valores possíveis:

* 0 — Desabilitado.
* 1 — Habilitado.

<div id="optimize_sorting_by_input_stream_properties">
  ## optimize\_sorting\_by\_input\_stream\_properties
</div>

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

Otimiza a ordenação com base nas propriedades de ordenação do fluxo de entrada

<div id="optimize_substitute_columns">
  ## optimize\_substitute\_columns
</div>

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

Use [restrições](/pt-BR/reference/statements/create/table#constraints) na substituição de colunas. O padrão é `false`.

Valores possíveis:

* true, false

<div id="optimize_syntax_fuse_functions">
  ## optimize\_syntax\_fuse\_functions
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": "1"},{"label": "A otimização está pronta para produção"}]}]} />

Permite mesclar funções de agregação com o mesmo argumento. Reescreve consultas que contêm pelo menos duas funções de agregação entre [sum](/pt-BR/reference/functions/aggregate-functions/sum), [count](/pt-BR/reference/functions/aggregate-functions/count) e [avg](/pt-BR/reference/functions/aggregate-functions/avg) com o mesmo argumento para [sumCount](/pt-BR/reference/functions/aggregate-functions/sumCount).

Valores possíveis:

* 0 — Funções com o mesmo argumento não são mescladas.
* 1 — Funções com o mesmo argumento são mescladas.

**Exemplo**

Consulta:

```sql theme={null}
CREATE TABLE fuse_tbl(a Int8, b Int8) Engine = Log;
SET optimize_syntax_fuse_functions = 1;
EXPLAIN SYNTAX run_query_tree_passes = 1 SELECT sum(a), sum(b), count(b), avg(b) from fuse_tbl FORMAT TSV;
```

Resultado:

```text theme={null}
SELECT
    sum(__table1.a) AS `sum(a)`,
    tupleElement(sumCount(__table1.b), 1) AS `sum(b)`,
    tupleElement(sumCount(__table1.b), 2) AS `count(b)`,
    divide(tupleElement(sumCount(__table1.b), 1), toFloat64(tupleElement(sumCount(__table1.b), 2))) AS `avg(b)`
FROM default.fuse_tbl AS __table1
```

<div id="optimize_throw_if_noop">
  ## optimize\_throw\_if\_noop
</div>

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

Ativa ou desativa o lançamento de uma exceção se uma consulta [OPTIMIZE](/pt-BR/reference/statements/optimize) não executar uma mesclagem.

Por padrão, `OPTIMIZE` retorna com sucesso mesmo que não faça nada. Essa configuração permite diferenciar essas situações e obter o motivo na mensagem de exceção.

Possible values:

* 1 — O lançamento de uma exceção está ativado.
* 0 — O lançamento de uma exceção está desativado.

<div id="optimize_time_filter_with_preimage">
  ## optimize\_time\_filter\_with\_preimage
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.2"},{"label": "1"},{"label": "Otimiza predicados de Date e DateTime convertendo funções em comparações equivalentes, sem conversões (ex.: toYear(col) = 2023 -> col >= '2023-01-01' AND col <= '2023-12-31')"}]}]} />

Otimiza predicados de Date e DateTime convertendo funções em comparações equivalentes, sem conversões (ex.: `toYear(col) = 2023 -> col >= '2023-01-01' AND col <= '2023-12-31'`)

<div id="optimize_trivial_approximate_count_query">
  ## optimize\_trivial\_approximate\_count\_query
</div>

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

Usa um valor aproximado para a otimização de contagem trivial em mecanismos de armazenamento que oferecem suporte a esse tipo de estimativa, por exemplo, EmbeddedRocksDB.

Valores possíveis:

* 0 — Otimização desabilitada.
  * 1 — Otimização habilitada.

<div id="optimize_trivial_count_query">
  ## optimize\_trivial\_count\_query
</div>

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

Ativa ou desativa a otimização da consulta trivial `SELECT count() FROM table` com base nos metadados do MergeTree. Se precisar usar segurança em nível de linha, desative essa configuração.

Valores possíveis:

* 0 — Otimização desativada.
  * 1 — Otimização ativada.

Veja também:

* [optimize\_functions\_to\_subcolumns](#optimize_functions_to_subcolumns)

<div id="optimize_trivial_group_by_limit_query">
  ## optimize\_trivial\_group\_by\_limit\_query
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "1"},{"label": "Nova configuração que limita a agregação a, no máximo, LIMIT chaves distintas para consultas `SELECT key_expr FROM t GROUP BY key_expr LIMIT n`."}]}]} />

Habilita ou desabilita a otimização de uma consulta trivial `SELECT key_expr FROM table GROUP BY key_expr LIMIT n` (sem funções de agregação na projeção, sem cláusulas `HAVING`/`ORDER BY`/`LIMIT BY`/window e sem modificadores `GROUP BY`) ao definir `max_rows_to_group_by = n + offset` com `group_by_overflow_mode = 'any'`. A agregação é interrompida assim que `n + offset` chaves distintas são produzidas.

A otimização é suprimida quando o usuário definiu explicitamente `group_by_overflow_mode` como um valor diferente de `any` (para preservar a escolha explícita de `throw`/`break`) e quando o usuário já definiu um `max_rows_to_group_by` mais restritivo (a otimização seria um no-op).

Valores possíveis:

* 0 — Otimização desabilitada.
  * 1 — Otimização habilitada.

<div id="optimize_trivial_insert_select">
  ## optimize\_trivial\_insert\_select
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.7"},{"label": "0"},{"label": "A otimização não faz sentido em muitos casos."}]}]} />

Otimiza a consulta trivial 'INSERT INTO table SELECT ... FROM TABLES'

<div id="optimize_truncate_order_by_after_group_by_keys">
  ## optimize\_truncate\_order\_by\_after\_group\_by\_keys
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "1"},{"label": "Remover os elementos finais de ORDER BY quando todas as chaves de GROUP BY já estiverem cobertas pelo prefixo de ORDER BY."}]}]} />

Remover os elementos finais de ORDER BY quando todas as chaves de GROUP BY já estiverem cobertas pelo prefixo de ORDER BY.

<div id="optimize_uniq_to_count">
  ## optimize\_uniq\_to\_count
</div>

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

Reescreve `uniq` e suas variantes (exceto `uniqUpTo`) como `count` se a subconsulta tiver `DISTINCT` ou cláusula `GROUP BY`.

<div id="optimize_use_implicit_projections">
  ## optimize\_use\_implicit\_projections
</div>

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

Escolhe automaticamente projeções implícitas para executar consultas SELECT

<div id="optimize_use_projection_filtering">
  ## optimize\_use\_projection\_filtering
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.6"},{"label": "1"},{"label": "Nova configuração"}]}]} />

Permite usar projeções para filtrar intervalos de partes, mesmo quando elas não são selecionadas para executar a consulta SELECT.

<div id="optimize_use_projections">
  ## optimize\_use\_projections
</div>

**Aliases**: `allow_experimental_projection_optimization`

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

Ativa ou desativa a otimização de [projeções](/pt-BR/reference/engines/table-engines/mergetree-family/mergetree#projections) ao processar consultas `SELECT`.

Possible values:

* 0 — Otimização de projeções desativada.
* 1 — Otimização de projeções ativada.

<div id="optimize_using_constraints">
  ## optimize\_using\_constraints
</div>

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

Use [restrições](/pt-BR/reference/statements/create/table#constraints) para otimizar consultas. O padrão é `false`.

Valores possíveis:

* true, false

<div id="os_threads_nice_value_materialized_view">
  ## os\_threads\_nice\_value\_materialized\_view
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.9"},{"label": "0"},{"label": "Nova configuração."}]}]} />

Valor nice do Linux para threads da visão materializada. Valores menores significam maior prioridade de CPU.

Requer a capability CAP\_SYS\_NICE; caso contrário, não tem efeito.

Valores possíveis: -20 a 19.

<div id="os_threads_nice_value_query">
  ## os\_threads\_nice\_value\_query
</div>

**Aliases**: `os_thread_priority`

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.9"},{"label": "0"},{"label": "Nova configuração."}]}]} />

Valor nice do Linux para threads de processamento de consultas. Valores menores significam maior prioridade de CPU.

Requer a capability CAP\_SYS\_NICE; caso contrário, não produz efeito.

Possible values: -20 a 19.

<div id="page_cache_block_size">
  ## page\_cache\_block\_size
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "1048576"},{"label": "Esta configuração passou a poder ser ajustada por consulta."}]}]} />

Tamanho dos fragmentos de arquivo a serem armazenados no cache de páginas em espaço do usuário, em bytes. Todas as leituras que passarem pelo cache serão arredondadas para cima para um múltiplo desse tamanho.

Esta configuração pode ser ajustada por consulta, mas entradas do cache com tamanhos de bloco diferentes não podem ser reutilizadas. Alterar esta configuração efetivamente invalida as entradas existentes no cache.

Um valor mais alto, como 1 MiB, é bom para consultas de alta vazão, e um valor mais baixo, como 64 KiB, é bom para consultas pontuais de baixa latência.

<div id="page_cache_inject_eviction">
  ## page\_cache\_inject\_eviction
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "0"},{"label": "Adicionado o cache de páginas em userspace"}]}]} />

O cache de páginas em userspace às vezes invalida páginas aleatoriamente. Destina-se a testes.

<div id="page_cache_lookahead_blocks">
  ## page\_cache\_lookahead\_blocks
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "16"},{"label": "Tornou essa configuração ajustável por consulta."}]}]} />

Em caso de miss no userspace page cache, lê até essa quantidade de blocos consecutivos de uma só vez do armazenamento subjacente, caso eles também não estejam no cache. Cada bloco tem page\_cache\_block\_size bytes.

Um valor mais alto é bom para consultas com alto throughput, enquanto consultas pontuais de baixa latência funcionam melhor sem readahead.

<div id="page_cache_max_coalesced_bytes">
  ## page\_cache\_max\_coalesced\_bytes
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "16777216"},{"label": "Nova configuração para limitar o tamanho de uma única leitura coalescida usada para preencher o cache de páginas em espaço de usuário quando há falha de cache."}]}]} />

Quando `readBigAt` preenche o cache de páginas em espaço de usuário, falhas de cache consecutivas são agrupadas em uma única leitura do armazenamento subjacente. Esta configuração limita, em bytes, o tamanho de uma leitura coalescida; sequências mais longas de falhas são divididas em múltiplas leituras. Ela limita o uso transitório de memória do buffer temporário durante leituras paralelas a frio.

Um valor mais alto reduz o número de requisições HTTP em varreduras a frio no armazenamento de objetos; um valor mais baixo reduz o pico de memória transitória.

<div id="paimon_target_snapshot_id">
  ## paimon\_target\_snapshot\_id
</div>

<SettingsInfoBlock type="Int64" default_value="-1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "-1"},{"label": "Nova configuração."}]}]} />

Leitura direcionada de snapshot no nível da consulta para o modo incremental do Paimon. Quando >0, o leitor buscará apenas o delta
do snapshot\_id especificado, sem avançar o watermark confirmado.
Padrão: -1 (desabilitado)

<div id="parallel_distributed_insert_select">
  ## parallel\_distributed\_insert\_select
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.7"},{"label": "2"},{"label": "Habilita INSERT ... SELECT distribuído em paralelo por padrão"}]}]} />

Habilita a consulta distribuída `INSERT ... SELECT` em paralelo.

Se executarmos consultas `INSERT INTO distributed_table_a SELECT ... FROM distributed_table_b`, e ambas as tabelas usarem o mesmo cluster, e ambas forem [replicadas](/pt-BR/reference/engines/table-engines/mergetree-family/replication) ou não replicadas, essa consulta será processada localmente em cada shard.

Valores possíveis:

* `0` — Desabilitado.
* `1` — `SELECT` será executado em cada shard a partir da tabela subjacente do motor Distributed.
* `2` — `SELECT` e `INSERT` serão executados em cada shard, da/para a tabela subjacente do motor Distributed.

Desde a v25.4, `INSERT ... SELECT` de uma origem `ReplicatedMergeTree` ou `SharedMergeTree` também pode ser paralelizado entre réplicas. Para habilitar:

* `parallel_distributed_insert_select = 2`
* `enable_parallel_replicas = 1`

<div id="parallel_hash_join_threshold">
  ## parallel\_hash\_join\_threshold
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "100000"},{"label": "Nova configuração"}]}, {"id": "row-2","items": [{"label": "25.4"},{"label": "0"},{"label": "Nova configuração"}]}, {"id": "row-3","items": [{"label": "25.3"},{"label": "0"},{"label": "Nova configuração"}]}]} />

Quando um algoritmo de join baseado em hash é usado, esse limite ajuda a decidir entre `hash` e `parallel_hash` (somente se a estimativa do tamanho da tabela à direita estiver disponível).
O primeiro é usado quando sabemos que o tamanho da tabela à direita está abaixo do limite.

<div id="parallel_non_joined_rows_processing">
  ## parallel\_non\_joined\_rows\_processing
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "1"},{"label": "Nova configuração para habilitar o processamento em paralelo de linhas sem correspondência em JOINs RIGHT/FULL com `parallel_hash`."}]}]} />

Permite que várias threads processem em paralelo as linhas sem correspondência da tabela à direita durante JOINs RIGHT e FULL.
Isso pode acelerar a fase de linhas sem correspondência ao usar o algoritmo de join `parallel_hash` com tabelas grandes.
Quando desabilitada, as linhas sem correspondência são processadas por uma única thread.

<div id="parallel_replica_offset">
  ## parallel\_replica\_offset
</div>

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

Esta é uma configuração interna que não deve ser usada diretamente e representa um detalhe de implementação do modo de 'réplicas paralelas'. Essa configuração será definida automaticamente pelo servidor iniciador, em consultas distribuídas, com o índice da réplica que participa do processamento da consulta entre as réplicas paralelas.

<div id="parallel_replicas_allow_in_with_subquery">
  ## parallel\_replicas\_allow\_in\_with\_subquery
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "1"},{"label": "Se true, a subconsulta de IN será executada em cada réplica seguidora"}]}]} />

Se true, a subconsulta de IN será executada em cada réplica seguidora.

<div id="parallel_replicas_allow_materialized_views">
  ## parallel\_replicas\_allow\_materialized\_views
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "1"},{"label": "Permite o uso de visões materializadas com réplicas paralelas"}]}]} />

Permite o uso de visões materializadas com réplicas paralelas

<div id="parallel_replicas_allow_view_over_mergetree">
  ## parallel\_replicas\_allow\_view\_over\_mergetree
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "0"},{"label": "Nova configuração"}]}]} />

Permite que réplicas paralelas executem a consulta externa de uma view simples sobre tabelas `MergeTree` (em vez da consulta interna da view), melhorando a paralelização entre os nós. Também se aplica a views `UNION ALL` cujos ramos leem de tabelas `MergeTree` diferentes.

<div id="parallel_replicas_connect_timeout_ms">
  ## parallel\_replicas\_connect\_timeout\_ms
</div>

<SettingsInfoBlock type="Milissegundos" default_value="300" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.6"},{"label": "300"},{"label": "Timeout de conexão separado para consultas com réplicas paralelas"}]}]} />

O timeout, em milissegundos, para se conectar a uma réplica remota durante a execução de consultas com réplicas paralelas. Se o timeout expirar, a réplica correspondente não será usada para a execuçã

<div id="parallel_replicas_count">
  ## parallel\_replicas\_count
</div>

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

Esta é uma configuração interna que não deve ser usada diretamente e representa um detalhe de implementação do modo de 'réplicas paralelas'. Essa configuração será definida automaticamente pelo servidor iniciador, em consultas distribuídas, com o número de réplicas paralelas que participam do processamento da consulta.

<div id="parallel_replicas_custom_key">
  ## parallel\_replicas\_custom\_key
</div>

Uma expressão inteira arbitrária que pode ser usada para dividir o trabalho entre as réplicas de uma tabela específica.
O valor pode ser qualquer expressão inteira.

Dê preferência a expressões simples que usem chaves primárias.

Se a configuração for usada em um cluster composto por um único shard com várias réplicas, essas réplicas serão convertidas em shards virtuais.
Caso contrário, ela se comportará da mesma forma que a chave `SAMPLE`: usará várias réplicas de cada shard.

<div id="parallel_replicas_custom_key_range_lower">
  ## parallel\_replicas\_custom\_key\_range\_lower
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.6"},{"label": "0"},{"label": "Adiciona configurações para controlar o filtro de intervalo ao usar réplicas paralelas com shards dinâmicos"}]}]} />

Permite que o filtro do tipo `range` divida o trabalho de forma equilibrada entre as réplicas com base no intervalo personalizado `[parallel_replicas_custom_key_range_lower, INT_MAX]`.

Quando usada em conjunto com [parallel\_replicas\_custom\_key\_range\_upper](#parallel_replicas_custom_key_range_upper), essa configuração permite que o filtro divida de forma equilibrada o trabalho entre as réplicas no intervalo `[parallel_replicas_custom_key_range_lower, parallel_replicas_custom_key_range_upper]`.

Observação: essa configuração não faz com que dados adicionais sejam filtrados durante o processamento da consulta; em vez disso, ela altera os pontos em que o filtro de intervalo divide a faixa `[0, INT_MAX]` para processamento paralelo.

<div id="parallel_replicas_custom_key_range_upper">
  ## parallel\_replicas\_custom\_key\_range\_upper
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.6"},{"label": "0"},{"label": "Adiciona configurações para controlar o filtro de intervalo ao usar réplicas paralelas com shards dinâmicos. Um valor 0 desativa o limite superior"}]}]} />

Permite que o tipo de filtro `range` divida o trabalho uniformemente entre as réplicas com base no intervalo personalizado `[0, parallel_replicas_custom_key_range_upper]`. Um valor 0 desativa o limite superior, definindo-o como o valor máximo da expressão de chave personalizada.

Quando usado em conjunto com [parallel\_replicas\_custom\_key\_range\_lower](#parallel_replicas_custom_key_range_lower), permite que o filtro divida uniformemente o trabalho entre as réplicas no intervalo `[parallel_replicas_custom_key_range_lower, parallel_replicas_custom_key_range_upper]`.

Observação: essa configuração não faz com que dados adicionais sejam filtrados durante o processamento da consulta; em vez disso, ela altera os pontos em que o filtro de intervalo divide o intervalo `[0, INT_MAX]` para processamento paralelo

<div id="parallel_replicas_filter_pushdown">
  ## parallel\_replicas\_filter\_pushdown
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "0"},{"label": "Nova configuração"}]}]} />

Permite fazer pushdown de filtros para a parte da consulta que as réplicas paralelas escolhem executar

<div id="parallel_replicas_for_cluster_engines">
  ## parallel\_replicas\_for\_cluster\_engines
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.3"},{"label": "1"},{"label": "Nova configuração."}]}]} />

Substitui os motores de função de tabela por suas alternativas -Cluster

<div id="parallel_replicas_for_non_replicated_merge_tree">
  ## parallel\_replicas\_for\_non\_replicated\_merge\_tree
</div>

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

Se true, o ClickHouse também usará o algoritmo de réplicas paralelas para tabelas MergeTree não replicadas.

<div id="parallel_replicas_index_analysis_only_on_coordinator">
  ## parallel\_replicas\_index\_analysis\_only\_on\_coordinator
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.12"},{"label": "1"},{"label": "A análise de índices é realizada apenas na réplica coordenadora e ignorada nas demais réplicas. Só tem efeito quando parallel_replicas_local_plan está habilitado"}]}, {"id": "row-2","items": [{"label": "24.10"},{"label": "1"},{"label": "A análise de índices é realizada apenas na réplica coordenadora e ignorada nas demais réplicas. Só tem efeito quando parallel_replicas_local_plan está habilitado"}]}]} />

A análise de índices é realizada apenas na réplica coordenadora e ignorada nas demais réplicas. Só tem efeito quando parallel\_replicas\_local\_pla

<div id="parallel_replicas_insert_select_local_pipeline">
  ## parallel\_replicas\_insert\_select\_local\_pipeline
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "1"},{"label": "Usa o pipeline local durante INSERT SELECT distribuído com réplicas paralelas. Atualmente desativado devido a problemas de desempenho"}]}, {"id": "row-2","items": [{"label": "25.4"},{"label": "0"},{"label": "Usa o pipeline local durante INSERT SELECT distribuído com réplicas paralelas. Atualmente desativado devido a problemas de desempenho"}]}]} />

Usa o pipeline local durante INSERT SELECT distribuído com réplicas paralelas

<div id="parallel_replicas_local_plan">
  ## parallel\_replicas\_local\_plan
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.9"},{"label": "0"},{"label": "Usar plano local para a réplica local em consultas com réplicas paralelas"}]}, {"id": "row-2","items": [{"label": "24.11"},{"label": "1"},{"label": "Usar plano local para a réplica local em consultas com réplicas paralelas"}]}, {"id": "row-3","items": [{"label": "24.10"},{"label": "1"},{"label": "Usar plano local para a réplica local em consultas com réplicas paralelas"}]}]} />

Criar plano local para a réplica local

<div id="parallel_replicas_mark_segment_size">
  ## parallel\_replicas\_mark\_segment\_size
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.9"},{"label": "0"},{"label": "O valor desta configuração agora é determinado automaticamente"}]}, {"id": "row-2","items": [{"label": "24.1"},{"label": "128"},{"label": "Nova configuração adicionada para controlar o tamanho do segmento na nova implementação do coordenador de réplicas paralelas"}]}]} />

As partes são divididas virtualmente em segmentos para serem distribuídas entre as réplicas para leitura em paralelo. Esta configuração controla o tamanho desses segmentos. Não é recomendável alterá-la até que você tenha absoluta certeza do que está fazendo. O valor deve estar no intervalo \[128; 16384]

<div id="parallel_replicas_min_number_of_rows_per_replica">
  ## parallel\_replicas\_min\_number\_of\_rows\_per\_replica
</div>

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

Limita o número de réplicas usadas em uma consulta a (linhas estimadas para ler / min\_number\_of\_rows\_per\_replica). O máximo ainda é limitado por 'max\_parallel\_replicas'

<div id="parallel_replicas_mode">
  ## parallel\_replicas\_mode
</div>

<SettingsInfoBlock type="ParallelReplicasMode" default_value="read_tasks" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.10"},{"label": "read_tasks"},{"label": "Esta configuração foi introduzida como parte da mudança do recurso de réplicas paralelas para Beta"}]}]} />

Tipo de filtro a ser usado com chave personalizada para réplicas paralelas. default - usa a operação de módulo na chave personalizada; range - usa um filtro de intervalo na chave personalizada, utilizando todos os valores possíveis para o tipo de valor da chave personalizada.

<div id="parallel_replicas_only_with_analyzer">
  ## parallel\_replicas\_only\_with\_analyzer
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.2"},{"label": "1"},{"label": "Réplicas paralelas são compatíveis apenas com o analyzer habilitado"}]}]} />

O analyzer deve estar habilitado para usar réplicas paralelas. Com o analyzer desabilitado, a execução da consulta faz fallback para a execução local, mesmo que a leitura paralela a partir de réplicas esteja habilitada. Não há suporte para usar réplicas paralelas sem o analyzer habilitado

<div id="parallel_replicas_prefer_local_join">
  ## parallel\_replicas\_prefer\_local\_join
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.2"},{"label": "1"},{"label": "Se true, e o JOIN puder ser executado com o algoritmo de réplicas paralelas, e todos os armazenamentos da parte direita do JOIN forem *MergeTree, será usado JOIN local em vez de GLOBAL JOIN."}]}]} />

Se true, e o JOIN puder ser executado com o algoritmo de réplicas paralelas, e todos os armazenamentos da parte direita do JOIN forem \*MergeTree, será usado JOIN local em vez de GLOBAL JOIN.

<div id="parallel_replicas_prefer_local_replica">
  ## parallel\_replicas\_prefer\_local\_replica
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "1"},{"label": "Nova configuração. Quando desabilitada, as réplicas para leitura paralela são selecionadas exclusivamente pelo algoritmo de balanceamento de carga, sem forçar a inclusão da réplica local no conjunto."}]}]} />

Quando habilitada (padrão), a réplica local é sempre incluída no conjunto de réplicas usado para leitura paralela.
Quando desabilitada, a réplica local não recebe nenhuma preferência, e as réplicas são selecionadas exclusivamente pelo algoritmo de balanceamento de carga.
Isso permite que consultas com `max_parallel_replicas = 1` sejam direcionadas a outro host, o que pode melhorar a localidade de cache quando muitas consultas curtas são distribuídas em um cluster.

<div id="parallel_replicas_support_projection">
  ## parallel\_replicas\_support\_projection
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "1"},{"label": "Nova configuração. A otimização de projeções pode ser aplicada em réplicas paralelas. Só tem efeito quando parallel_replicas_local_plan está habilitado e aggregation_in_order está inativo."}]}]} />

A otimização de projeções pode ser aplicada em réplicas paralelas. Só tem efeito quando parallel\_replicas\_local\_plan está habilitado e aggregation\_in\_order está inativo.

<div id="parallel_view_processing">
  ## parallel\_view\_processing
</div>

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

Habilita o envio de dados para views anexadas de forma concorrente em vez de sequencial.

<div id="parallelize_output_from_storages">
  ## parallelize\_output\_from\_storages
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "23.5"},{"label": "1"},{"label": "Permite paralelismo ao executar consultas que leem de arquivo/url/S3/etc. Isso pode reordenar as linhas."}]}]} />

Paraleliza a saída na etapa de leitura do armazenamento. Isso permite paralelizar o processamento da consulta logo após a leitura do armazenamento, quando possível

<div id="parsedatetime_e_requires_space_padding">
  ## parsedatetime\_e\_requires\_space\_padding
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "0"},{"label": "Compatibilidade aprimorada com MySQL DATE_FORMAT/STR_TO_DATE"}]}]} />

O formatador '%e' na função 'parseDateTime' exige que dias com um único dígito sejam preenchidos com espaço; por exemplo, ' 2' é aceito, mas '2' gera um erro.

<div id="parsedatetime_parse_without_leading_zeros">
  ## parsedatetime\_parse\_without\_leading\_zeros
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "23.11"},{"label": "1"},{"label": "Compatibilidade aprimorada com MySQL DATE_FORMAT/STR_TO_DATE"}]}]} />

Os formatadores '%c', '%l' e '%k' na função 'parseDateTime' interpretam meses e horas sem zeros à esquerda.

<div id="partial_merge_join_left_table_buffer_bytes">
  ## partial\_merge\_join\_left\_table\_buffer\_bytes
</div>

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

Se não for 0, agrupa os blocos da tabela à esquerda em blocos maiores para uso no lado esquerdo do partial merge join. Consome até 2x a memória especificada por thread de join.

<div id="partial_merge_join_rows_in_right_blocks">
  ## partial\_merge\_join\_rows\_in\_right\_blocks
</div>

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

Limita o tamanho dos blocos de dados do lado direito do JOIN no algoritmo partial merge join para consultas [JOIN](/pt-BR/reference/statements/select/join).

No servidor ClickHouse:

1. Divide os dados do lado direito do JOIN em blocos com até o número especificado de linhas.
2. Cria um índice para cada bloco com base nos valores mínimo e máximo.
3. Descarrega os blocos preparados para o disco, se possível.

Valores possíveis:

* Qualquer inteiro positivo. Faixa de valores recomendada: \[1000, 100000].

<div id="partial_result_on_first_cancel">
  ## partial\_result\_on\_first\_cancel
</div>

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

Permite que a consulta retorne um resultado parcial após ser cancelada.

<div id="parts_to_delay_insert">
  ## parts\_to\_delay\_insert
</div>

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

Se a tabela de destino contiver pelo menos essa quantidade de partes ativas em uma única partição, as inserções na tabela serão artificialmente desaceleradas.

<div id="parts_to_throw_insert">
  ## parts\_to\_throw\_insert
</div>

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

Se houver mais do que esse número de partes ativas em uma única partição da tabela de destino, gere a exceção 'Too many parts ...'.

<div id="per_part_index_stats">
  ## per\_part\_index\_stats
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "0"},{"label": "Nova configuração."}]}]} />

Registra estatísticas do índice por parte

<div id="poll_interval">
  ## poll\_interval
</div>

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

Bloqueia o loop de espera da consulta no servidor pelo número especificado de segundos.

<div id="polyglot_dialect">
  ## polyglot\_dialect
</div>

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": ""},{"label": "Nova configuração para definir o dialeto SQL de origem do transpiler polyglot."}]}]} />

Dialeto SQL de origem do transpiler polyglot (por exemplo, 'sqlite', 'mysql', 'postgresql', 'snowflake', 'duckdb').

<div id="postgresql_connection_attempt_timeout">
  ## postgresql\_connection\_attempt\_timeout
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.7"},{"label": "2"},{"label": "Permite controlar o parâmetro 'connect_timeout' da conexão com o PostgreSQL."}]}]} />

Tempo limite de conexão, em segundos, para uma única tentativa de conexão com o endpoint do PostgreSQL.
O valor é passado como parâmetro `connect_timeout` da URL de conexão.

<div id="postgresql_connection_pool_auto_close_connection">
  ## postgresql\_connection\_pool\_auto\_close\_connection
</div>

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

Feche a conexão antes de devolvê-la ao pool.

<div id="postgresql_connection_pool_retries">
  ## postgresql\_connection\_pool\_retries
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.7"},{"label": "2"},{"label": "Permite controlar o número de tentativas no pool de conexões do PostgreSQL."}]}]} />

Número de tentativas de push/pop do pool de conexões para o engine PostgreSQL de tabela e de banco de dados.

<div id="postgresql_connection_pool_size">
  ## postgresql\_connection\_pool\_size
</div>

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

Tamanho do pool de conexões do mecanismo de tabela PostgreSQL e do mecanismo de banco de dados.

<div id="postgresql_connection_pool_wait_timeout">
  ## postgresql\_connection\_pool\_wait\_timeout
</div>

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

Tempo limite de push/pop do pool de conexões quando o pool está vazio para o PostgreSQL table engine e o database engine. Por padrão, ele ficará bloqueado quando o pool estiver vazio.

<div id="postgresql_fault_injection_probability">
  ## postgresql\_fault\_injection\_probability
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.2"},{"label": "0"},{"label": "Nova configuração"}]}]} />

Probabilidade aproximada de falha nas consultas internas do PostgreSQL (para replicação). O valor válido está no intervalo \[0.0f, 1.0f]

<div id="predicate_statistics_sample_rate">
  ## predicate\_statistics\_sample\_rate
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "0"},{"label": "Nova configuração para coletar estatísticas de seletividade de predicados em system.predicate_statistics_log"}]}]} />

Coleta estatísticas de seletividade de predicados em `system.predicate_statistics_log`. Quando definido como N > 0, aproximadamente 1/N das consultas é amostrado (pelo ID da consulta). 0 significa desabilitado.

<div id="prefer_column_name_to_alias">
  ## prefer\_column\_name\_to\_alias
</div>

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

Ativa ou desativa o uso dos nomes originais das colunas em vez de aliases em expressões e cláusulas de consulta. Isso é especialmente importante quando o alias é igual ao nome da coluna; consulte [Expression Aliases](/pt-BR/reference/syntax#notes-on-usage). Ative essa configuração para tornar as regras de sintaxe de aliases no ClickHouse mais compatíveis com a maioria dos outros motores de banco de dados.

Valores possíveis:

* 0 — O nome da coluna é substituído pelo alias.
* 1 — O nome da coluna não é substituído pelo alias.

**Exemplo**

A diferença entre habilitado e desabilitado:

Consulta:

```sql theme={null}
SET prefer_column_name_to_alias = 0;
SELECT avg(number) AS number, max(number) FROM numbers(10);
```

Resultado:

```text theme={null}
Received exception from server (version 21.5.1):
Code: 184. DB::Exception: Received from localhost:9000. DB::Exception: Aggregate function avg(number) is found inside another aggregate function in query: While processing avg(number) AS number.
```

Consulta:

```sql theme={null}
SET prefer_column_name_to_alias = 1;
SELECT avg(number) AS number, max(number) FROM numbers(10);
```

Resultado:

```text theme={null}
┌─number─┬─max(number)─┐
│    4.5 │           9 │
└────────┴─────────────┘
```

<div id="prefer_external_sort_block_bytes">
  ## prefer\_external\_sort\_block\_bytes
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.5"},{"label": "16744704"},{"label": "Prefere o número máximo de bytes por bloco para ordenação externa, reduzindo o uso de memória durante a mesclagem."}]}]} />

Prefere o número máximo de bytes por bloco para ordenação externa, reduzindo o uso de memória durante a mesclagem.

<div id="prefer_global_in_and_join">
  ## prefer\_global\_in\_and\_join
</div>

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

Habilita a substituição dos operadores `IN`/`JOIN` por `GLOBAL IN`/`GLOBAL JOIN`.

Valores possíveis:

* 0 — Desabilitado. Os operadores `IN`/`JOIN` não são substituídos por `GLOBAL IN`/`GLOBAL JOIN`.
* 1 — Habilitado. Os operadores `IN`/`JOIN` são substituídos por `GLOBAL IN`/`GLOBAL JOIN`.

**Uso**

Embora `SET distributed_product_mode=global` possa alterar o comportamento das consultas em tabelas distribuídas, ele não é adequado para tabelas locais nem para tabelas de recursos externos. É nesse ponto que a configuração `prefer_global_in_and_join` se torna útil.

Por exemplo, podemos ter nós de consulta que contêm tabelas locais, que não são adequadas para distribuição. Precisamos distribuir esses dados dinamicamente durante o processamento distribuído com a palavra-chave `GLOBAL` — `GLOBAL IN`/`GLOBAL JOIN`.

Outro caso de uso de `prefer_global_in_and_join` é o acesso a tabelas criadas por motores externos. Essa configuração ajuda a reduzir o número de chamadas a fontes externas ao fazer join dessas tabelas: apenas uma chamada por consulta.

**Veja também:**

* [Subconsultas distribuídas](/pt-BR/reference/statements/in#distributed-subqueries) para mais informações sobre como usar `GLOBAL IN`/`GLOBAL JOIN`

<div id="prefer_localhost_replica">
  ## prefer\_localhost\_replica
</div>

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

Habilita/desabilita o uso preferencial da réplica `localhost` ao processar consultas distribuídas.

Possíveis valores:

* 1 — o ClickHouse sempre envia a consulta para a réplica `localhost`, se ela existir.
* 0 — o ClickHouse usa a estratégia de balanceamento especificada pela configuração [load\_balancing](#load_balancing).

<Note>
  Desative essa configuração se você usar [max\_parallel\_replicas](#max_parallel_replicas) sem [parallel\_replicas\_custom\_key](#parallel_replicas_custom_key).
  Se [parallel\_replicas\_custom\_key](#parallel_replicas_custom_key) estiver definido, desative essa configuração apenas se ela for usada em um cluster com vários shards contendo várias réplicas.
  Se ela for usada em um cluster com um único shard e várias réplicas, desativar essa configuração terá efeitos negativos.
</Note>

<div id="prefer_warmed_unmerged_parts_seconds">
  ## prefer\_warmed\_unmerged\_parts\_seconds
</div>

<SettingsInfoBlock type="Int64" default_value="0" />

Só tem efeito no ClickHouse Cloud. Se uma parte mesclada tiver menos do que esta quantidade de segundos e não estiver pré-aquecida (consulte [cache\_populated\_by\_fetch](/pt-BR/reference/settings/merge-tree-settings#cache_populated_by_fetch)), mas todas as suas partes de origem estiverem disponíveis e pré-aquecidas, as consultas SELECT lerão dessas partes em vez da parte mesclada. Apenas para Replicated-/SharedMergeTree. Observe que isso verifica apenas se o CacheWarmer processou a parte; se a parte tiver sido carregada no cache por outro mecanismo, ela ainda será considerada fria até que o CacheWarmer a processe; se tiver sido aquecida e depois removida do cache, ainda assim será considerada quente.

<div id="preferred_block_size_bytes">
  ## preferred\_block\_size\_bytes
</div>

<SettingsInfoBlock type="UInt64" default_value="1000000" />

Esta configuração ajusta o tamanho do bloco de dados para o processamento de consultas e representa um ajuste fino adicional em relação à configuração mais genérica 'max\_block\_size'. Se as colunas forem grandes e, com 'max\_block\_size' linhas, o tamanho do bloco provavelmente ultrapassar a quantidade de bytes especificada, ele será reduzido para melhorar a localidade de cache da CPU.

<div id="preferred_max_column_in_block_size_bytes">
  ## preferred\_max\_column\_in\_block\_size\_bytes
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Limite do tamanho máximo da coluna no bloco durante a leitura. Ajuda a reduzir a quantidade de falhas de cache. Deve ficar próximo ao tamanho do cache L2.

<div id="preferred_optimize_projection_name">
  ## preferred\_optimize\_projection\_name
</div>

Se for definido como uma string não vazia, o ClickHouse tentará aplicar a projeção especificada na consulta.

Valores possíveis:

* string: nome da projeção preferida

<div id="prefetch_buffer_size">
  ## prefetch\_buffer\_size
</div>

<SettingsInfoBlock type="UInt64" default_value="1048576" />

O tamanho máximo do buffer de prefetch para leitura no sistema de arquivos.

<div id="print_pretty_type_names">
  ## print\_pretty\_type\_names
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.1"},{"label": "1"},{"label": "Melhor experiência do usuário."}]}]} />

Permite exibir nomes de tipos com aninhamento profundo de forma legível, com recuos, na consulta `DESCRIBE` e na função `toTypeName()`.

Exemplo:

```sql theme={null}
CREATE TABLE test (a Tuple(b String, c Tuple(d Nullable(UInt64), e Array(UInt32), f Array(Tuple(g String, h Map(String, Array(Tuple(i String, j UInt64))))), k Date), l Nullable(String))) ENGINE=Memory;
DESCRIBE TABLE test FORMAT TSVRaw SETTINGS print_pretty_type_names=1;
```

```
a   Tuple(
    b String,
    c Tuple(
        d Nullable(UInt64),
        e Array(UInt32),
        f Array(Tuple(
            g String,
            h Map(
                String,
                Array(Tuple(
                    i String,
                    j UInt64
                ))
            )
        )),
        k Date
    ),
    l Nullable(String)
)
```

<div id="priority">
  ## priority
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Prioridade da consulta. 1 — a mais alta; quanto maior o valor, menor a prioridade; 0 — não usar prioridades.

<div id="promql_database">
  ## promql\_database
</div>

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": ""},{"label": "Nova configuração experimental"}]}]} />

Especifica o nome do banco de dados usado pelo dialeto 'promql'. Uma string vazia significa o banco de dados atual.

<div id="promql_evaluation_time">
  ## promql\_evaluation\_time
</div>

**Aliases**: `evaluation_time`

<SettingsInfoBlock type="FloatAuto" default_value="auto" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.9"},{"label": "auto"},{"label": "A configuração foi renomeada. O nome anterior era `evaluation_time`."}]}]} />

Define o horário de avaliação a ser usado com o dialeto promql. 'auto' significa o horário atual.

<div id="promql_table">
  ## promql\_table
</div>

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": ""},{"label": "Nova configuração experimental"}]}]} />

Especifica o nome de uma tabela TimeSeries usada pelo dialeto 'promql'.

<div id="push_external_roles_in_interserver_queries">
  ## push\_external\_roles\_in\_interserver\_queries
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.11"},{"label": "1"},{"label": "Nova configuração."}]}]} />

Habilita o envio dos papéis do usuário do nó de origem para outros nós ao executar uma consulta.

<div id="query_cache_compress_entries">
  ## query\_cache\_compress\_entries
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Comprime as entradas no [cache de consultas](/pt-BR/concepts/features/performance/caches/query-cache). Reduz o consumo de memória do cache de consultas ao custo de inserções e leituras mais lentas.

Valores possíveis:

* 0 - Desativado
* 1 - Ativado

<div id="query_cache_for_subqueries">
  ## query\_cache\_for\_subqueries
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "0"},{"label": "Nova configuração para habilitar a propagação de `use_query_cache` para todas as subconsultas. Sem ela, as subconsultas só são armazenadas em cache com opt-in explícito em cada subconsulta, usando `SETTINGS use_query_cache = true`."}]}]} />

Se ativado, os resultados das subconsultas podem ser gravados no [cache de consultas](/pt-BR/concepts/features/performance/caches/query-cache) e lidos dele. Isso permite propagar `use_query_cache` para todas as subconsultas.

Valores possíveis:

* 0 - Desativado
* 1 - Ativado

<div id="query_cache_max_entries">
  ## query\_cache\_max\_entries
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

O número máximo de resultados de consultas que o usuário atual pode armazenar no [cache de consultas](/pt-BR/concepts/features/performance/caches/query-cache). 0 significa ilimitado.

Valores possíveis:

* Número inteiro >= 0.

<div id="query_cache_max_size_in_bytes">
  ## query\_cache\_max\_size\_in\_bytes
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

A quantidade máxima de memória (em bytes) que o usuário atual pode alocar no [cache de consultas](/pt-BR/concepts/features/performance/caches/query-cache). 0 significa sem limite.

Valores possíveis:

* Inteiro positivo >= 0.

<div id="query_cache_min_query_duration">
  ## query\_cache\_min\_query\_duration
</div>

<SettingsInfoBlock type="Milissegundos" default_value="0" />

Duração mínima, em milissegundos, que uma consulta precisa ser executada para que seu resultado seja armazenado no [cache de consultas](/pt-BR/concepts/features/performance/caches/query-cache).

Valores possíveis:

* Inteiro >= 0.

<div id="query_cache_min_query_runs">
  ## query\_cache\_min\_query\_runs
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Número mínimo de vezes que uma consulta `SELECT` precisa ser executada antes que seu resultado seja armazenado no [cache de consultas](/pt-BR/concepts/features/performance/caches/query-cache).

Valores possíveis:

* Número inteiro positivo >= 0.

<div id="query_cache_nondeterministic_function_handling">
  ## query\_cache\_nondeterministic\_function\_handling
</div>

<SettingsInfoBlock type="QueryResultCacheNondeterministicFunctionHandling" default_value="throw" />

Controla como o [cache de consultas](/pt-BR/concepts/features/performance/caches/query-cache) lida com consultas `SELECT` que usam funções não determinísticas, como `rand()` ou `now()`.

Valores possíveis:

* `'throw'` - Lança uma exceção e não armazena o resultado da consulta em cache.
* `'save'` - Armazena o resultado da consulta em cache.
* `'ignore'` - Não armazena o resultado da consulta em cache e não lança uma exceção.

<div id="query_cache_share_between_users">
  ## query\_cache\_share\_between\_users
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Se ativada, o resultado de consultas `SELECT` armazenadas no [cache de consultas](/pt-BR/concepts/features/performance/caches/query-cache) pode ser lido por outros usuários.
Não é recomendável habilitar essa configuração por motivos de segurança.

Valores possíveis:

* 0 - Desativado
* 1 - Ativado

<div id="query_cache_squash_partial_results">
  ## query\_cache\_squash\_partial\_results
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Agrupa blocos de resultados parciais em blocos do tamanho de [max\_block\_size](#max_block_size). Reduz o desempenho das inserções no [cache de consultas](/pt-BR/concepts/features/performance/caches/query-cache), mas melhora a compressibilidade das entradas de cache (consulte [query\_cache\_compress-entries](#query_cache_compress_entries)).

Valores possíveis:

* 0 - Desabilitado
* 1 - Habilitado

<div id="query_cache_system_table_handling">
  ## query\_cache\_system\_table\_handling
</div>

<SettingsInfoBlock type="QueryResultCacheSystemTableHandling" default_value="throw" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.4"},{"label": "throw"},{"label": "O cache de consultas não armazena mais resultados de consultas em tabelas do sistema"}]}]} />

Controla como o [cache de consultas](/pt-BR/concepts/features/performance/caches/query-cache) lida com consultas `SELECT` em tabelas do sistema, ou seja, tabelas nos bancos de dados `system.*` e `information_schema.*`.

Valores possíveis:

* `'throw'` - Lança uma exceção e não armazena em cache o resultado da consulta.
* `'save'` - Armazena em cache o resultado da consulta.
* `'ignore'` - Não armazena em cache o resultado da consulta nem lança uma exceção.

<div id="query_cache_tag">
  ## query\_cache\_tag
</div>

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.8"},{"label": ""},{"label": "Nova configuração para atribuir rótulos às configurações do cache de consultas."}]}]} />

Uma string que funciona como rótulo para entradas do [cache de consultas](/pt-BR/concepts/features/performance/caches/query-cache).
As mesmas consultas com rótulos diferentes são consideradas diferentes pelo cache de consultas.

Valores possíveis:

* Qualquer string

<div id="query_cache_ttl">
  ## query\_cache\_ttl
</div>

<SettingsInfoBlock type="Segundos" default_value="60" />

Após esse período, em segundos, as entradas no [cache de consultas](/pt-BR/concepts/features/performance/caches/query-cache) ficam desatualizadas.

Valores possíveis:

* Inteiro positivo >= 0.

<div id="query_metric_log_interval">
  ## query\_metric\_log\_interval
</div>

<SettingsInfoBlock type="Int64" default_value="-1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.10"},{"label": "-1"},{"label": "Nova configuração."}]}]} />

O intervalo, em milissegundos, em que o [query\_metric\_log](/pt-BR/reference/system-tables/query_metric_log) de consultas individuais é coletado.

Se for definido como qualquer valor negativo, assumirá o valor de `collect_interval_milliseconds` da [configuração query\_metric\_log](/pt-BR/reference/settings/server-settings/settings#query_metric_log) ou, se ela não estiver presente, usará o valor padrão de 1000.

Para desativar a coleta de uma única consulta, defina `query_metric_log_interval` como 0.

Valor padrão: -1

<div id="query_plan_aggregation_in_order">
  ## query\_plan\_aggregation\_in\_order
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "22.12"},{"label": "1"},{"label": "Habilita algumas refatorações relacionadas ao plano de consulta"}]}]} />

Ativa ou desativa a otimização de agregação em ordem no nível do plano de consulta.
Só tem efeito se a configuração [`query_plan_enable_optimizations`](#query_plan_enable_optimizations) estiver definida como 1.

<Note>
  Esta é uma configuração de nível avançado que deve ser usada apenas para depuração por desenvolvedores. A configuração pode mudar no futuro de formas incompatíveis com versões anteriores ou ser removida.
</Note>

Valores possíveis:

* 0 - Desabilita
* 1 - Habilita

<div id="query_plan_convert_any_join_to_semi_or_anti_join">
  ## query\_plan\_convert\_any\_join\_to\_semi\_or\_anti\_join
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.9"},{"label": "1"},{"label": "Nova configuração."}]}]} />

Permite converter ANY JOIN em SEMI ou ANTI JOIN se o filtro após o JOIN sempre resultar em falso para linhas correspondentes ou não correspondentes

<div id="query_plan_convert_join_to_in">
  ## query\_plan\_convert\_join\_to\_in
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.4"},{"label": "0"},{"label": "Nova configuração"}]}]} />

Permite converter `JOIN` em subconsulta com `IN` se as colunas de saída pertencerem apenas à tabela da esquerda. Pode gerar resultados incorretos com JOINs diferentes de ANY (por exemplo, ALL JOINs, que é o padrão).

<div id="query_plan_convert_outer_join_to_inner_join">
  ## query\_plan\_convert\_outer\_join\_to\_inner\_join
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.4"},{"label": "1"},{"label": "Permite converter `OUTER JOIN` em `INNER JOIN` se o filtro após o `JOIN` sempre eliminar valores padrão"}]}]} />

Permite converter `OUTER JOIN` em `INNER JOIN` se o filtro após o `JOIN` sempre eliminar valores padrão

<div id="query_plan_direct_read_from_text_index">
  ## query\_plan\_direct\_read\_from\_text\_index
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "1"},{"label": "O índice de texto agora está em GA"}]}, {"id": "row-2","items": [{"label": "25.9"},{"label": "1"},{"label": "Nova configuração."}]}]} />

Permite executar a filtragem de busca de texto completo usando apenas o índice de texto invertido no plano de consulta.

<div id="query_plan_display_internal_aliases">
  ## query\_plan\_display\_internal\_aliases
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.9"},{"label": "0"},{"label": "Nova configuração"}]}]} />

Exibe aliases internos (como \_\_table1) no EXPLAIN PLAN em vez dos especificados na consulta original.

<div id="query_plan_enable_multithreading_after_window_functions">
  ## query\_plan\_enable\_multithreading\_after\_window\_functions
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Habilita o multithreading após a avaliação das funções de janela para permitir o processamento de streams em paralelo

<div id="query_plan_enable_optimizations">
  ## query\_plan\_enable\_optimizations
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Ativa ou desativa a otimização de consultas no nível do plano de consulta.

<Note>
  Esta é uma configuração de nível avançado que deve ser usada apenas por desenvolvedores para depuração. A configuração pode mudar no futuro de formas incompatíveis com versões anteriores ou ser removida.
</Note>

Valores possíveis:

* 0 - Desabilita todas as otimizações no nível do plano de consulta
* 1 - Habilita as otimizações no nível do plano de consulta (mas otimizações individuais ainda podem ser desabilitadas por meio de suas próprias configurações)

<div id="query_plan_execute_functions_after_sorting">
  ## query\_plan\_execute\_functions\_after\_sorting
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Ativa ou desativa uma otimização no nível do plano de consulta que move expressões para após as etapas de ordenação.
Só entra em vigor se a configuração [`query_plan_enable_optimizations`](#query_plan_enable_optimizations) for 1.

<Note>
  Esta é uma configuração de nível avançado que deve ser usada apenas para depuração por desenvolvedores. A configuração poderá mudar no futuro de maneiras incompatíveis com versões anteriores ou ser removida.
</Note>

Valores possíveis:

* 0 - Desabilita
* 1 - Habilita

<div id="query_plan_filter_push_down">
  ## query\_plan\_filter\_push\_down
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Ativa ou desativa uma otimização no nível do plano de consulta que desloca os filtros para baixo no plano de execução.
Só tem efeito se a configuração [query\_plan\_enable\_optimizations](#query_plan_enable_optimizations) estiver definida como 1.

<Note>
  Esta é uma configuração de nível avançado que deve ser usada apenas para depuração por desenvolvedores. A configuração pode mudar no futuro de formas incompatíveis com versões anteriores ou ser removida.
</Note>

Valores possíveis:

* 0 - Desativar
* 1 - Ativar

<div id="query_plan_join_shard_by_pk_ranges">
  ## query\_plan\_join\_shard\_by\_pk\_ranges
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.4"},{"label": "0"},{"label": "Nova configuração"}]}]} />

Aplica sharding ao JOIN se as chaves de junção contiverem um prefixo da PRIMARY KEY em ambas as tabelas. Compatível com os algoritmos hash, parallel\_hash e full\_sorting\_merge. Normalmente não acelera as consultas, mas pode reduzir o consumo de memória.

<div id="query_plan_join_swap_table">
  ## query\_plan\_join\_swap\_table
</div>

<SettingsInfoBlock type="BoolAuto" default_value="auto" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.12"},{"label": "auto"},{"label": "Nova configuração. Antes, a tabela da direita era sempre escolhida."}]}]} />

Determina qual lado do join deve ser a tabela de build (também chamada de inner, aquela inserida na tabela hash em um hash join) no plano de consulta. Essa configuração tem suporte apenas para strictness de join `ALL` com a cláusula `JOIN ON`. Os valores possíveis são:

* 'auto': Permite que o planner decida qual tabela usar como tabela de build.
  * 'false': Nunca troca as tabelas (a tabela da direita é a tabela de build).
  * 'true': Sempre troca as tabelas (a tabela da esquerda é a tabela de build).

<div id="query_plan_lift_up_array_join">
  ## query\_plan\_lift\_up\_array\_join
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Ativa ou desativa uma otimização em nível de plano de consulta que move cláusulas ARRAY JOIN para cima no plano de execução.
Só entra em vigor se a configuração [query\_plan\_enable\_optimizations](#query_plan_enable_optimizations) for 1.

<Note>
  Esta é uma configuração de nível avançado que deve ser usada apenas para depuração por desenvolvedores. A configuração pode mudar no futuro de formas incompatíveis com versões anteriores ou ser removida.
</Note>

Valores possíveis:

* 0 - Desabilita
* 1 - Habilita

<div id="query_plan_lift_up_union">
  ## query\_plan\_lift\_up\_union
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Ativa ou desativa uma otimização em nível de plano de consulta que move subárvores maiores do plano de consulta para o union, permitindo otimizações adicionais.
Só tem efeito se a configuração [`query_plan_enable_optimizations`](#query_plan_enable_optimizations) estiver definida como 1.

<Note>
  Esta é uma configuração de nível avançado que deve ser usada apenas para depuração por desenvolvedores. A configuração pode mudar no futuro de maneiras incompatíveis com versões anteriores ou ser removida.
</Note>

Valores possíveis:

* 0 - Desabilita
* 1 - Habilita

<div id="query_plan_max_limit_for_lazy_materialization">
  ## query\_plan\_max\_limit\_for\_lazy\_materialization
</div>

<SettingsInfoBlock type="UInt64" default_value="10000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.4"},{"label": "10"},{"label": "Nova configuração adicionada para controlar o valor máximo que permite usar o plano de consulta para a otimização de materialização tardia. Se for zero, não há limite"}]}, {"id": "row-2","items": [{"label": "25.12"},{"label": "10000"},{"label": "Limite aumentado após melhoria de desempenho"}]}, {"id": "row-3","items": [{"label": "25.11"},{"label": "100"},{"label": "Mais otimizado"}]}]} />

Controla o valor máximo que permite usar o plano de consulta para a otimização de materialização tardia. Se for zero, não há limite.

<div id="query_plan_max_limit_for_top_k_optimization">
  ## query\_plan\_max\_limit\_for\_top\_k\_optimization
</div>

<SettingsInfoBlock type="UInt64" default_value="1000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "1000"},{"label": "Nova configuração."}]}]} />

Define o valor máximo de limite que permite avaliar o plano de consulta para a otimização TopK usando o índice de omissão minmax e a filtragem dinâmica por limiar. Se for zero, não há limite.

<div id="query_plan_max_optimizations_to_apply">
  ## query\_plan\_max\_optimizations\_to\_apply
</div>

<SettingsInfoBlock type="UInt64" default_value="10000" />

Limita o número total de otimizações aplicadas ao plano da consulta; consulte a configuração [query\_plan\_enable\_optimizations](#query_plan_enable_optimizations).
Útil para evitar tempos de otimização excessivos em consultas complexas.
Na consulta EXPLAIN PLAN, para de aplicar otimizações após esse limite ser atingido e retorna o plano como está.
Na execução normal de consultas, se o número real de otimizações exceder essa configuração, uma exceção será lançada.

<Note>
  Esta é uma configuração de nível avançado que deve ser usada apenas para depuração por desenvolvedores. A configuração pode mudar no futuro de formas incompatíveis com versões anteriores ou ser removida.
</Note>

<div id="query_plan_max_step_description_length">
  ## query\_plan\_max\_step\_description\_length
</div>

<SettingsInfoBlock type="UInt64" default_value="500" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.9"},{"label": "500"},{"label": "Nova configuração"}]}]} />

Comprimento máximo da descrição do passo no EXPLAIN PLAN.

<div id="query_plan_merge_expressions">
  ## query\_plan\_merge\_expressions
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Ativa ou desativa uma otimização no nível do plano de consulta que mescla filtros consecutivos.
Só entra em vigor se a configuração [query\_plan\_enable\_optimizations](#query_plan_enable_optimizations) for 1.

<Note>
  Esta é uma configuração de nível avançado que deve ser usada apenas para debugging por desenvolvedores. A configuração pode mudar no futuro de formas incompatíveis com versões anteriores ou ser removida.
</Note>

Valores possíveis:

* 0 - Desabilita
* 1 - Habilita

<div id="query_plan_merge_filter_into_join_condition">
  ## query\_plan\_merge\_filter\_into\_join\_condition
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.4"},{"label": "1"},{"label": "Adicionada nova configuração para mesclar o filtro à condição de join"}]}]} />

Permite mesclar o filtro à condição de `JOIN` e converter `CROSS JOIN` em `INNER`.

<div id="query_plan_merge_filters">
  ## query\_plan\_merge\_filters
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.7"},{"label": "0"},{"label": "Permite mesclar filtros no plano de consulta"}]}, {"id": "row-2","items": [{"label": "24.11"},{"label": "1"},{"label": "Permite mesclar filtros no plano de consulta. Isso é necessário para oferecer suporte adequado ao push-down de filtros com o analyzer."}]}]} />

Permite mesclar filtros no plano de consulta.

<div id="query_plan_optimize_join_order_algorithm">
  ## query\_plan\_optimize\_join\_order\_algorithm
</div>

<SettingsInfoBlock type="JoinOrderAlgorithm" default_value="greedy" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "greedy"},{"label": "Nova configuração experimental."}]}]} />

Especifica quais algoritmos de ordem de JOIN devem ser usados durante a otimização do plano de consulta. Os seguintes algoritmos estão disponíveis:

* 'greedy' - algoritmo guloso básico - é rápido, mas pode não produzir a melhor ordem de join
* 'dpsize' - implementa o algoritmo DPsize, atualmente apenas para junções Inner - considera todas as ordens de join possíveis e encontra a mais otimizada, mas pode ser lento para consultas com muitas tabelas e predicados de join.
  É possível especificar vários algoritmos, por exemplo, 'dpsize,greedy'.

<div id="query_plan_optimize_join_order_limit">
  ## query\_plan\_optimize\_join\_order\_limit
</div>

<SettingsInfoBlock type="UInt64" default_value="10" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.9"},{"label": "1"},{"label": "Nova configuração"}]}, {"id": "row-2","items": [{"label": "25.12"},{"label": "10"},{"label": "Permite a reordenação de JOIN com mais tabelas por padrão"}]}]} />

Otimiza a ordem das junções dentro da mesma subconsulta. No momento, há suporte apenas para casos muito limitados.
O valor é o número máximo de tabelas a serem otimizadas.

<div id="query_plan_optimize_join_order_randomize">
  ## query\_plan\_optimize\_join\_order\_randomize
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "0"},{"label": "Nova configuração para aleatorizar estatísticas da ordem de join para testes."}]}]} />

Quando diferente de zero, o otimizador da ordem de join usa cardinalidades e NDVs gerados aleatoriamente em vez de estatísticas reais.
Quando definido como 1, uma semente aleatória é gerada; quando definido como um valor > 1, esse valor é usado diretamente como semente.
Essa opção se destina a testes para identificar erros causados por diferentes ordenações de join.

<div id="query_plan_optimize_lazy_final">
  ## query\_plan\_optimize\_lazy\_final
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "0"},{"label": "Nova configuração para otimizar a leitura com FINAL do ReplacingMergeTree usando análise de índices baseada em conjuntos"}]}]} />

Otimize a leitura com FINAL do ReplacingMergeTree criando um conjunto de chaves primárias e usando-o na análise de índices.

<div id="query_plan_optimize_lazy_materialization">
  ## query\_plan\_optimize\_lazy\_materialization
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.4"},{"label": "1"},{"label": "Nova configuração adicionada para usar o plano de consulta na otimização de materialização tardia"}]}]} />

Usa o plano de consulta na otimização de materialização tardia.

<div id="query_plan_optimize_prewhere">
  ## query\_plan\_optimize\_prewhere
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.2"},{"label": "1"},{"label": "Permite aplicar push down do filtro à expressão PREWHERE em armazenamentos compatíveis"}]}]} />

Permite aplicar push down do filtro à expressão PREWHERE em armazenamentos compatíveis

<div id="query_plan_push_down_limit">
  ## query\_plan\_push\_down\_limit
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Ativa ou desativa uma otimização no nível do plano de consulta que move cláusulas `LIMIT` para baixo no plano de execução.
Só tem efeito se a configuração [query\_plan\_enable\_optimizations](#query_plan_enable_optimizations) estiver definida como 1.

<Note>
  Esta é uma configuração de nível especialista que só deve ser usada para depuração por desenvolvedores. A configuração poderá mudar no futuro de maneiras incompatíveis com versões anteriores ou ser removida.
</Note>

Valores possíveis:

* 0 - Desativar
* 1 - Ativar

<div id="query_plan_read_in_order">
  ## query\_plan\_read\_in\_order
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Ativa ou desativa a otimização de leitura em ordem no nível do plano de consulta.
Só tem efeito se a configuração [`query_plan_enable_optimizations`](#query_plan_enable_optimizations) estiver definida como 1.

<Note>
  Esta é uma configuração de nível especialista que deve ser usada apenas para depuração por desenvolvedores. A configuração poderá mudar no futuro de formas incompatíveis com versões anteriores ou ser removida.
</Note>

Valores possíveis:

* 0 - Desabilita
* 1 - Habilita

<div id="query_plan_read_in_order_through_join">
  ## query\_plan\_read\_in\_order\_through\_join
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "1"},{"label": "Nova configuração"}]}]} />

Mantém a leitura em ordem da tabela à esquerda em operações JOIN, o que pode ser aproveitado por etapas subsequentes.

<div id="query_plan_remove_redundant_distinct">
  ## query\_plan\_remove\_redundant\_distinct
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "23.2"},{"label": "1"},{"label": "Remove a etapa DISTINCT redundante no plano da consulta"}]}]} />

Ativa/desativa uma otimização no nível do plano da consulta que remove etapas DISTINCT redundantes.
Só tem efeito se a configuração [`query_plan_enable_optimizations`](#query_plan_enable_optimizations) for 1.

<Note>
  Esta é uma configuração para especialistas, que deve ser usada apenas para depuração por desenvolvedores. A configuração poderá mudar no futuro de formas incompatíveis com versões anteriores ou ser removida.
</Note>

Valores possíveis:

* 0 - Desativar
* 1 - Ativar

<div id="query_plan_remove_redundant_sorting">
  ## query\_plan\_remove\_redundant\_sorting
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "23.1"},{"label": "1"},{"label": "Remove a ordenação redundante no plano de consulta. Por exemplo, etapas de ordenação relacionadas a cláusulas ORDER BY em subconsultas"}]}]} />

Ativa ou desativa uma otimização no nível do plano de consulta que remove etapas de ordenação redundantes, por exemplo, em subconsultas.
Só tem efeito se a configuração [`query_plan_enable_optimizations`](#query_plan_enable_optimizations) estiver definida como 1.

<Note>
  Esta é uma configuração de nível avançado que deve ser usada apenas para depuração por desenvolvedores. A configuração pode mudar no futuro de maneiras incompatíveis com versões anteriores ou ser removida.
</Note>

Valores possíveis:

* 0 - Desabilita
* 1 - Habilita

<div id="query_plan_remove_unused_columns">
  ## query\_plan\_remove\_unused\_columns
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "1"},{"label": "Nova configuração. Adiciona uma otimização para remover colunas não utilizadas no plano de consulta."}]}]} />

Ativa ou desativa uma otimização no nível do plano de consulta que tenta remover colunas não utilizadas (tanto de entrada quanto de saída) das etapas do plano de consulta.
Só surte efeito se a configuração [query\_plan\_enable\_optimizations](#query_plan_enable_optimizations) estiver definida como 1.

<Note>
  Esta é uma configuração de nível avançado que deve ser usada apenas para depuração por desenvolvedores. A configuração pode mudar no futuro de formas incompatíveis com versões anteriores ou ser removida.
</Note>

Valores possíveis:

* 0 - Desabilita
* 1 - Habilita

<div id="query_plan_reuse_storage_ordering_for_window_functions">
  ## query\_plan\_reuse\_storage\_ordering\_for\_window\_functions
</div>

**Aliases**: `optimize_read_in_window_order`

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.1"},{"label": "0"},{"label": "Desabilita essa lógica por padrão."}]}]} />

Ativa ou desativa uma otimização no nível do plano de consulta que usa a ordenação do armazenamento ao ordenar funções de janela.
Só tem efeito se a configuração [`query_plan_enable_optimizations`](#query_plan_enable_optimizations) estiver definida como 1.

<Note>
  Esta é uma configuração de nível avançado que só deve ser usada para depuração por desenvolvedores. A configuração pode mudar no futuro de maneiras incompatíveis com versões anteriores ou ser removida.
</Note>

Valores possíveis:

* 0 - Desabilita
* 1 - Habilita

<div id="query_plan_split_filter">
  ## query\_plan\_split\_filter
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<Note>
  Esta é uma configuração de nível avançado que deve ser usada apenas para depuração por desenvolvedores. A configuração pode mudar no futuro de formas incompatíveis com versões anteriores ou ser removida.
</Note>

Ativa ou desativa uma otimização no nível do plano de consulta que divide filtros em expressões.
Só tem efeito se a configuração [query\_plan\_enable\_optimizations](#query_plan_enable_optimizations) estiver definida como 1.

Valores possíveis:

* 0 - Desabilita
* 1 - Habilita

<div id="query_plan_text_index_add_hint">
  ## query\_plan\_text\_index\_add\_hint
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "1"},{"label": "Nova configuração"}]}]} />

Permite adicionar uma dica (predicado adicional) ao filtro gerado a partir do índice de texto invertido no plano de consulta.

<div id="query_plan_top_k_through_join">
  ## query\_plan\_top\_k\_through\_join
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "1"},{"label": "Nova configuração para habilitar uma otimização no nível do plano de consulta que propaga ORDER BY ... LIMIT n através de um join LEFT/RIGHT quando a chave de ordenação faz referência apenas ao lado preservado."}]}]} />

Ativa ou desativa uma otimização no nível do plano de consulta que propaga `ORDER BY ... LIMIT n` através de um join quando a chave de ordenação faz referência apenas a colunas do lado preservado pelo join (LEFT/RIGHT). Ela restringe quantas linhas a entrada do lado preservado deve produzir antes do join.
Só tem efeito se a configuração [query\_plan\_enable\_optimizations](#query_plan_enable_optimizations) for 1.

Valores possíveis:

* 0 - Desativar
* 1 - Ativar

<div id="query_plan_try_use_vector_search">
  ## query\_plan\_try\_use\_vector\_search
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "1"},{"label": "Nova configuração."}]}]} />

Ativa ou desativa uma otimização no nível do plano de consulta que tenta usar o índice de similaridade vetorial.
Só tem efeito se a configuração [`query_plan_enable_optimizations`](#query_plan_enable_optimizations) for 1.

<Note>
  Esta é uma configuração de nível avançado que deve ser usada apenas para depuração por desenvolvedores. A configuração pode mudar no futuro de formas incompatíveis com versões anteriores ou ser removida.
</Note>

Valores possíveis:

* 0 - Desabilitar
* 1 - Habilitar

<div id="query_profiler_cpu_time_period_ns">
  ## query\_profiler\_cpu\_time\_period\_ns
</div>

<SettingsInfoBlock type="UInt64" default_value="1000000000" />

Define o período de um temporizador do clock da CPU do [profiler de consulta](/pt-BR/concepts/features/performance/troubleshoot/sampling-query-profiler). Esse temporizador contabiliza apenas o tempo de CPU.

Valores possíveis:

* Um número inteiro positivo de nanossegundos.

  Valores recomendados:

  * 10000000 (100 vezes por segundo) nanossegundos ou mais para consultas individuais.
  * 1000000000 (uma vez por segundo) para profiling em todo o cluster.

* 0 para desativar o temporizador.

Veja também:

* Tabela de sistema [trace\_log](/pt-BR/reference/system-tables/trace_log)

<div id="query_profiler_real_time_period_ns">
  ## query\_profiler\_real\_time\_period\_ns
</div>

<SettingsInfoBlock type="UInt64" default_value="1000000000" />

Define o período de um temporizador de tempo real do [profiler de consultas](/pt-BR/concepts/features/performance/troubleshoot/sampling-query-profiler). O temporizador de tempo real mede o tempo de relógio.

Valores possíveis:

* Número inteiro positivo, em nanossegundos.

  Valores recomendados:

  * 10000000 (100 vezes por segundo) nanossegundos ou menos para consultas individuais.
  * 1000000000 (uma vez por segundo) para profiling em todo o cluster.

* 0 para desligar o temporizador.

Veja também:

* Tabela de sistema [trace\_log](/pt-BR/reference/system-tables/trace_log)

Valor padrão no Cloud: `3000000000`.

<div id="queue_max_wait_ms">
  ## queue\_max\_wait\_ms
</div>

<SettingsInfoBlock type="Milissegundos" default_value="0" />

O tempo de espera na fila de requisições, caso o número de requisições simultâneas exceda o máximo.

<div id="rabbitmq_max_wait_ms">
  ## rabbitmq\_max\_wait\_ms
</div>

<SettingsInfoBlock type="Milissegundos" default_value="5000" />

O tempo de espera para ler do RabbitMQ antes de tentar novamente.

<div id="read_backoff_max_throughput">
  ## read\_backoff\_max\_throughput
</div>

<SettingsInfoBlock type="UInt64" default_value="1048576" />

Configuração para reduzir o número de threads em caso de leituras lentas. Conta eventos quando a taxa de leitura for menor que essa quantidade de bytes por segundo.

<div id="read_backoff_min_concurrency">
  ## read\_backoff\_min\_concurrency
</div>

<SettingsInfoBlock type="UInt64" default_value="1" />

Configuração para tentar manter o número mínimo de threads em caso de leituras lentas.

<div id="read_backoff_min_events">
  ## read\_backoff\_min\_events
</div>

<SettingsInfoBlock type="UInt64" default_value="2" />

Configuração para reduzir o número de threads em caso de leituras lentas. Número de eventos após o qual o número de threads será reduzido.

<div id="read_backoff_min_interval_between_events_ms">
  ## read\_backoff\_min\_interval\_between\_events\_ms
</div>

<SettingsInfoBlock type="Milissegundos" default_value="1000" />

Configuração para reduzir o número de threads em caso de leituras lentas. Ignore o evento se o anterior tiver ocorrido há menos de um determinado intervalo de tempo.

<div id="read_backoff_min_latency_ms">
  ## read\_backoff\_min\_latency\_ms
</div>

<SettingsInfoBlock type="Milissegundos" default_value="1000" />

Configuração para reduzir o número de threads em caso de leituras lentas. Considere apenas as leituras que levaram pelo menos esse tempo.

<div id="read_from_distributed_cache_if_exists_otherwise_bypass_cache">
  ## read\_from\_distributed\_cache\_if\_exists\_otherwise\_bypass\_cache
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.10"},{"label": "0"},{"label": "Nova configuração"}]}]} />

Só tem efeito no ClickHouse Cloud. É o mesmo que read\_from\_filesystem\_cache\_if\_exists\_otherwise\_bypass\_cache, mas para o distributed cache.

<div id="read_from_filesystem_cache_if_exists_otherwise_bypass_cache">
  ## read\_from\_filesystem\_cache\_if\_exists\_otherwise\_bypass\_cache
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Permite usar o cache do sistema de arquivos em modo passivo — aproveitar as entradas de cache já existentes, mas sem adicionar novas entradas ao cache. Se você definir essa configuração para consultas ad hoc pesadas e deixá-la desabilitada para consultas curtas em tempo real, isso ajudará a evitar o esgotamento do cache por consultas muito pesadas e a melhorar a eficiência geral do sistema.

<div id="read_from_page_cache_if_exists_otherwise_bypass_cache">
  ## read\_from\_page\_cache\_if\_exists\_otherwise\_bypass\_cache
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "0"},{"label": "Adicionado o cache de páginas no espaço do usuário"}]}]} />

Use o cache de páginas no espaço do usuário no modo passivo, semelhante a read\_from\_filesystem\_cache\_if\_exists\_otherwise\_bypass\_cache.

<div id="read_in_order_two_level_merge_threshold">
  ## read\_in\_order\_two\_level\_merge\_threshold
</div>

<SettingsInfoBlock type="UInt64" default_value="100" />

Número mínimo de partes que precisam ser lidas para executar a etapa de mesclagem preliminar durante a leitura multithread na ordem da chave primária.

<div id="read_in_order_use_buffering">
  ## read\_in\_order\_use\_buffering
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.7"},{"label": "1"},{"label": "Usar bufferização antes da mesclagem ao ler seguindo a ordem da chave primária"}]}]} />

Usar bufferização antes da mesclagem ao ler seguindo a ordem da chave primária. Isso aumenta o paralelismo da execuçã

<div id="read_in_order_use_virtual_row">
  ## read\_in\_order\_use\_virtual\_row
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.11"},{"label": "0"},{"label": "Usa linha virtual ao ler na ordem da chave primária ou de sua função monotônica. Isso é útil ao pesquisar em várias partes, pois apenas as relevantes são acessadas."}]}]} />

Usa linha virtual ao ler na ordem da chave primária ou de sua função monotônica. Isso é útil ao pesquisar em várias partes, pois apenas as relevantes são acessadas.

<div id="read_in_order_use_virtual_row_per_block">
  ## read\_in\_order\_use\_virtual\_row\_per\_block
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "0"},{"label": "Emite uma linha virtual após cada bloco durante a leitura em ordem para permitir uma repriorização mais frequente das fontes no MergingSortedTransform."}]}]} />

Quando ativado junto com `read_in_order_use_virtual_row`, emite uma linha virtual após cada bloco lido (não apenas no início de cada parte).
Isso permite que `MergingSortedTransform` repriorize as fontes com mais frequência, o que é útil quando filtros posteriores descartam muitas linhas e os dados estão distribuídos de forma desigual entre as partes.
Observe que isso desativa a otimização `read_in_order_use_buffering` e a mesclagem preliminar (`read_in_order_two_level_merge_threshold`) para leitura.

<div id="read_overflow_mode">
  ## read\_overflow\_mode
</div>

<SettingsInfoBlock type="OverflowMode" default_value="throw" />

O que fazer quando o limite é excedido.

<div id="read_overflow_mode_leaf">
  ## read\_overflow\_mode\_leaf
</div>

<SettingsInfoBlock type="OverflowMode" default_value="throw" />

Define o que acontece quando o volume de dados lidos excede um dos limites no leaf.

Opções possíveis:

* `throw`: gera uma exceção (padrão).
* `break`: interrompe a execução da consulta e retorna o resultado parcial.

<div id="read_priority">
  ## read\_priority
</div>

<SettingsInfoBlock type="Int64" default_value="0" />

Prioridade para ler dados do sistema de arquivos local ou do sistema de arquivos remoto. Suportado apenas com o método 'pread\_threadpool' para sistema de arquivos local e com o método `threadpool` para sistema de arquivos remoto.

<div id="read_through_distributed_cache">
  ## read\_through\_distributed\_cache
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.10"},{"label": "0"},{"label": "Uma configuração do ClickHouse Cloud"}]}]} />

Tem efeito apenas no ClickHouse Cloud. Permite a leitura do cache distribuído

<div id="readonly">
  ## readonly
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

0 - sem restrições de leitura. 1 - apenas solicitações de leitura, bem como a alteração de configurações explicitamente permitidas. 2 - apenas solicitações de leitura, bem como a alteração de configurações, exceto da configuração 'readonly'.

<div id="receive_data_timeout_ms">
  ## receive\_data\_timeout\_ms
</div>

<SettingsInfoBlock type="Milissegundos" default_value="2000" />

Tempo limite da conexão para receber o primeiro pacote de dados ou um pacote com progresso positivo da réplica

<div id="receive_timeout">
  ## receive\_timeout
</div>

<SettingsInfoBlock type="Segundos" default_value="300" />

Tempo limite para receber dados pela rede, em segundos. Se nenhum byte for recebido nesse intervalo, uma exceção será gerada. Se você definir essa configuração no cliente, o 'send\_timeout' do socket também será definido na extremidade correspondente da conexão no servidor.

<div id="recursive_cte_max_steps_in_type_inference">
  ## recursive\_cte\_max\_steps\_in\_type\_inference
</div>

<SettingsInfoBlock type="UInt64" default_value="10" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "10"},{"label": "Número máximo de iterações para inferir tipos de coluna em CTEs recursivas por meio da aplicação iterativa de getLeastSupertype"}]}]} />

Número máximo de iterações para inferir tipos de coluna em CTEs recursivas. Os tipos de coluna são determinados pela aplicação iterativa de `getLeastSupertype` aos lados não recursivo e recursivo da UNION ALL até haver convergência. Defina como 0 para desativar o alargamento de tipos e usar apenas os tipos da parte não recursiva.

<div id="regexp_dict_allow_hyperscan">
  ## regexp\_dict\_allow\_hyperscan
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Permite que o dicionário `regexp_tree` use a biblioteca Hyperscan.

<div id="regexp_dict_flag_case_insensitive">
  ## regexp\_dict\_flag\_case\_insensitive
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Usa correspondência sem diferenciar maiúsculas de minúsculas para um Dicionário regexp\_tree. Pode ser sobrescrita em expressões individuais com (?i) e (?-i).

<div id="regexp_dict_flag_dotall">
  ## regexp\_dict\_flag\_dotall
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Permite que '.' corresponda a caracteres de quebra de linha em um dicionário regexp\_tree.

<div id="regexp_max_matches_per_row">
  ## regexp\_max\_matches\_per\_row
</div>

<SettingsInfoBlock type="UInt64" default_value="1000" />

Define o número máximo de correspondências de uma única expressão regular por linha. Use isso para evitar sobrecarga de memória ao usar uma expressão regular gulosa na função [extractAllGroupsHorizontal](/pt-BR/reference/functions/regular-functions/string-search-functions#extractAllGroupsHorizontal).

Possíveis valores:

* Inteiro positivo.

<div id="reject_expensive_hyperscan_regexps">
  ## reject\_expensive\_hyperscan\_regexps
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Rejeita padrões cuja avaliação com hyperscan provavelmente será custosa (devido à explosão de estados do NFA)

<div id="remerge_sort_lowered_memory_bytes_ratio">
  ## remerge\_sort\_lowered\_memory\_bytes\_ratio
</div>

<SettingsInfoBlock type="Float" default_value="2" />

Se o uso de memória após o remerge não for reduzido nessa proporção, o remerge será desativado.

<div id="remote_filesystem_read_method">
  ## remote\_filesystem\_read\_method
</div>

<SettingsInfoBlock type="String" default_value="threadpool" />

Método de leitura de dados do filesystem remoto; um dos seguintes: read, threadpool.

<div id="remote_filesystem_read_prefetch">
  ## remote\_filesystem\_read\_prefetch
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Deve usar pré-busca ao ler dados do sistema de arquivos remoto.

<div id="remote_fs_read_backoff_max_tries">
  ## remote\_fs\_read\_backoff\_max\_tries
</div>

<SettingsInfoBlock type="UInt64" default_value="5" />

Número máximo de tentativas de leitura com backoff

<div id="remote_fs_read_max_backoff_ms">
  ## remote\_fs\_read\_max\_backoff\_ms
</div>

<SettingsInfoBlock type="UInt64" default_value="10000" />

Tempo máximo de espera ao tentar ler dados de um disco remoto

<div id="remote_read_min_bytes_for_seek">
  ## remote\_read\_min\_bytes\_for\_seek
</div>

<SettingsInfoBlock type="UInt64" default_value="4194304" />

Número mínimo de bytes necessário para que a leitura remota (url, s3) faça seek, em vez de ler com ignore.

<div id="rename_files_after_processing">
  ## rename\_files\_after\_processing
</div>

* **Tipo:** String

* **Valor padrão:** String vazia

Esta configuração permite especificar um padrão de renomeação para arquivos processados pela função de tabela `file`. Quando a opção é definida, todos os arquivos lidos pela função de tabela `file` serão renomeados de acordo com o padrão especificado com placeholders, somente se o processamento dos arquivos for bem-sucedido.

<div id="placeholders">
  ### Marcadores substitutos
</div>

* `%a` — Nome completo do arquivo original (por exemplo, "sample.csv").
* `%f` — Nome do arquivo original sem extensão (por exemplo, "sample").
* `%e` — Extensão original do arquivo, com ponto (por exemplo, ".csv").
* `%t` — Timestamp (em microssegundos).
* `%%` — Sinal de porcentagem ("%").

<div id="example">
  ### Exemplo
</div>

* Opção: `--rename_files_after_processing="processed_%f_%t%e"`

* Consulta: `SELECT * FROM file('sample.csv')`

Se a leitura de `sample.csv` for concluída com sucesso, o arquivo será renomeado para `processed_sample_1683473210851438.csv`

<div id="replace_running_query">
  ## replace\_running\_query
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Ao usar a interface HTTP, o parâmetro 'query\_id' pode ser informado. Ele pode ser qualquer string que sirva como identificador da consulta.
Se já existir uma consulta do mesmo usuário com o mesmo 'query\_id', o comportamento dependerá do parâmetro 'replace\_running\_query'.

`0` (padrão) – Gerar uma exceção (não permitir que a consulta seja executada se já houver uma consulta com o mesmo 'query\_id' em execução).

`1` – Cancelar a consulta antiga e iniciar a nova.

Defina este parâmetro como 1 para implementar sugestões de condições de segmentação. Ao digitar o próximo caractere, se a consulta antiga ainda não tiver terminado, ela deverá ser cancelada.

<div id="replace_running_query_max_wait_ms">
  ## replace\_running\_query\_max\_wait\_ms
</div>

<SettingsInfoBlock type="Milissegundos" default_value="5000" />

O tempo de espera para que a consulta com o mesmo `query_id` em execução termine, quando a configuração [replace\_running\_query](#replace_running_query) está ativa.

Valores possíveis:

* Inteiro positivo.
* 0 — Lança uma exceção que não permite executar uma nova consulta se o servidor já estiver executando uma consulta com o mesmo `query_id`.

<div id="replication_wait_for_inactive_replica_timeout">
  ## replication\_wait\_for\_inactive\_replica\_timeout
</div>

<SettingsInfoBlock type="Int64" default_value="120" />

Especifica por quanto tempo (em segundos) deve-se aguardar que réplicas inativas executem as consultas [`ALTER`](/pt-BR/reference/statements/alter), [`OPTIMIZE`](/pt-BR/reference/statements/optimize) ou [`TRUNCATE`](/pt-BR/reference/statements/truncate).

Valores possíveis:

* `0` — Não aguardar.
* Inteiro negativo — Aguarda por tempo ilimitado.
* Inteiro positivo — Número de segundos de espera.

<div id="restore_replace_external_dictionary_source_to_null">
  ## restore\_replace\_external\_dictionary\_source\_to\_null
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.10"},{"label": "0"},{"label": "Nova configuração."}]}]} />

Substitui fontes externas de dicionário por Null durante a restauração. Útil para testes

<div id="restore_replace_external_engines_to_null">
  ## restore\_replace\_external\_engines\_to\_null
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.8"},{"label": "0"},{"label": "Nova configuração."}]}]} />

Apenas para testes. Substitui todos os motores externos por Null para evitar o início de conexões externas.

<div id="restore_replace_external_table_functions_to_null">
  ## restore\_replace\_external\_table\_functions\_to\_null
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.8"},{"label": "0"},{"label": "Nova configuração."}]}]} />

Para fins de teste. Substitui todas as funções de tabela externas por Null para evitar iniciar conexões externas.

<div id="restore_replicated_merge_tree_to_shared_merge_tree">
  ## restore\_replicated\_merge\_tree\_to\_shared\_merge\_tree
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.2"},{"label": "0"},{"label": "Nova configuração."}]}]} />

Substitui o mecanismo de tabela de Replicated*MergeTree -> Shared*MergeTree durante o RESTORE.

Valor padrão no Cloud: `1`.

<div id="result_overflow_mode">
  ## result\_overflow\_mode
</div>

<SettingsInfoBlock type="OverflowMode" default_value="throw" />

Valor padrão no Cloud: `throw`

Define o que fazer se o volume do resultado exceder um dos limites.

Valores possíveis:

* `throw`: lançar uma exceção (padrão).
* `break`: interromper a execução da consulta e retornar o resultado parcial, como se os
  dados de origem tivessem se esgotado.

Usar 'break' é semelhante a usar LIMIT. `Break` interrompe a execução apenas no
nível do bloco. Isso significa que a quantidade de linhas retornadas será maior que
[`max_result_rows`](/pt-BR/reference/settings/session-settings#max_result_rows), será um múltiplo de [`max_block_size`](/pt-BR/reference/settings/session-settings#max_block_size)
e dependerá de [`max_threads`](/pt-BR/reference/settings/session-settings#max_threads).

**Exemplo**

```sql title="Query" theme={null}
SET max_threads = 3, max_block_size = 3333;
SET max_result_rows = 3334, result_overflow_mode = 'break';

SELECT *
FROM numbers_mt(100000)
FORMAT Null;
```

```text title="Result" theme={null}
6666 rows in set. ...
```

<div id="rewrite_count_distinct_if_with_count_distinct_implementation">
  ## rewrite\_count\_distinct\_if\_with\_count\_distinct\_implementation
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "23.8"},{"label": "1"},{"label": "Reescrever countDistinctIf usando a configuração count_distinct_implementation"}]}]} />

Permite reescrever `countDistcintIf` usando a configuração [count\_distinct\_implementation](#count_distinct_implementation).

Valores possíveis:

* true — Permitir.
* false — Não permitir.

<div id="rewrite_in_to_join">
  ## rewrite\_in\_to\_join
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.10"},{"label": "0"},{"label": "Nova configuração experimental"}]}]} />

Reescreve expressões como 'x IN subconsulta' para JOIN. Isso pode ser útil para otimizar toda a consulta com reordenação de JOINs.

<div id="rows_before_aggregation">
  ## rows\_before\_aggregation
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.8"},{"label": "0"},{"label": "Fornece o valor exato da estatística rows_before_aggregation, que representa o número de linhas lidas antes da agregação"}]}]} />

Quando ativada, o ClickHouse fornecerá o valor exato da estatística rows\_before\_aggregation, que representa o número de linhas lidas antes da agregaçã

<div id="s3_allow_multipart_copy">
  ## s3\_allow\_multipart\_copy
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.2"},{"label": "1"},{"label": "Nova configuração."}]}]} />

Permite cópia em múltiplas partes no S3.

<div id="s3_allow_parallel_part_upload">
  ## s3\_allow\_parallel\_part\_upload
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Usa várias threads para upload multipart no S3. Isso pode resultar em uso de memória ligeiramente maior

<div id="s3_check_objects_after_upload">
  ## s3\_check\_objects\_after\_upload
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Verifique cada objeto enviado ao S3 com uma requisição HEAD para garantir que o upload foi bem-sucedido

<div id="s3_connect_timeout_ms">
  ## s3\_connect\_timeout\_ms
</div>

<SettingsInfoBlock type="UInt64" default_value="1000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "1000"},{"label": "Introduz nova configuração dedicada para o tempo limite de conexão do S3"}]}]} />

Tempo limite da conexão com o host dos disks S3.

<div id="s3_create_new_file_on_insert">
  ## s3\_create\_new\_file\_on\_insert
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Habilita ou desabilita a criação de um novo arquivo a cada inserção em tabelas com engine S3. Se estiver habilitado, a cada inserção será criado um novo objeto no S3 com a chave, seguindo um padrão como este:

inicial: `data.Parquet.gz` -> `data.1.Parquet.gz` -> `data.2.Parquet.gz`, etc.

Valores possíveis:

* 0 — a consulta `INSERT` cria um novo arquivo ou falha se o arquivo já existir e `s3_truncate_on_insert` não estiver definido.
* 1 — a consulta `INSERT` cria um novo arquivo a cada inserção, usando um sufixo (a partir do segundo), se `s3_truncate_on_insert` não estiver definido.

Veja mais detalhes [aqui](/pt-BR/integrations/connectors/data-ingestion/AWS/integrating-s3-with-clickhouse#inserting-data).

<div id="s3_disable_checksum">
  ## s3\_disable\_checksum
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Não calcule um checksum ao enviar um arquivo para o S3. Isso acelera as gravações ao evitar etapas excessivas de processamento do arquivo. Em geral, isso é seguro, pois os dados das tabelas MergeTree já têm checksum calculado pelo ClickHouse de qualquer forma e, quando o S3 é acessado via HTTPS, a camada TLS já fornece integridade durante a transferência pela rede. Embora checksums adicionais no S3 ofereçam uma defesa em profundidade.

<div id="s3_ignore_file_doesnt_exist">
  ## s3\_ignore\_file\_doesnt\_exist
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.6"},{"label": "0"},{"label": "Permite retornar 0 linhas quando os arquivos solicitados não existem, em vez de lançar uma exceção no mecanismo de tabela S3"}]}]} />

Ignore a ausência do arquivo caso ele não exista ao ler determinadas chaves.

Valores possíveis:

* 1 — `SELECT` retorna um resultado vazio.
* 0 — `SELECT` lança uma exceção.

<div id="s3_list_object_keys_size">
  ## s3\_list\_object\_keys\_size
</div>

<SettingsInfoBlock type="UInt64" default_value="1000" />

Número máximo de arquivos que podem ser retornados em um lote pela solicitação ListObject

<div id="s3_max_connections">
  ## s3\_max\_connections
</div>

<SettingsInfoBlock type="UInt64" default_value="1024" />

O número máximo de conexões por servidor.

<div id="s3_max_get_burst">
  ## s3\_max\_get\_burst
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Número máximo de solicitações que podem ser emitidas simultaneamente antes de atingir o limite de solicitações por segundo. Por padrão, (0) equivale a `s3_max_get_rps`

<div id="s3_max_get_rps">
  ## s3\_max\_get\_rps
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Limite da taxa de solicitações GET para o S3 por segundo antes do throttling. Zero significa ilimitado.

<div id="s3_max_inflight_parts_for_one_file">
  ## s3\_max\_inflight\_parts\_for\_one\_file
</div>

<SettingsInfoBlock type="UInt64" default_value="20" />

O número máximo de partes carregadas simultaneamente em uma solicitação de upload multipart. 0 significa ilimitado.

<div id="s3_max_part_number">
  ## s3\_max\_part\_number
</div>

<SettingsInfoBlock type="UInt64" default_value="10000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.6"},{"label": "10000"},{"label": "Número máximo de partes no upload em partes para o S3"}]}]} />

Número máximo de partes no upload em partes para o S3.

<div id="s3_max_put_burst">
  ## s3\_max\_put\_burst
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Número máximo de solicitações que podem ser feitas simultaneamente antes de atingir o limite de solicitações por segundo. Por padrão (0), equivale a `s3_max_put_rps`

<div id="s3_max_put_rps">
  ## s3\_max\_put\_rps
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Limite da taxa de requisições PUT no S3 por segundo antes da aplicação de throttling. Zero significa ilimitado.

<div id="s3_max_single_operation_copy_size">
  ## s3\_max\_single\_operation\_copy\_size
</div>

<SettingsInfoBlock type="UInt64" default_value="33554432" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.6"},{"label": "33554432"},{"label": "Tamanho máximo para uma única operação de cópia no S3"}]}]} />

Tamanho máximo para uma operação única de cópia no S3. Esta configuração é usada apenas se s3\_allow\_multipart\_copy for true.

<div id="s3_max_single_part_upload_size">
  ## s3\_max\_single\_part\_upload\_size
</div>

<SettingsInfoBlock type="UInt64" default_value="33554432" />

O tamanho máximo do objeto para upload em uma única parte no S3.

<div id="s3_max_single_read_retries">
  ## s3\_max\_single\_read\_retries
</div>

<SettingsInfoBlock type="UInt64" default_value="4" />

O número máximo de tentativas durante uma única leitura do S3.

<div id="s3_max_unexpected_write_error_retries">
  ## s3\_max\_unexpected\_write\_error\_retries
</div>

<SettingsInfoBlock type="UInt64" default_value="4" />

O número máximo de tentativas em caso de erros inesperados durante a gravação no S3.

<div id="s3_max_upload_part_size">
  ## s3\_max\_upload\_part\_size
</div>

<SettingsInfoBlock type="UInt64" default_value="5368709120" />

O tamanho máximo da parte a ser carregada durante um upload multiparte para o S3.

<div id="s3_min_upload_part_size">
  ## s3\_min\_upload\_part\_size
</div>

<SettingsInfoBlock type="UInt64" default_value="16777216" />

O tamanho mínimo da parte a ser enviada durante um upload multipart para o S3.

<div id="s3_path_filter_limit">
  ## s3\_path\_filter\_limit
</div>

<SettingsInfoBlock type="UInt64" default_value="1000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "1000"},{"label": "Nova configuração"}]}]} />

Número máximo de valores de `_path` que podem ser extraídos dos filtros da consulta para serem usados na iteração de arquivos
em vez da listagem com glob. 0 significa desativado.

<div id="s3_request_timeout_ms">
  ## s3\_request\_timeout\_ms
</div>

<SettingsInfoBlock type="UInt64" default_value="30000" />

Tempo limite de inatividade para envio e recebimento de dados de/para o S3. A operação falhará se uma única chamada TCP de leitura ou gravação ficar bloqueada por esse período.

<div id="s3_skip_empty_files">
  ## s3\_skip\_empty\_files
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.11"},{"label": "1"},{"label": "Esperamos que isso proporcione uma UX melhor"}]}]} />

Ativa ou desativa o ignoramento de arquivos vazios em tabelas do motor [S3](/pt-BR/reference/engines/table-engines/integrations/s3).

Valores possíveis:

* 0 — `SELECT` gera uma exceção se o arquivo vazio não for compatível com o formato solicitado.
* 1 — `SELECT` retorna um resultado vazio para um arquivo vazio.

<div id="s3_slow_all_threads_after_network_error">
  ## s3\_slow\_all\_threads\_after\_network\_error
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "1"},{"label": "Nova configuração"}]}]} />

Quando definido como `true`, todas as threads que executam requisições ao S3 para o mesmo endpoint de backup ficam mais lentas
depois que qualquer requisição individual ao S3 encontra um erro de rede passível de nova tentativa, como timeout de socket.
Quando definido como `false`, cada thread lida com o backoff das requisições ao S3 de forma independente das demais.

<div id="s3_strict_upload_part_size">
  ## s3\_strict\_upload\_part\_size
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

O tamanho exato da parte a ser enviada durante o upload multiparte para o S3 (algumas implementações não oferecem suporte a partes com tamanho variável).

<div id="s3_throw_on_zero_files_match">
  ## s3\_throw\_on\_zero\_files\_match
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Gerar um erro quando a solicitação ListObjects não encontrar nenhum arquivo

<div id="s3_truncate_on_insert">
  ## s3\_truncate\_on\_insert
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Habilita ou desabilita o truncamento antes das inserções em tabelas com engine S3. Se estiver desabilitado, uma exceção será lançada nas tentativas de inserção caso um objeto S3 já exista.

Valores possíveis:

* 0 — a consulta `INSERT` cria um novo arquivo ou falha se o arquivo já existir e `s3_create_new_file_on_insert` não estiver definido.
* 1 — a consulta `INSERT` substitui o conteúdo existente do arquivo pelos novos dados.

Veja mais detalhes [aqui](/pt-BR/integrations/connectors/data-ingestion/AWS/integrating-s3-with-clickhouse#inserting-data).

<div id="s3_upload_part_size_multiply_factor">
  ## s3\_upload\_part\_size\_multiply\_factor
</div>

<SettingsInfoBlock type="UInt64" default_value="2" />

Multiplique `s3_min_upload_part_size` por este fator sempre que `s3_multiply_parts_count_threshold` partes forem enviadas em uma única gravação no S3.

<div id="s3_upload_part_size_multiply_parts_count_threshold">
  ## s3\_upload\_part\_size\_multiply\_parts\_count\_threshold
</div>

<SettingsInfoBlock type="UInt64" default_value="500" />

Sempre que essa quantidade de partes for enviada ao S3, `s3_min_upload_part_size` será multiplicado por `s3_upload_part_size_multiply_factor`.

<div id="s3_uri_style">
  ## s3\_uri\_style
</div>

<SettingsInfoBlock type="S3UriStyle" default_value="auto" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "auto"},{"label": "Nova configuração."}]}]} />

Força o estilo de endpoint do S3. Valores possíveis: auto, virtual\_hosted, path.

<div id="s3_use_adaptive_timeouts">
  ## s3\_use\_adaptive\_timeouts
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Quando definido como `true`, para todas as requisições ao S3, as duas primeiras tentativas são feitas com timeouts de envio e recebimento baixos.
Quando definido como `false`, todas as tentativas são feitas com os mesmos timeouts.

<div id="s3_validate_request_settings">
  ## s3\_validate\_request\_settings
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.6"},{"label": "1"},{"label": "Permite desativar a validação das configurações de requisição do S3"}]}]} />

Ativa a validação das configurações de requisição do S3.
Valores possíveis:

* 1 — validar as configurações.
* 0 — não validar as configurações.

<div id="s3queue_default_zookeeper_path">
  ## s3queue\_default\_zookeeper\_path
</div>

<SettingsInfoBlock type="String" default_value="/clickhouse/s3queue/" />

Prefixo padrão do caminho no ZooKeeper para o mecanismo S3Queue

<div id="s3queue_enable_logging_to_s3queue_log">
  ## s3queue\_enable\_logging\_to\_s3queue\_log
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Habilita a gravação em system.s3queue\_log. O valor pode ser substituído para cada tabela por meio das configurações da tabela

<div id="s3queue_keeper_fault_injection_probability">
  ## s3queue\_keeper\_fault\_injection\_probability
</div>

<SettingsInfoBlock type="Float" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.10"},{"label": "0"},{"label": "Nova configuração."}]}]} />

Probabilidade de injeção de falha no Keeper para o S3Queue.

<div id="s3queue_migrate_old_metadata_to_buckets">
  ## s3queue\_migrate\_old\_metadata\_to\_buckets
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "0"},{"label": "Nova configuração."}]}]} />

Migra a estrutura antiga de metadados da tabela S3Queue para uma nova

<div id="schema_inference_cache_require_modification_time_for_url">
  ## schema\_inference\_cache\_require\_modification\_time\_for\_url
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Usa o schema do cache para URL com validação do horário da última modificação (para URLs com cabeçalho Last-Modified)

<div id="schema_inference_use_cache_for_azure">
  ## schema\_inference\_use\_cache\_for\_azure
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Usa cache na inferência de esquema ao usar a função de tabela do Azure

<div id="schema_inference_use_cache_for_file">
  ## schema\_inference\_use\_cache\_for\_file
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Use o cache na inferência de esquema ao usar a função de tabela file

<div id="schema_inference_use_cache_for_hdfs">
  ## schema\_inference\_use\_cache\_for\_hdfs
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Usa cache na inferência de esquema ao usar a função de tabela hdfs

<div id="schema_inference_use_cache_for_s3">
  ## schema\_inference\_use\_cache\_for\_s3
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Usa cache na inferência de esquema ao usar a função de tabela S3

<div id="schema_inference_use_cache_for_url">
  ## schema\_inference\_use\_cache\_for\_url
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Use o cache na inferência de esquema ao usar a função de tabela url

<div id="secondary_indices_enable_bulk_filtering">
  ## secondary\_indices\_enable\_bulk\_filtering
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "1"},{"label": "Um novo algoritmo de filtragem para índices de omissão de dados"}]}]} />

Habilita o algoritmo de filtragem em lote para índices. A expectativa é que ele seja sempre superior, mas esta configuração existe por motivos de compatibilidade e controle.

<div id="select_sequential_consistency">
  ## select\_sequential\_consistency
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

<Note>
  O comportamento dessa configuração difere entre SharedMergeTree e ReplicatedMergeTree; consulte [SharedMergeTree consistency](/pt-BR/products/cloud/features/infrastructure/shared-merge-tree#consistency) para mais informações sobre o comportamento de `select_sequential_consistency` no SharedMergeTree.
</Note>

Ativa ou desativa a consistência sequencial para consultas `SELECT`. Exige que `insert_quorum_parallel` esteja desativado (embora seja ativado por padrão).

Valores possíveis:

* 0 — Desativado.
* 1 — Ativado.

Uso

Quando a consistência sequencial está ativada, o ClickHouse permite que o cliente execute a consulta `SELECT` apenas nas réplicas que contêm dados de todas as consultas `INSERT` anteriores executadas com `insert_quorum`. Se o cliente acessar uma réplica parcial, o ClickHouse gerará uma exceção. A consulta `SELECT` não incluirá dados que ainda não tenham sido gravados no quórum de réplicas.

Quando `insert_quorum_parallel` está ativado (o padrão), `select_sequential_consistency` não funciona. Isso ocorre porque consultas `INSERT` paralelas podem ser gravadas em diferentes conjuntos de réplicas de quórum, portanto não há garantia de que uma única réplica tenha recebido todas as gravações.

Veja também:

* [insert\_quorum](#insert_quorum)
* [insert\_quorum\_timeout](#insert_quorum_timeout)
* [insert\_quorum\_parallel](#insert_quorum_parallel)

<div id="send_logs_level">
  ## send\_logs\_level
</div>

<SettingsInfoBlock type="LogsLevel" default_value="fatal" />

Envia logs de texto do servidor ao cliente com o nível mínimo especificado. Valores válidos: 'trace', 'debug', 'information', 'warning', 'error', 'fatal', 'none'

<div id="send_logs_source_regexp">
  ## send\_logs\_source\_regexp
</div>

Envia logs de texto do servidor com a regexp especificada para corresponder ao nome da origem do log. Vazio significa todas as origens.

<div id="send_profile_events">
  ## send\_profile\_events
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.11"},{"label": "1"},{"label": "Nova configuração. Define se os eventos de perfil devem ser enviados aos clientes."}]}]} />

Habilita ou desabilita o envio de pacotes de [ProfileEvents](/pt-BR/resources/develop-contribute/native-protocol/server#profile-events) para o cliente.

Isso pode ser desabilitado para reduzir o tráfego de rede de clientes que não precisam de eventos de perfil.

Valores possíveis:

* 0 — Desabilitado.
* 1 — Habilitado.

<div id="send_progress_in_http_headers">
  ## send\_progress\_in\_http\_headers
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Ativa ou desativa os cabeçalhos de resposta HTTP `X-ClickHouse-Progress` nas respostas do `clickhouse-server`.

Para mais informações, leia a [descrição da interface HTTP](/pt-BR/concepts/features/interfaces/http).

Valores possíveis:

* 0 — Desativado.
* 1 — Ativado.

<div id="send_table_structure_on_insert_with_inline_data">
  ## send\_table\_structure\_on\_insert\_with\_inline\_data
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "1"},{"label": "Nova configuração para controlar se o servidor envia a estrutura da tabela para consultas INSERT com dados inline."}]}]} />

Se estiver desativada e a consulta INSERT contiver dados inline, o servidor não enviará de volta ao cliente, pelo protocolo nativo, a estrutura da tabela nem os valores padrão das colunas. Em vez disso, o próprio servidor analisará os dados inline. Isso pode melhorar o desempenho de muitas inserções pequenas pelo protocolo nativo.

<div id="send_timeout">
  ## send\_timeout
</div>

<SettingsInfoBlock type="Segundos" default_value="300" />

Tempo limite, em segundos, para enviar dados pela rede. Se um cliente precisar enviar dados, mas não conseguir enviar nenhum byte dentro desse intervalo, uma exceção será lançada. Se você definir essa configuração no cliente, o `receive_timeout` do socket também será definido na extremidade correspondente da conexão no servidor.

<div id="serialize_query_plan">
  ## serialize\_query\_plan
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.4"},{"label": "0"},{"label": "NewSetting"}]}]} />

Serializa o plano da consulta para processamento distribuído

<div id="serialize_string_in_memory_with_zero_byte">
  ## serialize\_string\_in\_memory\_with\_zero\_byte
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "1"},{"label": "Nova configuração"}]}, {"id": "row-2","items": [{"label": "25.12"},{"label": "1"},{"label": "Nova configuração"}]}]} />

Serializa valores String durante a agregação com um byte zero no final. Ative para manter a compatibilidade ao consultar um cluster com versões incompatíveis.

<div id="session_timezone">
  ## session\_timezone
</div>

Define o fuso horário implícito da sessão ou consulta atual.
O fuso horário implícito é aplicado a valores do tipo DateTime/DateTime64 que não têm um fuso horário explicitamente especificado.
Essa configuração tem precedência sobre o fuso horário implícito configurado globalmente (no nível do servidor).
Um valor de '' (string vazia) significa que o fuso horário implícito da sessão ou consulta atual é igual ao [fuso horário do servidor](/pt-BR/reference/settings/server-settings/settings#timezone).

Você pode usar as funções `timeZone()` e `serverTimeZone()` para obter o fuso horário da sessão e o do servidor.

Valores possíveis:

* Qualquer nome de fuso horário de `system.time_zones`, por exemplo `Europe/Berlin`, `UTC` ou `Zulu`

Exemplos:

```sql theme={null}
SELECT timeZone(), serverTimeZone() FORMAT CSV

"Europe/Berlin","Europe/Berlin"
```

```sql theme={null}
SELECT timeZone(), serverTimeZone() SETTINGS session_timezone = 'Asia/Novosibirsk' FORMAT CSV

"Asia/Novosibirsk","Europe/Berlin"
```

Atribua o fuso horário da sessão 'America/Denver' ao DateTime interno sem especificar o fuso horário explicitamente:

```sql theme={null}
SELECT toDateTime64(toDateTime64('1999-12-12 23:23:23.123', 3), 3, 'Europe/Zurich') SETTINGS session_timezone = 'America/Denver' FORMAT TSV

1999-12-13 07:23:23.123
```

<Warning>
  Nem todas as funções que fazem o parse de DateTime/DateTime64 respeitam `session_timezone`. Isso pode levar a erros sutis.
  Veja o exemplo e a explicação a seguir.
</Warning>

```sql theme={null}
CREATE TABLE test_tz (`d` DateTime('UTC')) ENGINE = Memory AS SELECT toDateTime('2000-01-01 00:00:00', 'UTC');

SELECT *, timeZone() FROM test_tz WHERE d = toDateTime('2000-01-01 00:00:00') SETTINGS session_timezone = 'Asia/Novosibirsk'
0 rows in set.

SELECT *, timeZone() FROM test_tz WHERE d = '2000-01-01 00:00:00' SETTINGS session_timezone = 'Asia/Novosibirsk'
┌───────────────────d─┬─timeZone()───────┐
│ 2000-01-01 00:00:00 │ Asia/Novosibirsk │
└─────────────────────┴──────────────────┘
```

Isso acontece devido a diferentes pipelines de parsing:

* `toDateTime()` sem um fuso horário explicitamente especificado, usado na primeira consulta `SELECT`, respeita a configuração `session_timezone` e o fuso horário global.
* Na segunda consulta, um DateTime é parseado de uma String e herda o tipo e o fuso horário da coluna existente `d`. Assim, a configuração `session_timezone` e o fuso horário global não são respeitados.

**Veja também**

* [timezone](/pt-BR/reference/settings/server-settings/settings#timezone)

<div id="set_overflow_mode">
  ## set\_overflow\_mode
</div>

<SettingsInfoBlock type="OverflowMode" default_value="throw" />

Define o que acontece quando a quantidade de dados excede um dos limites.

Valores possíveis:

* `throw`: gera uma exceção (padrão).
* `break`: interrompe a execução da consulta e retorna o resultado parcial, como se os
  dados de origem tivessem se esgotado.

<div id="shared_merge_tree_sequential_consistency_initial_parts_update_backoff_ms">
  ## shared\_merge\_tree\_sequential\_consistency\_initial\_parts\_update\_backoff\_ms
</div>

<SettingsInfoBlock type="UInt64" default_value="50" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "50"},{"label": "Nova configuração para reduzir erros UNFINISHED esporádicos em consultas com consistência sequencial no SharedMergeTree."}]}]} />

Backoff inicial, em milissegundos, para atualização das partes ao usar `select_sequential_consistency` com `SharedMergeTree`. Disponível apenas no ClickHouse Cloud.

<div id="shared_merge_tree_sequential_consistency_max_parts_update_backoff_ms">
  ## shared\_merge\_tree\_sequential\_consistency\_max\_parts\_update\_backoff\_ms
</div>

<SettingsInfoBlock type="UInt64" default_value="1000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "1000"},{"label": "Nova configuração para reduzir erros UNFINISHED esporádicos em consultas com consistência sequencial no SharedMergeTree."}]}]} />

Backoff máximo, em milissegundos, para a atualização de partes ao usar `select_sequential_consistency` com `SharedMergeTree`. Disponível apenas no ClickHouse Cloud.

<div id="shared_merge_tree_sequential_consistency_parts_update_max_retries">
  ## shared\_merge\_tree\_sequential\_consistency\_parts\_update\_max\_retries
</div>

<SettingsInfoBlock type="UInt64" default_value="10" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "10"},{"label": "Nova configuração para reduzir erros UNFINISHED esporádicos em consultas com consistência sequencial no SharedMergeTree."}]}]} />

Número máximo de tentativas para atualizar partes ao usar `select_sequential_consistency` com `SharedMergeTree`. Disponível apenas no ClickHouse Cloud.

<div id="shared_merge_tree_sync_parts_on_partition_operations">
  ## shared\_merge\_tree\_sync\_parts\_on\_partition\_operations
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.12"},{"label": "1"},{"label": "Nova configuração. Por padrão, as partes são sempre sincronizadas"}]}]} />

Sincroniza automaticamente o conjunto de partes de dados após operações de partição MOVE|REPLACE|ATTACH em tabelas SMT. Apenas no Cloud

<div id="short_circuit_function_evaluation">
  ## short\_circuit\_function\_evaluation
</div>

<SettingsInfoBlock type="ShortCircuitFunctionEvaluation" default_value="enable" />

Permite calcular as funções [if](/pt-BR/reference/functions/regular-functions/conditional-functions#if), [multiIf](/pt-BR/reference/functions/regular-functions/conditional-functions#multiIf), [and](/pt-BR/reference/functions/regular-functions/logical-functions#and) e [or](/pt-BR/reference/functions/regular-functions/logical-functions#or) de acordo com a [avaliação de curto-circuito](https://en.wikipedia.org/wiki/Short-circuit_evaluation). Isso ajuda a otimizar a execução de expressões complexas nessas funções e a evitar possíveis exceções (como divisão por zero quando isso não é esperado).

Valores possíveis:

* `enable` — Habilita a avaliação de curto-circuito para funções às quais ela se aplica (que podem lançar uma exceção ou ser computacionalmente pesadas).
* `force_enable` — Habilita a avaliação de curto-circuito para todas as funções.
* `disable` — Desabilita a avaliação de curto-circuito.

<div id="short_circuit_function_evaluation_for_nulls">
  ## short\_circuit\_function\_evaluation\_for\_nulls
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "1"},{"label": "Permite executar funções com argumentos Nullable apenas em linhas com valores não NULL em todos os argumentos"}]}]} />

Otimiza a avaliação de funções que retornam NULL quando qualquer argumento é NULL. Quando a porcentagem de valores NULL nos argumentos da função excede short\_circuit\_function\_evaluation\_for\_nulls\_threshold, o sistema deixa de avaliar a função linha por linha. Em vez disso, retorna NULL imediatamente para todas as linhas, evitando processamento desnecessário.

<div id="short_circuit_function_evaluation_for_nulls_threshold">
  ## short\_circuit\_function\_evaluation\_for\_nulls\_threshold
</div>

<SettingsInfoBlock type="Double" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "1"},{"label": "Limiar da proporção de valores NULL para que funções com argumentos Nullable sejam executadas apenas nas linhas em que todos os argumentos tenham valores não NULL. Aplica-se quando a configuração short_circuit_function_evaluation_for_nulls está habilitada."}]}]} />

Limiar da proporção de valores NULL para que funções com argumentos Nullable sejam executadas apenas nas linhas em que todos os argumentos tenham valores não NULL. Aplica-se quando a configuração short\_circuit\_function\_evaluation\_for\_nulls está habilitada.
Quando a proporção de linhas com valores NULL em relação ao total de linhas excede esse limiar, essas linhas com valores NULL não são avaliadas.

<div id="show_data_lake_catalogs_in_system_tables">
  ## show\_data\_lake\_catalogs\_in\_system\_tables
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "1"},{"label": "Nova configuração"}]}, {"id": "row-2","items": [{"label": "25.10"},{"label": "0"},{"label": "Desabilita catálogos nas tabelas do sistema por padrão"}]}]} />

Permite exibir catálogos do lago de dados nas tabelas do sistema.

<div id="show_processlist_include_internal">
  ## show\_processlist\_include\_internal
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.11"},{"label": "1"},{"label": "Nova configuração."}]}]} />

Mostra processos auxiliares internos na saída da consulta `SHOW PROCESSLIST`.

Os processos internos incluem recarregamentos de dicionários, recarregamentos de views materializadas atualizáveis, `SELECT`s auxiliares executados em consultas `SHOW ...`, consultas auxiliares `CREATE DATABASE ...` executadas internamente para lidar com tabelas corrompidas, entre outros.

<div id="show_table_uuid_in_table_create_query_if_not_nil">
  ## show\_table\_uuid\_in\_table\_create\_query\_if\_not\_nil
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "20.7"},{"label": "0"},{"label": "Para de mostrar o UID da tabela na consulta CREATE para Engine=Atomic"}]}]} />

Define como a consulta `SHOW TABLE` é exibida.

Valores possíveis:

* 0 — A consulta será exibida sem o UUID da tabela.
* 1 — A consulta será exibida com o UUID da tabela.

<div id="single_join_prefer_left_table">
  ## single\_join\_prefer\_left\_table
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Para um único JOIN, em caso de ambiguidade de identificadores, prefira a tabela à esquerda

<div id="skip_redundant_aliases_in_udf">
  ## skip\_redundant\_aliases\_in\_udf
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.12"},{"label": "0"},{"label": "Quando ativada, esta configuração permite usar a mesma função definida pelo usuário várias vezes em várias colunas materializadas da mesma tabela."}]}]} />

Aliases redundantes não são usados (substituídos) em funções definidas pelo usuário, para simplificar o uso.

Valores possíveis:

* 1 — Os aliases são ignorados (substituídos) em UDFs.
* 0 — Os aliases não são ignorados (substituídos) em UDFs.

**Exemplo**

A diferença entre ativado e desativado:

Consulta:

```sql theme={null}
SET skip_redundant_aliases_in_udf = 0;
CREATE FUNCTION IF NOT EXISTS test_03274 AS ( x ) -> ((x + 1 as y, y + 2));

EXPLAIN SYNTAX SELECT test_03274(4 + 2);
```

Resultado:

```text theme={null}
SELECT ((4 + 2) + 1 AS y, y + 2)
```

Consulta:

```sql theme={null}
SET skip_redundant_aliases_in_udf = 1;
CREATE FUNCTION IF NOT EXISTS test_03274 AS ( x ) -> ((x + 1 as y, y + 2));

EXPLAIN SYNTAX SELECT test_03274(4 + 2);
```

Resultado:

```text theme={null}
SELECT ((4 + 2) + 1, ((4 + 2) + 1) + 2)
```

<div id="skip_unavailable_shards">
  ## skip\_unavailable\_shards
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Ativa ou desativa a omissão silenciosa de shards indisponíveis.

Um shard é considerado indisponível se todas as suas réplicas estiverem indisponíveis. Uma réplica está indisponível nos seguintes casos:

* O ClickHouse não consegue se conectar à réplica por qualquer motivo.

  Ao se conectar a uma réplica, o ClickHouse faz várias tentativas. Se todas elas falharem, a réplica será considerada indisponível.

* A réplica não pode ser resolvida por DNS.

  Se o hostname da réplica não puder ser resolvido por DNS, isso pode indicar as seguintes situações:

  * O host da réplica não tem um registro DNS. Isso pode ocorrer em sistemas com DNS dinâmico, por exemplo, [Kubernetes](https://kubernetes.io), em que os nós podem não ser resolvidos durante períodos de indisponibilidade, e isso não é um erro.

  * Erro de configuração. O arquivo de configuração do ClickHouse contém um hostname incorreto.

Valores possíveis:

* 1 — omissão ativada.

  Se um shard estiver indisponível, o ClickHouse retorna um resultado com base em dados parciais e não relata problemas de disponibilidade dos nós.

* 0 — omissão desativada.

  Se um shard estiver indisponível, o ClickHouse gera uma exceção.

<div id="sleep_after_receiving_query_ms">
  ## sleep\_after\_receiving\_query\_ms
</div>

<SettingsInfoBlock type="Milissegundos" default_value="0" />

Tempo de espera após o recebimento da consulta no TCPHandler

<div id="sleep_in_send_data_ms">
  ## sleep\_in\_send\_data\_ms
</div>

<SettingsInfoBlock type="Milissegundos" default_value="0" />

Tempo de espera durante o envio de dados no TCPHandler

<div id="sleep_in_send_tables_status_ms">
  ## sleep\_in\_send\_tables\_status\_ms
</div>

<SettingsInfoBlock type="Milissegundos" default_value="0" />

Tempo de espera para enviar a resposta de status das tabelas no TCPHandler

<div id="sort_overflow_mode">
  ## sort\_overflow\_mode
</div>

<SettingsInfoBlock type="OverflowMode" default_value="throw" />

Define o que acontece se o número de linhas recebidas antes da ordenação exceder algum dos limites.

Valores possíveis:

* `throw`: lançar uma exceção.
* `break`: interromper a execução da consulta e retornar o resultado parcial.

<div id="split_intersecting_parts_ranges_into_layers_final">
  ## split\_intersecting\_parts\_ranges\_into\_layers\_final
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.2"},{"label": "1"},{"label": "Permite dividir intervalos de partes sobrepostos em camadas durante a otimização FINAL"}]}, {"id": "row-2","items": [{"label": "24.1"},{"label": "1"},{"label": "Permite dividir intervalos de partes sobrepostos em camadas durante a otimização FINAL"}]}]} />

Divide intervalos de partes sobrepostos em camadas durante a otimização FINAL

<div id="split_parts_ranges_into_intersecting_and_non_intersecting_final">
  ## split\_parts\_ranges\_into\_intersecting\_and\_non\_intersecting\_final
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.2"},{"label": "1"},{"label": "Permitir dividir intervalos de partes em sobrepostos e não sobrepostos durante a otimização FINAL"}]}, {"id": "row-2","items": [{"label": "24.1"},{"label": "1"},{"label": "Permitir dividir intervalos de partes em sobrepostos e não sobrepostos durante a otimização FINAL"}]}]} />

Dividir intervalos de partes em sobrepostos e não sobrepostos durante a otimização FINAL

<div id="splitby_max_substrings_includes_remaining_string">
  ## splitby\_max\_substrings\_includes\_remaining\_string
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Controla se a função [splitBy\*()](/pt-BR/reference/functions/regular-functions/splitting-merging-functions), com o argumento `max_substrings` > 0, incluirá a string restante no último elemento do array resultante.

Possible values:

* `0` - A string restante não será incluída no último elemento do array resultante.
* `1` - A string restante será incluída no último elemento do array resultante. Esse é o comportamento da função [`split()`](https://spark.apache.org/docs/3.1.2/api/python/reference/api/pyspark.sql.functions.split.html) do Spark e do método ['string.split()'](https://docs.python.org/3/library/stdtypes.html#str.split) do Python.

<div id="stop_refreshable_materialized_views_on_startup">
  ## stop\_refreshable\_materialized\_views\_on\_startup
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Na inicialização do servidor, impede o agendamento de views materializadas atualizáveis, como se `SYSTEM STOP VIEWS` tivesse sido executado. Depois, você pode iniciá-las manualmente com `SYSTEM START VIEWS` ou `SYSTEM START VIEW <name>`. Também se aplica a views criadas posteriormente. Não tem efeito sobre views materializadas não atualizáveis.

<div id="storage_file_read_method">
  ## storage\_file\_read\_method
</div>

<SettingsInfoBlock type="LocalFSReadMethod" default_value="pread" />

Método de leitura de dados do arquivo de armazenamento, entre: `read`, `pread`, `mmap`. O método `mmap` não se aplica ao clickhouse-server (ele se destina ao clickhouse-local).

<div id="storage_system_stack_trace_pipe_read_timeout_ms">
  ## storage\_system\_stack\_trace\_pipe\_read\_timeout\_ms
</div>

<SettingsInfoBlock type="Milissegundos" default_value="100" />

Tempo máximo para ler de um pipe e receber informações das threads ao consultar a tabela `system.stack_trace`. Essa configuração é usada para fins de teste e não deve ser alterada pelos usuários.

<div id="stream_flush_interval_ms">
  ## stream\_flush\_interval\_ms
</div>

<SettingsInfoBlock type="Milliseconds" default_value="7500" />

Aplica-se a tabelas com streaming em caso de timeout ou quando uma thread gera [max\_insert\_block\_size](#max_insert_block_size) linhas.

O valor padrão é 7500.

Quanto menor o valor, com mais frequência os dados são descarregados na tabela. Definir um valor muito baixo leva a um desempenho ruim.

<div id="stream_like_engine_allow_direct_select">
  ## stream\_like\_engine\_allow\_direct\_select
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "21.12"},{"label": "0"},{"label": "Não permitir SELECT direto para Kafka/RabbitMQ/FileLog por padrão"}]}]} />

Permite executar consultas SELECT diretamente nos motores Kafka, RabbitMQ, FileLog, Redis Streams, S3Queue, AzureQueue e NATS. Se houver visões materializadas anexadas, a consulta SELECT não será permitida, mesmo que essa configuração esteja habilitada.
Se não houver visões materializadas anexadas, habilitar essa configuração permite ler dados. Esteja ciente de que, normalmente, os dados lidos são removidos da fila. Para evitar a remoção dos dados lidos, as configurações relacionadas do motor devem ser definidas corretamente.

<div id="stream_like_engine_insert_queue">
  ## stream\_like\_engine\_insert\_queue
</div>

Quando um mecanismo do tipo stream lê de várias filas, o usuário precisará selecionar em qual fila inserir ao gravar. Usado por Redis Streams e NATS.

<div id="stream_poll_timeout_ms">
  ## stream\_poll\_timeout\_ms
</div>

<SettingsInfoBlock type="Milissegundos" default_value="500" />

Tempo limite para fazer polling de dados de/para armazenamentos de streaming.

<div id="system_events_show_zero_values">
  ## system\_events\_show\_zero\_values
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Permite selecionar eventos com valor zero de [`system.events`](/pt-BR/reference/system-tables/events).

Alguns sistemas de monitoramento exigem que todos os valores das métricas sejam enviados a cada coleta, mesmo que o valor da métrica seja zero.

Valores possíveis:

* 0 — Desabilitado.
* 1 — Habilitado.

**Exemplos**

Consulta

```sql theme={null}
SELECT * FROM system.events WHERE event='QueryMemoryLimitExceeded';
```

Resultado

```text theme={null}
Ok.
```

Consulta

```sql theme={null}
SET system_events_show_zero_values = 1;
SELECT * FROM system.events WHERE event='QueryMemoryLimitExceeded';
```

Resultado

```text theme={null}
┌─event────────────────────┬─value─┬─description───────────────────────────────────────────┐
│ QueryMemoryLimitExceeded │     0 │ Number of times when memory limit exceeded for query. │
└──────────────────────────┴───────┴───────────────────────────────────────────────────────┘
```

<div id="system_metric_log_show_zero_values_in_histograms">
  ## system\_metric\_log\_show\_zero\_values\_in\_histograms
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "0"},{"label": "Nova configuração que controla se dados de histograma com valor zero são gravados na coluna aninhada histograms de system.metric_log."}]}]} />

Controla se dados de histograma com valor zero são gravados na coluna aninhada `histograms` de `system.metric_log`.

Por padrão, histogramas cuja `count` total de observações é zero são ignorados e, dentro de cada histograma emitido, as entradas de bucket sem observações também são omitidas do mapa `histogram`. Ative esta opção para gravar todos os histogramas e todos os buckets independentemente da contagem — útil para sistemas de monitoramento que exigem que toda métrica apareça em cada coleta.

Valores possíveis:

* 0 — Desativado. Histogramas com `count = 0` não são emitidos; os histogramas emitidos incluem apenas buckets que receberam pelo menos uma observação.
* 1 — Ativado. Todos os histogramas são gravados, e cada limite de bucket aparece em `histogram`.

<div id="table_engine_read_through_distributed_cache">
  ## table\_engine\_read\_through\_distributed\_cache
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.7"},{"label": "0"},{"label": "Nova configuração"}]}]} />

Só tem efeito no ClickHouse Cloud. Permite a leitura do cache distribuído por meio de motores de tabela / funções de tabela (s3, azure, etc)

<div id="table_function_remote_max_addresses">
  ## table\_function\_remote\_max\_addresses
</div>

<SettingsInfoBlock type="UInt64" default_value="1000" />

Define o número máximo de endereços gerados com base em padrões para a função [remote](/pt-BR/reference/functions/table-functions/remote).

Valores possíveis:

* Inteiro positivo.

<div id="tcp_keep_alive_timeout">
  ## tcp\_keep\_alive\_timeout
</div>

<SettingsInfoBlock type="Segundos" default_value="290" />

Tempo, em segundos, que a conexão deve permanecer ociosa antes que o TCP comece a enviar sondas de keepalive

<div id="temporary_data_in_cache_reserve_space_wait_lock_timeout_milliseconds">
  ## temporary\_data\_in\_cache\_reserve\_space\_wait\_lock\_timeout\_milliseconds
</div>

<SettingsInfoBlock type="UInt64" default_value="600000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.4"},{"label": "600000"},{"label": "Tempo de espera para adquirir o bloqueio do cache para reservar espaço para dados temporários no cache do sistema de arquivos"}]}]} />

Tempo de espera para adquirir o bloqueio do cache para reservar espaço para dados temporários no cache do sistema de arquivos

<div id="temporary_files_buffer_size">
  ## temporary\_files\_buffer\_size
</div>

<SettingsInfoBlock type="NonZeroUInt64" default_value="1048576" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.10"},{"label": "1048576"},{"label": "Nova configuração"}]}]} />

Tamanho do buffer dos gravadores de arquivos temporários. Um buffer maior significa menos chamadas de sistema, mas maior consumo de memória.

<div id="temporary_files_codec">
  ## temporary\_files\_codec
</div>

<SettingsInfoBlock type="String" default_value="LZ4" />

Define o codec de compressão para arquivos temporários usados em operações de ordenação e join no disco.

Valores possíveis:

* LZ4 — a compressão [LZ4](https://en.wikipedia.org/wiki/LZ4_\(compression_algorithm\)) é aplicada.
* NONE — nenhuma compressão é aplicada.

<div id="text_index_hint_max_selectivity">
  ## text\_index\_hint\_max\_selectivity
</div>

<SettingsInfoBlock type="Float" default_value="0.2" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "0.2"},{"label": "Nova configuração"}]}]} />

Seletividade máxima do filtro para usar a dica gerada a partir do índice de texto invertido.

<div id="text_index_like_max_postings_to_read">
  ## text\_index\_like\_max\_postings\_to\_read
</div>

<SettingsInfoBlock type="UInt64" default_value="50" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "50"},{"label": "Nova configuração"}]}]} />

Número máximo de postings grandes a serem lidos quando a avaliação de LIKE do índice de texto por varredura de dicionário estiver habilitada.

Requer que `use_text_index_like_evaluation_by_dictionary_scan` esteja habilitado.

<div id="text_index_like_min_pattern_length">
  ## text\_index\_like\_min\_pattern\_length
</div>

<SettingsInfoBlock type="UInt64" default_value="4" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "4"},{"label": "Nova configuração"}]}]} />

Comprimento mínimo do termo alfanumérico em um padrão LIKE/ILIKE necessário para usar a avaliação de LIKE do índice de texto por varredura de dicionário.
Padrões menores que esse limite correspondem a muitos tokens do dicionário e são ignorados para evitar varreduras custosas.

Exige que `use_text_index_like_evaluation_by_dictionary_scan` esteja habilitado.

<div id="throw_if_no_data_to_insert">
  ## throw\_if\_no\_data\_to\_insert
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Permite ou proíbe INSERTs vazios; está habilitado por padrão (gera um erro ao fazer um INSERT vazio). Aplica-se apenas a INSERTs que usam [`clickhouse-client`](/pt-BR/concepts/features/interfaces/cli) ou a [interface gRPC](/pt-BR/concepts/features/interfaces/grpc).

<div id="throw_on_error_from_cache_on_write_operations">
  ## throw\_on\_error\_from\_cache\_on\_write\_operations
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Ignora o erro do cache durante o armazenamento em cache em operações de gravação (INSERT, merges)

<div id="throw_on_max_partitions_per_insert_block">
  ## throw\_on\_max\_partitions\_per\_insert\_block
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Permite controlar o comportamento quando `max_partitions_per_insert_block` é atingido.

Valores possíveis:

* `true`  - Quando um bloco de inserção atinge `max_partitions_per_insert_block`, uma exceção é lançada.
* `false` - Registra um aviso quando `max_partitions_per_insert_block` é atingido.

<Tip>
  Isso pode ser útil se você estiver tentando entender o impacto para os usuários ao alterar [`max_partitions_per_insert_block`](/pt-BR/reference/settings/session-settings#max_partitions_per_insert_block).
</Tip>

<div id="throw_on_unsupported_query_inside_transaction">
  ## throw\_on\_unsupported\_query\_inside\_transaction
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Lança uma exceção se uma consulta sem suporte for usada dentro de uma transação

<div id="timeout_before_checking_execution_speed">
  ## timeout\_before\_checking\_execution\_speed
</div>

<SettingsInfoBlock type="Segundos" default_value="10" />

Verifica se a velocidade de execução não está muito baixa (não inferior a `min_execution_speed`)
depois de decorrido o tempo especificado em segundos.

<div id="timeout_overflow_mode">
  ## timeout\_overflow\_mode
</div>

<SettingsInfoBlock type="OverflowMode" default_value="throw" />

Define o que fazer se a consulta demorar mais que `max_execution_time` para ser executada ou se o
tempo estimado de execução for maior que `max_estimated_execution_time`.

Valores possíveis:

* `throw`: lançar uma exceção (padrão).
* `break`: interromper a execução da consulta e retornar o resultado parcial, como se os
  dados de origem tivessem se esgotado.

<div id="timeout_overflow_mode_leaf">
  ## timeout\_overflow\_mode\_leaf
</div>

<SettingsInfoBlock type="OverflowMode" default_value="throw" />

Define o que acontece quando a consulta em um nó folha é executada por mais tempo do que `max_execution_time_leaf`.

Valores possíveis:

* `throw`: lança uma exceção (padrão).
* `break`: interrompe a execução da consulta e retorna o resultado parcial, como se os
  dados de origem tivessem se esgotado.

<div id="totals_auto_threshold">
  ## totals\_auto\_threshold
</div>

<SettingsInfoBlock type="Float" default_value="0.5" />

O limite para `totals_mode = 'auto'`.
Consulte a seção "modificador WITH TOTALS".

<div id="totals_mode">
  ## totals\_mode
</div>

<SettingsInfoBlock type="TotalsMode" default_value="after_having_exclusive" />

Como calcular TOTALS quando há HAVING, bem como quando max\_rows\_to\_group\_by e group\_by\_overflow\_mode = 'any' estão definidos.
Consulte a seção "modificador WITH TOTALS".

<div id="trace_profile_events">
  ## trace\_profile\_events
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Habilita ou desabilita a coleta de stacktraces a cada atualização dos eventos de perfil, juntamente com o nome do evento de perfil e o valor do incremento, bem como seu envio para [trace\_log](/pt-BR/reference/system-tables/trace_log).

Valores possíveis:

* 1 — Rastreamento de eventos de perfil habilitado.
* 0 — Rastreamento de eventos de perfil desabilitado.

<div id="trace_profile_events_list">
  ## trace\_profile\_events\_list
</div>

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.1"},{"label": ""},{"label": "Nova configuração"}]}]} />

Quando a configuração `trace_profile_events` estiver habilitada, limite os eventos rastreados à lista especificada de nomes separados por vírgula.
Se `trace_profile_events_list` for uma string vazia (o padrão), rastreie todos os profile events.

Valor de exemplo: 'DiskS3ReadMicroseconds,DiskS3ReadRequestsCount,SelectQueryTimeMicroseconds,ReadBufferFromS3Bytes'

O uso dessa configuração permite coletar dados com mais precisão para um grande número de consultas, pois, caso contrário, o grande volume de eventos pode causar overflow na fila interna de logs do sistema, e parte deles será descartada.

<div id="transfer_overflow_mode">
  ## transfer\_overflow\_mode
</div>

<SettingsInfoBlock type="OverflowMode" default_value="throw" />

Define o que acontece quando a quantidade de dados excede um dos limites.

Valores possíveis:

* `throw`: lança uma exceção (padrão).
* `break`: interrompe a execução da consulta e retorna o resultado parcial, como se os
  dados de origem tivessem acabado.

<div id="transform_null_in">
  ## transform\_null\_in
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Habilita a igualdade entre valores [NULL](/pt-BR/reference/syntax#null) para o operador [IN](/pt-BR/reference/statements/in).

Por padrão, valores `NULL` não podem ser comparados, porque `NULL` significa um valor indefinido. Assim, a comparação `expr = NULL` deve sempre retornar `false`. Com essa configuração, `NULL = NULL` retorna `true` para o operador `IN`.

Valores possíveis:

* 0 — A comparação entre valores `NULL` no operador `IN` retorna `false`.
* 1 — A comparação entre valores `NULL` no operador `IN` retorna `true`.

**Exemplo**

Considere a tabela `null_in`:

```text theme={null}
┌──idx─┬─────i─┐
│    1 │     1 │
│    2 │  NULL │
│    3 │     3 │
└──────┴───────┘
```

Consulta:

```sql theme={null}
SELECT idx, i FROM null_in WHERE i IN (1, NULL) SETTINGS transform_null_in = 0;
```

Resultado:

```text theme={null}
┌──idx─┬────i─┐
│    1 │    1 │
└──────┴──────┘
```

Consulta:

```sql theme={null}
SELECT idx, i FROM null_in WHERE i IN (1, NULL) SETTINGS transform_null_in = 1;
```

Resultado:

```text theme={null}
┌──idx─┬─────i─┐
│    1 │     1 │
│    2 │  NULL │
└──────┴───────┘
```

**Veja também**

* [Processamento de NULL em operadores IN](/pt-BR/reference/statements/in#null-processing)

<div id="traverse_shadow_remote_data_paths">
  ## traverse\_shadow\_remote\_data\_paths
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "0"},{"label": "Percorre o diretório shadow ao consultar system.remote_data_paths."}]}]} />

Percorre também os dados congelados (diretório shadow), além dos dados da tabela propriamente dita, ao consultar system.remote\_data\_paths

<div id="union_default_mode">
  ## union\_default\_mode
</div>

Define um modo para combinar os resultados da consulta `SELECT`. A configuração é usada apenas com [UNION](/pt-BR/reference/statements/select/union) quando `UNION ALL` ou `UNION DISTINCT` não são especificados explicitamente.

Valores possíveis:

* `'DISTINCT'` — o ClickHouse retorna linhas como resultado da combinação de consultas, removendo linhas duplicadas.
* `'ALL'` — o ClickHouse retorna todas as linhas como resultado da combinação de consultas, incluindo linhas duplicadas.
* `''` — o ClickHouse gera uma exceção quando usado com `UNION`.

Veja exemplos em [UNION](/pt-BR/reference/statements/select/union).

<div id="unknown_packet_in_send_data">
  ## unknown\_packet\_in\_send\_data
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Enviar pacote desconhecido em vez do enésimo pacote de dados

<div id="update_parallel_mode">
  ## update\_parallel\_mode
</div>

<SettingsInfoBlock type="UpdateParallelMode" default_value="auto" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "auto"},{"label": "Nova configuração"}]}]} />

Determina o comportamento de consultas `UPDATE` simultâneas.

Valores possíveis:

* `sync` - executa todas as consultas `UPDATE` sequencialmente.
* `auto` - executa sequencialmente apenas as consultas `UPDATE` com dependências entre colunas atualizadas em uma consulta e colunas usadas em expressões de outra consulta.
* `async` - não sincroniza as consultas `UPDATE`.

<div id="update_sequential_consistency">
  ## update\_sequential\_consistency
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "1"},{"label": "Nova configuração"}]}]} />

Se true, o conjunto de partes é atualizado para a versão mais recente antes da execução da atualização.

<div id="url_base">
  ## url\_base
</div>

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": ""},{"label": "Nova configuração para especificar a URL base para resolver URLs relativas na função de tabela url e no motor de tabela URL."}]}]} />

A URL base usada para resolver URLs relativas na função de tabela [url](/pt-BR/reference/functions/table-functions/url) e no motor de tabela [URL](/pt-BR/reference/engines/table-engines/special/url).

Quando definida, as URLs relativas são resolvidas da seguinte forma:

* URL relativa ao caminho (por exemplo, `data.csv`): combinada com o caminho da URL base de acordo com a RFC 3986. Tudo após a última `/` no caminho base é substituído pela URL relativa, portanto a barra final faz diferença: `https://example.com/dir/` + `data.csv` = `https://example.com/dir/data.csv`, mas `https://example.com/dir` + `data.csv` = `https://example.com/data.csv`. Se a base não tiver caminho (por exemplo, `https://example.com`), uma `/` é inserida: `https://example.com/data.csv`. Segmentos de ponto (`./` e `../`) na URL relativa são normalizados: `https://example.com/dir/` + `../a.csv` = `https://example.com/a.csv`.
* URL relativa ao host (por exemplo, `/test/data.csv`): resolvida com base no esquema e no host da URL base.
* URL relativa ao esquema (por exemplo, `//other.com/test/data.csv`): resolvida usando o esquema da URL base.
* Referência apenas de consulta (por exemplo, `?x=1`): anexada ao caminho da URL base (substituindo qualquer consulta/fragmento existente).
* Referência apenas de fragmento (por exemplo, `#frag`): anexada à URL base, preservando qualquer string de consulta (substituindo qualquer fragmento existente).
* Referência vazia: retorna a URL base sem fragmento.

Por exemplo, se `url_base` for `https://example.com/def/`, então:

* `data.csv` é resolvido para `https://example.com/def/data.csv`
* `/test/data.csv` é resolvido para `https://example.com/test/data.csv`
* `//other.com/test/data.csv` é resolvido para `https://other.com/test/data.csv`

<div id="use_async_executor_for_materialized_views">
  ## use\_async\_executor\_for\_materialized\_views
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.12"},{"label": "0"},{"label": "Nova configuração."}]}]} />

Permite a execução assíncrona e potencialmente multithread da consulta da visão materializada, o que pode acelerar o processamento das visões materializadas durante o INSERT, mas também consumir mais memória.

<div id="use_cache_for_count_from_files">
  ## use\_cache\_for\_count\_from\_files
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Habilita o cache do número de linhas durante a contagem em arquivos nas funções de tabela `file`/`s3`/`url`/`hdfs`/`azureBlobStorage`.

Habilitado por padrão.

<div id="use_client_time_zone">
  ## use\_client\_time\_zone
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Use o fuso horário do cliente para interpretar valores DateTime em formato de string, em vez de usar o fuso horário do servidor.

<div id="use_compact_format_in_distributed_parts_names">
  ## use\_compact\_format\_in\_distributed\_parts\_names
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "21.1"},{"label": "1"},{"label": "Usa o formato compacto por padrão para async INSERT em tabelas `Distributed`"}]}]} />

Usa o formato compacto para armazenar blocos para INSERT em segundo plano (`distributed_foreground_insert`) em tabelas com engine `Distributed`.

Valores possíveis:

* 0 — Usa o formato de diretório `user[:password]@host:port#default_database`.
* 1 — Usa o formato de diretório `[shard{shard_index}[_replica{replica_index}]]`.

<Note>
  - com `use_compact_format_in_distributed_parts_names=0`, alterações na definição do cluster não serão aplicadas ao INSERT em segundo plano.
  - com `use_compact_format_in_distributed_parts_names=1`, alterar a ordem dos nós na definição do cluster mudará o `shard_index`/`replica_index`, portanto tenha isso em mente.
</Note>

<div id="use_concurrency_control">
  ## use\_concurrency\_control
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.12"},{"label": "1"},{"label": "Habilita o controle de concorrência por padrão"}]}]} />

Respeita o controle de concorrência do servidor (consulte as configurações globais `concurrent_threads_soft_limit_num` e `concurrent_threads_soft_limit_ratio_to_cores` do servidor). Se estiver desabilitado, permite usar um número maior de threads mesmo que o servidor esteja sobrecarregado (não é recomendado para uso normal e é necessário principalmente para testes).

Valor padrão no Cloud: `0`.

<div id="use_hash_table_stats_for_join_reordering">
  ## use\_hash\_table\_stats\_for\_join\_reordering
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.1"},{"label": "1"},{"label": "Nova configuração. Antes espelhava a configuração 'collect_hash_table_stats_during_joins'."}]}]} />

Ativa o uso das estatísticas coletadas da tabela hash para estimativa de cardinalidade durante a reordenação de junções

<div id="use_hedged_requests">
  ## use\_hedged\_requests
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "21.9"},{"label": "1"},{"label": "Ativa o recurso Hedged Requests por padrão"}]}]} />

Ativa a lógica de hedged requests para consultas remotas. Isso permite estabelecer várias conexões com diferentes réplicas para uma consulta.
Uma nova conexão é ativada caso a(s) conexão(ões) existente(s) com a(s) réplica(s) não tenha(m) sido estabelecida(s) dentro de `hedged_connection_timeout`
ou nenhum dado tenha sido recebido dentro de `receive_data_timeout`. A consulta usa a primeira conexão que envia um pacote de progresso não vazio (ou um pacote de dados, se `allow_changing_replica_until_first_data_packet`);
as demais conexões são canceladas. Há suporte para consultas com `max_parallel_replicas > 1`.

Ativado por padrão.

Valor padrão no Cloud: `0`.

<div id="use_hive_partitioning">
  ## use\_hive\_partitioning
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "1"},{"label": "A configuração passou a ser habilitada por padrão."}]}, {"id": "row-2","items": [{"label": "24.8"},{"label": "0"},{"label": "Permite usar particionamento no estilo Hive para os motores File, URL, S3, AzureBlobStorage e HDFS."}]}]} />

Quando habilitada, o ClickHouse detectará o particionamento no estilo Hive no caminho (`/name=value/`) em motores de tabela semelhantes a arquivos [File](/pt-BR/reference/functions/table-functions/file#hive-style-partitioning)/[S3](/pt-BR/reference/functions/table-functions/s3#hive-style-partitioning)/[URL](/pt-BR/reference/functions/table-functions/url#hive-style-partitioning)/[HDFS](/pt-BR/reference/functions/table-functions/hdfs#hive-style-partitioning)/[AzureBlobStorage](/pt-BR/reference/functions/table-functions/azureBlobStorage#hive-style-partitioning) e permitirá usar colunas de partição como colunas virtuais na consulta. Essas colunas virtuais terão os mesmos nomes do caminho particionado, mas começarão com `_`.

<div id="use_iceberg_metadata_files_cache">
  ## use\_iceberg\_metadata\_files\_cache
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.4"},{"label": "1"},{"label": "Nova configuração"}]}]} />

Se estiver ativada, a função de tabela Iceberg e o armazenamento Iceberg poderão usar o cache de arquivos de metadados do Iceberg.

Valores possíveis:

* 0 - Desabilitado
* 1 - Habilitado

<div id="use_iceberg_partition_pruning">
  ## use\_iceberg\_partition\_pruning
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.6"},{"label": "1"},{"label": "Ativa a poda de partições do Iceberg por padrão."}]}, {"id": "row-2","items": [{"label": "25.1"},{"label": "0"},{"label": "Nova configuração para a poda de partições do Iceberg."}]}]} />

Usa a poda de partições do Iceberg para tabelas Iceberg

<div id="use_index_for_in_with_subqueries">
  ## use\_index\_for\_in\_with\_subqueries
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Tenta usar um índice se houver uma subconsulta ou uma expressão de tabela no lado direito do operador IN.

<div id="use_index_for_in_with_subqueries_max_values">
  ## use\_index\_for\_in\_with\_subqueries\_max\_values
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

O tamanho máximo do conjunto no lado direito do operador IN para usar o índice da tabela na filtragem. Isso permite evitar a degradação do desempenho e o aumento do uso de memória devido à preparação de estruturas de dados adicionais para queries grandes. Zero significa sem limite.

<div id="use_join_disjunctions_push_down">
  ## use\_join\_disjunctions\_push\_down
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.1"},{"label": "1"},{"label": "Esta otimização foi habilitada."}]}, {"id": "row-2","items": [{"label": "25.10"},{"label": "0"},{"label": "Nova configuração."}]}]} />

Habilita o pushdown das partes conectadas por OR das condições de JOIN para os respectivos lados de entrada ("pushdown parcial").
Isso permite que os motores de armazenamento apliquem o filtro mais cedo, o que pode reduzir a quantidade de dados lidos.
A otimização preserva a semântica e é aplicada somente quando cada ramo OR de nível superior contribui com pelo menos um
predicado determinístico para o lado de destino.

<div id="use_legacy_to_time">
  ## use\_legacy\_to\_time
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.6"},{"label": "1"},{"label": "Nova configuração. Permite ao usuário usar a lógica antiga da função toTime, que funciona como toTimeWithFixedDate."}]}]} />

Quando habilitada, permite usar a função toTime legada, que converte uma data com hora em uma determinada data fixa, preservando a hora.
Caso contrário, usa uma nova função toTime, que converte diferentes tipos de dados no tipo Time.
A função legada antiga também permanece acessível incondicionalmente como toTimeWithFixedDate.

<div id="use_page_cache_for_disks_without_file_cache">
  ## use\_page\_cache\_for\_disks\_without\_file\_cache
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "0"},{"label": "Adicionado cache de páginas no espaço do usuário"}]}]} />

Use o cache de páginas no espaço do usuário para discos remotos que não tenham o cache do sistema de arquivos habilitado.

<div id="use_page_cache_for_local_disks">
  ## use\_page\_cache\_for\_local\_disks
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "0"},{"label": "Nova configuração para usar o cache de páginas em espaço de usuário para discos locais"}]}]} />

Use o cache de páginas em espaço de usuário ao ler de discos locais. É usado para testes e dificilmente melhora o desempenho na prática. Requer local\_filesystem\_read\_method = 'pread' ou 'read'. Não desativa o cache de páginas do SO; min\_bytes\_to\_use\_direct\_io pode ser usado para isso. Afeta apenas tabelas comuns, não a table function file() nem o table engine File().

<div id="use_page_cache_for_object_storage">
  ## use\_page\_cache\_for\_object\_storage
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "0"},{"label": "Nova configuração para usar o cache de páginas em userspace para funções de tabela de armazenamento de objetos"}]}]} />

Use o cache de páginas em userspace ao ler a partir de funções de tabela de armazenamento de objetos (s3, azure, hdfs) e motores de tabela (S3, Azure, HDFS).

<div id="use_page_cache_with_distributed_cache">
  ## use\_page\_cache\_with\_distributed\_cache
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.3"},{"label": "0"},{"label": "Nova configuração"}]}]} />

Usa o cache de páginas em espaço do usuário quando o distributed cache está em uso.

<div id="use_paimon_partition_pruning">
  ## use\_paimon\_partition\_pruning
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "0"},{"label": "Nova configuração."}]}]} />

Usa a eliminação de partições do Paimon para funções de tabela do Paimon

<div id="use_parquet_metadata_cache">
  ## use\_parquet\_metadata\_cache
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": "1"},{"label": "Habilita o cache de metadados de arquivos Parquet."}]}]} />

Quando ativado, o formato Parquet pode usar o cache de metadados do Parquet.

Valores possíveis:

* 0 - Desabilitado
* 1 - Habilitado

<div id="use_partition_pruning">
  ## use\_partition\_pruning
</div>

**Aliases**: `use_partition_key`

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": "1"},{"label": "Nova configuração que controla se o MergeTree usa a chave de partição para poda. 'use_partition_key' é um alias dessa configuração."}]}]} />

Usa a chave de partição para fazer a poda de partições durante a execução de consultas em tabelas MergeTree.

Valores possíveis:

* 0 — Desabilitado.
* 1 — Habilitado.

<div id="use_primary_key">
  ## use\_primary\_key
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.1"},{"label": "1"},{"label": "Nova configuração que controla se o MergeTree usa a chave primária para a poda no nível de grânulo."}]}]} />

Usa a chave primária para podar grânulos durante a execução de consultas em tabelas MergeTree.

Valores possíveis:

* 0 — Desabilitado.
* 1 — Habilitado.

<div id="use_query_cache">
  ## use\_query\_cache
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Se ativada, consultas `SELECT` podem usar o [cache de consultas](/pt-BR/concepts/features/performance/caches/query-cache). Os parâmetros [enable\_reads\_from\_query\_cache](#enable_reads_from_query_cache)
e [enable\_writes\_to\_query\_cache](#enable_writes_to_query_cache) controlam de forma mais detalhada como o cache é usado.

Valores possíveis:

* 0 - Desabilitado
* 1 - Habilitado

<div id="use_query_condition_cache">
  ## use\_query\_condition\_cache
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.4"},{"label": "1"},{"label": "Uma nova otimização"}]}, {"id": "row-2","items": [{"label": "25.3"},{"label": "0"},{"label": "Nova configuração."}]}]} />

Ativa o [cache de condição de consulta](/pt-BR/concepts/features/performance/caches/query-condition-cache). O cache armazena intervalos de grânulos em data parts que não satisfazem a condição da cláusula `WHERE`
e reutiliza essas informações como um índice efêmero para consultas subsequentes.

Valores possíveis:

* 0 - Desativado
* 1 - Ativado

<div id="use_roaring_bitmap_iceberg_positional_deletes">
  ## use\_roaring\_bitmap\_iceberg\_positional\_deletes
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "0"},{"label": "Nova configuração"}]}]} />

Usa roaring bitmap para exclusões posicionais do Iceberg.

<div id="use_skip_indexes">
  ## use\_skip\_indexes
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Usa data skipping indexes durante a execução da consulta.

Valores possíveis:

* 0 — Desativado.
* 1 — Ativado.

<div id="use_skip_indexes_for_disjunctions">
  ## use\_skip\_indexes\_for\_disjunctions
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "1"},{"label": "Nova configuração"}]}]} />

Avalia filtros da cláusula `WHERE` com condições mistas de `AND` e `OR` usando skip indexes. Exemplo: `WHERE A = 5 AND (B = 5 OR C = 5)`.
Se desabilitada, os skip indexes ainda são usados para avaliar condições da cláusula `WHERE`, mas elas devem conter apenas cláusulas combinadas com `AND`.

Valores possíveis:

* 0 — Desabilitado.
* 1 — Habilitado.

<div id="use_skip_indexes_for_top_k">
  ## use\_skip\_indexes\_for\_top\_k
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "1"},{"label": "Habilita o uso de data skipping indexes para filtragem TopK por padrão"}]}, {"id": "row-2","items": [{"label": "25.12"},{"label": "0"},{"label": "Nova configuração."}]}]} />

Habilita o uso de data skipping indexes para filtragem TopK.

Quando habilitado, se existir um índice minmax de data skipping na coluna em uma consulta `ORDER BY <column> LIMIT n`, o otimizador tentará usar o índice minmax para ignorar grânulos que não sejam relevantes para o resultado final. Isso pode reduzir a latência da consulta.

Valores possíveis:

* 0 — Desabilitado.
* 1 — Habilitado.

<div id="use_skip_indexes_if_final">
  ## use\_skip\_indexes\_if\_final
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.6"},{"label": "1"},{"label": "Alteração no valor padrão da configuração"}]}]} />

Controla se os skip indexes são usados ao executar uma consulta com o modificador FINAL.

Os skip indexes podem excluir linhas (grânulos) que contêm os dados mais recentes, o que pode levar a resultados incorretos em uma consulta com o modificador FINAL. Quando essa configuração está habilitada, os skip indexes são aplicados mesmo com o modificador FINAL, o que pode melhorar o desempenho, mas com o risco de ignorar atualizações recentes. Essa configuração deve ser habilitada em conjunto com a configuração use\_skip\_indexes\_if\_final\_exact\_mode (o padrão é habilitado).

Valores possíveis:

* 0 — Desabilitado.
* 1 — Habilitado.

<div id="use_skip_indexes_if_final_exact_mode">
  ## use\_skip\_indexes\_if\_final\_exact\_mode
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.6"},{"label": "1"},{"label": "Alteração no valor padrão da configuração"}]}, {"id": "row-2","items": [{"label": "25.5"},{"label": "0"},{"label": "Esta configuração foi introduzida para ajudar a consulta FINAL a retornar resultados corretos com índices de salto"}]}]} />

Controla se os grânulos retornados por um índice de salto são expandidos para partes mais novas a fim de retornar resultados corretos ao executar uma consulta com o modificador FINAL.

O uso de índices de salto pode excluir linhas (grânulos) que contêm os dados mais recentes, o que pode levar a resultados incorretos. Esta configuração pode garantir resultados corretos ao examinar partes mais novas que se sobrepõem aos intervalos retornados pelo índice de salto. Esta configuração só deve ser desativada se resultados aproximados, com base na consulta ao índice de salto, forem aceitáveis para uma aplicação.

Possíveis valores:

* 0 — Desativado.
* 1 — Ativado.

<div id="use_skip_indexes_on_data_read">
  ## use\_skip\_indexes\_on\_data\_read
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "1"},{"label": "O text index agora está em GA"}]}, {"id": "row-2","items": [{"label": "26.1"},{"label": "1"},{"label": "Habilitado por padrão"}]}, {"id": "row-3","items": [{"label": "25.9"},{"label": "0"},{"label": "Nova configuração"}]}]} />

Habilita o uso de data skipping indexes durante a leitura dos dados.

Quando habilitada, os skip indexes são avaliados dinamicamente no momento em que cada grânulo de dados é lido, em vez de serem analisados antecipadamente antes do início da execução da consulta. Isso pode reduzir a latência de inicialização da consulta.

Valores possíveis:

* 0 — Desabilitado.
* 1 — Habilitado.

<div id="use_statistics">
  ## use\_statistics
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.1"},{"label": "1"},{"label": "Habilita essa otimização por padrão."}]}]} />

/// preferível a 'allow\_statistics\_optimize' para manter a consistência com 'use\_primary\_key' e 'use\_skip\_indexes'
Permite usar estatísticas para otimizar consultas

<div id="use_statistics_cache">
  ## use\_statistics\_cache
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "1"},{"label": "Habilita o cache de estatísticas"}]}, {"id": "row-2","items": [{"label": "25.11"},{"label": "0"},{"label": "Nova configuração"}]}]} />

Use o cache de estatísticas em uma consulta para evitar a sobrecarga de carregar estatísticas de todas as partes

<div id="use_statistics_for_part_pruning">
  ## use\_statistics\_for\_part\_pruning
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "1"},{"label": "Nova configuração para usar estatísticas na poda de partes durante a execução da consulta."}]}]} />

Usa estatísticas para filtrar partes durante a execução da consulta.

Quando habilitado, a poda em consultas SELECT usará estatísticas de coluna (por exemplo, estatísticas MinMax) para eliminar partes que não podem conter dados correspondentes antes da leitura de quaisquer dados.

Possíveis valores:

* 0 — Desabilitado.
* 1 — Habilitado.

<div id="use_strict_insert_block_limits">
  ## use\_strict\_insert\_block\_limits
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "0"},{"label": "Nova configuração para usar limites mínimos e máximos estritos de bloco de insert em inserts. Quando min < max, os limites máximos têm precedência."}]}]} />

Quando habilitada, aplica estritamente os limites mínimo e máximo de tamanho do bloco de insert.

Um bloco é emitido quando:

* Limiares mínimos (AND): Ambos `min_insert_block_size_rows` AND `min_insert_block_size_bytes` são atingidos.
* Limiares máximos (OR): `max_insert_block_size_rows` OR `max_insert_block_size_bytes` é atingido.

Quando desabilitada, um bloco é emitido quando:

* Limiares mínimos (OR): `min_insert_block_size_rows` OR `min_insert_block_size_bytes` é atingido.

**Observação**: Se as configurações máximas forem menores que as configurações mínimas, os limites máximos terão precedência, e os blocos serão emitidos antes de os limiares mínimos serem atingidos.

**Observação**: Essa configuração é desabilitada automaticamente para async inserts, porque async inserts anexam tokens de desduplicação por entrada que são incompatíveis com a divisão de blocos necessária para aplicar limites estritos.

Desabilitada por padrão.

<div id="use_structure_from_insertion_table_in_table_functions">
  ## use\_structure\_from\_insertion\_table\_in\_table\_functions
</div>

<SettingsInfoBlock type="UInt64" default_value="2" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "22.11"},{"label": "2"},{"label": "Melhora o uso da estrutura da tabela de inserção em funções de tabela"}]}]} />

Usa a estrutura da tabela de inserção em vez da inferência de esquema dos dados. Valores possíveis: 0 - desabilitado, 1 - habilitado, 2 - automático

<div id="use_text_index_header_cache">
  ## use\_text\_index\_header\_cache
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.11"},{"label": "0"},{"label": "Nova configuração"}]}]} />

Define se deve ser usado um cache do cabeçalho desserializado do índice de texto.
Usar o cache do cabeçalho do índice de texto pode reduzir significativamente a latência e aumentar a taxa de transferência ao trabalhar com um grande número de consultas de índice de texto.

<div id="use_text_index_like_evaluation_by_dictionary_scan">
  ## use\_text\_index\_like\_evaluation\_by\_dictionary\_scan
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "1"},{"label": "Nova configuração"}]}]} />

Ativa a avaliação de consultas LIKE/ILIKE por varredura no dicionário do índice de texto invertido.

<div id="use_text_index_postings_cache">
  ## use\_text\_index\_postings\_cache
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.11"},{"label": "0"},{"label": "Nova configuração"}]}]} />

Define se deve ser usado um cache de listas de postings desserializadas do índice de texto.
Usar o cache de postings do índice de texto pode reduzir significativamente a latência e aumentar a taxa de transferência ao trabalhar com um grande volume de consultas de índice de texto.

<div id="use_text_index_tokens_cache">
  ## use\_text\_index\_tokens\_cache
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": "0"},{"label": "Nova configuração"}]}]} />

Define se deve ser usado um cache de informações desserializadas de tokens do índice de texto.
Usar o cache de tokens do índice de texto pode reduzir significativamente a latência e aumentar o throughput ao trabalhar com um grande número de consultas de índice de texto.

<div id="use_top_k_dynamic_filtering">
  ## use\_top\_k\_dynamic\_filtering
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "1"},{"label": "Habilita por padrão a otimização de filtragem dinâmica para consultas TopK"}]}, {"id": "row-2","items": [{"label": "25.12"},{"label": "0"},{"label": "Nova configuração."}]}]} />

Habilita a otimização de filtragem dinâmica ao executar uma consulta `ORDER BY <column> LIMIT n`.

Quando habilitada, o executor da consulta tentará ignorar grânulos e linhas que não farão parte das `top N` linhas finais no conjunto de resultados. Essa otimização é inerentemente dinâmica, e as melhorias de latência dependem da distribuição dos dados e da presença de outros predicados na consulta.

Valores possíveis:

* 0 — Desabilitado.
* 1 — Habilitado.

<div id="use_top_k_dynamic_filtering_for_variable_length_types">
  ## use\_top\_k\_dynamic\_filtering\_for\_variable\_length\_types
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "0"},{"label": "Desabilita `use_top_k_dynamic_filtering` por padrão para colunas de ordenação de comprimento variável (por exemplo, `String`); o comportamento anterior aplicava a otimização incondicionalmente e é preservado em `compatibility`."}]}]} />

Permite que `use_top_k_dynamic_filtering` seja aplicado quando a coluna de ordenação tem um tipo de dados de comprimento variável (por exemplo, `String`, `Array`, `Map`, `Tuple` contendo elementos de comprimento variável).

Para esses tipos, a comparação de limiar por linha feita pelo filtro dinâmico pode custar mais do que a economia gerada quando o mínimo lexicográfico da coluna predomina (por exemplo, quando há principalmente strings vazias) e poucos grânulos podem ser ignorados. Nesse caso, o filtro dinâmico piora a latência da consulta em vez de melhorá-la.

Quando essa configuração é `0`, a filtragem dinâmica fica restrita a colunas cujos valores têm um tamanho máximo fixo na memória (números, `Date`, `DateTime`, `FixedString`, `Enum`, `Nullable` desses tipos, `Tuple` desses tipos). Quando definida como `1`, a filtragem dinâmica também se aplica a tipos de comprimento variável.

Valores possíveis:

* 0 — Desabilitado.
* 1 — Habilitado.

<div id="use_uncompressed_cache">
  ## use\_uncompressed\_cache
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Define se deve usar um cache de blocos não comprimidos. Aceita 0 ou 1. Por padrão, 0 (desabilitado).
Usar o cache não comprimido (apenas para tabelas da família MergeTree) pode reduzir significativamente a latência e aumentar a taxa de transferência ao trabalhar com um grande número de consultas curtas. Habilite essa configuração para usuários que enviam solicitações curtas com frequência. Observe também o parâmetro de configuração [uncompressed\_cache\_size](/pt-BR/reference/settings/server-settings/settings#uncompressed_cache_size) (definido apenas no arquivo de configuração) – o tamanho dos blocos do cache não comprimido. Por padrão, ele é 8 GiB. O cache não comprimido é preenchido conforme necessário, e os dados menos usados são excluídos automaticamente.

Para consultas que leem pelo menos um volume de dados relativamente grande (um milhão de linhas ou mais), o cache não comprimido é desabilitado automaticamente para economizar espaço para consultas realmente pequenas. Isso significa que você pode manter a configuração 'use\_uncompressed\_cache' sempre definida como 1.

<div id="use_variant_as_common_type">
  ## use\_variant\_as\_common\_type
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.1"},{"label": "1"},{"label": "Melhora a usabilidade."}]}, {"id": "row-2","items": [{"label": "24.1"},{"label": "0"},{"label": "Permite usar Variant em if/multiIf quando não há tipo comum"}]}]} />

Permite usar o tipo `Variant` como tipo de resultado das funções [if](/pt-BR/reference/functions/regular-functions/conditional-functions#if)/[multiIf](/pt-BR/reference/functions/regular-functions/conditional-functions#multiIf)/[array](/pt-BR/reference/functions/regular-functions/array-functions)/[map](/pt-BR/reference/functions/regular-functions/tuple-map-functions) quando não há um tipo comum entre os tipos de argumento.

Exemplo:

```sql theme={null}
SET use_variant_as_common_type = 1;
SELECT toTypeName(if(number % 2, number, range(number))) as variant_type FROM numbers(1);
SELECT if(number % 2, number, range(number)) as variant FROM numbers(5);
```

```text theme={null}
┌─variant_type───────────────────┐
│ Variant(Array(UInt64), UInt64) │
└────────────────────────────────┘
┌─variant───┐
│ []        │
│ 1         │
│ [0,1]     │
│ 3         │
│ [0,1,2,3] │
└───────────┘
```

```sql theme={null}
SET use_variant_as_common_type = 1;
SELECT toTypeName(multiIf((number % 4) = 0, 42, (number % 4) = 1, [1, 2, 3], (number % 4) = 2, 'Hello, World!', NULL)) AS variant_type FROM numbers(1);
SELECT multiIf((number % 4) = 0, 42, (number % 4) = 1, [1, 2, 3], (number % 4) = 2, 'Hello, World!', NULL) AS variant FROM numbers(4);
```

```text theme={null}
─variant_type─────────────────────────┐
│ Variant(Array(UInt8), String, UInt8) │
└──────────────────────────────────────┘

┌─variant───────┐
│ 42            │
│ [1,2,3]       │
│ Hello, World! │
│ ᴺᵁᴸᴸ          │
└───────────────┘
```

```sql theme={null}
SET use_variant_as_common_type = 1;
SELECT toTypeName(array(range(number), number, 'str_' || toString(number))) as array_of_variants_type from numbers(1);
SELECT array(range(number), number, 'str_' || toString(number)) as array_of_variants FROM numbers(3);
```

```text theme={null}
┌─array_of_variants_type────────────────────────┐
│ Array(Variant(Array(UInt64), String, UInt64)) │
└───────────────────────────────────────────────┘

┌─array_of_variants─┐
│ [[],0,'str_0']    │
│ [[0],1,'str_1']   │
│ [[0,1],2,'str_2'] │
└───────────────────┘
```

```sql theme={null}
SET use_variant_as_common_type = 1;
SELECT toTypeName(map('a', range(number), 'b', number, 'c', 'str_' || toString(number))) as map_of_variants_type from numbers(1);
SELECT map('a', range(number), 'b', number, 'c', 'str_' || toString(number)) as map_of_variants FROM numbers(3);
```

```text theme={null}
┌─map_of_variants_type────────────────────────────────┐
│ Map(String, Variant(Array(UInt64), String, UInt64)) │
└─────────────────────────────────────────────────────┘

┌─map_of_variants───────────────┐
│ {'a':[],'b':0,'c':'str_0'}    │
│ {'a':[0],'b':1,'c':'str_1'}   │
│ {'a':[0,1],'b':2,'c':'str_2'} │
└───────────────────────────────┘
```

<div id="use_variant_default_implementation_for_comparisons">
  ## use\_variant\_default\_implementation\_for\_comparisons
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.1"},{"label": "1"},{"label": "Habilita a implementação padrão para o tipo Variant em funções de comparação"}]}]} />

Habilita ou desabilita a implementação padrão para o tipo Variant em funções de comparação.

<div id="use_with_fill_by_sorting_prefix">
  ## use\_with\_fill\_by\_sorting\_prefix
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "23.5"},{"label": "1"},{"label": "As colunas que precedem as colunas WITH FILL na cláusula ORDER BY formam o prefixo de ordenação. As linhas com valores diferentes no prefixo de ordenação são preenchidas de forma independente"}]}]} />

As colunas que precedem as colunas WITH FILL na cláusula ORDER BY formam o prefixo de ordenação. As linhas com valores diferentes no prefixo de ordenação são preenchidas de forma independente

<div id="validate_enum_literals_in_operators">
  ## validate\_enum\_literals\_in\_operators
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "0"},{"label": "Nova configuração"}]}]} />

Se habilitada, valida literais de enum em operadores como `IN`, `NOT IN`, `==`, `!=` com base no tipo enum e lança uma exceção caso o literal não seja um valor válido do enum.

<div id="validate_mutation_query">
  ## validate\_mutation\_query
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.11"},{"label": "1"},{"label": "Nova configuração para validar consultas de mutação por padrão."}]}]} />

Valide as consultas de mutação antes de aceitá-las. As mutações são executadas em segundo plano, e a execução de uma consulta inválida fará com que as mutações fiquem travadas, exigindo intervenção manual.

Altere essa configuração somente se você encontrar um bug de incompatibilidade com versões anteriores.

<div id="validate_polygons">
  ## validate\_polygons
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "20.4"},{"label": "1"},{"label": "Gera uma exceção se o polígono for inválido na função pointInPolygon por padrão, em vez de retornar resultados possivelmente incorretos"}]}]} />

Ativa ou desativa a geração de uma exceção na função [pointInPolygon](/pt-BR/reference/functions/regular-functions/geo/coordinates#pointinpolygon) se o polígono for autointersectante ou autotangente.

Possíveis valores:

* 0 — A geração de uma exceção está desativada. `pointInPolygon` aceita polígonos inválidos e pode retornar resultados incorretos para eles.
* 1 — A geração de uma exceção está ativada.

<div id="variant_throw_on_type_mismatch">
  ## variant\_throw\_on\_type\_mismatch
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "1"},{"label": "Nova configuração para controlar o comportamento em caso de incompatibilidade de tipo na implementação padrão de Variant"}]}]} />

Ao aplicar uma função a uma coluna [Variant](/pt-BR/reference/data-types/variant) usando a implementação padrão,
controla o que acontece com as linhas cujo tipo real é incompatível com a função:

* `true` (padrão) — gera uma exceção.
* `false` — retorna `NULL` para essas linhas.

<div id="vector_search_filter_strategy">
  ## vector\_search\_filter\_strategy
</div>

<SettingsInfoBlock type="VectorSearchFilterStrategy" default_value="auto" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "auto"},{"label": "Nova configuração"}]}]} />

Se uma consulta de busca vetorial tiver uma cláusula WHERE, essa configuração determina se ela será avaliada primeiro (pré-filtragem) ou se o índice de similaridade vetorial será consultado primeiro (pós-filtragem). Valores possíveis:

* 'auto' - Pós-filtragem (a semântica exata pode mudar no futuro).
* 'postfilter' - Use o índice de similaridade vetorial para identificar os vizinhos mais próximos e, em seguida, aplique outros filtros
* 'prefilter' - Avalie primeiro os outros filtros e, em seguida, execute uma busca por força bruta para identificar os vizinhos.

<div id="vector_search_index_fetch_multiplier">
  ## vector\_search\_index\_fetch\_multiplier
</div>

**Aliases**: `vector_search_postfilter_multiplier`

<SettingsInfoBlock type="Float" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "1"},{"label": "Alias da configuração 'vector_search_postfilter_multiplier'"}]}]} />

Multiplica por esse valor o número de vizinhos mais próximos obtidos do vector similarity index. Só se aplica à pós-filtragem com outros predicados ou se a configuração 'vector\_search\_with\_rescoring = 1'.

<div id="vector_search_with_rescoring">
  ## vector\_search\_with\_rescoring
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "0"},{"label": "Nova configuração."}]}]} />

Define se o ClickHouse faz rescoring para consultas que usam o índice de similaridade vetorial.
Sem rescoring, o índice de similaridade vetorial retorna diretamente as linhas com as melhores correspondências.
Com rescoring, as linhas são extrapoladas para o nível de grânulo, e todas as linhas no grânulo são verificadas novamente.
Na maioria das situações, o rescoring traz apenas um ganho marginal de precisão, mas degrada significativamente o desempenho das consultas de busca vetorial.
Observação: uma consulta executada sem rescoring e com parallel replicas habilitadas pode usar rescoring como fallback.

<div id="wait_changes_become_visible_after_commit_mode">
  ## wait\_changes\_become\_visible\_after\_commit\_mode
</div>

<SettingsInfoBlock type="TransactionsWaitCSNMode" default_value="wait_unknown" />

Aguarda que as alterações confirmadas se tornem efetivamente visíveis no snapshot mais recente

<div id="wait_for_async_insert">
  ## wait\_for\_async\_insert
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Se true, espera o processamento do insert assíncrono

<div id="wait_for_async_insert_timeout">
  ## wait\_for\_async\_insert\_timeout
</div>

<SettingsInfoBlock type="Seconds" default_value="120" />

Tempo limite de espera pelo processamento da inserção assíncrona

<div id="wait_for_window_view_fire_signal_timeout">
  ## wait\_for\_window\_view\_fire\_signal\_timeout
</div>

<SettingsInfoBlock type="Seconds" default_value="10" />

Tempo limite de espera pelo sinal de disparo da window view no processamento em tempo de evento

<div id="webassembly_udf_max_fuel">
  ## webassembly\_udf\_max\_fuel
</div>

<SettingsInfoBlock type="UInt64" default_value="100000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": "100000"},{"label": "Nova configuração para limitar o número de instruções de CPU (fuel) por execução de instância de UDF WebAssembly."}]}]} />

Limite de fuel por execução de instância de UDF WebAssembly. Cada instrução de WebAssembly consome uma certa quantidade de fuel.
Defina 0 para não haver limite.

<div id="webassembly_udf_max_input_block_size">
  ## webassembly\_udf\_max\_input\_block\_size
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": "0"},{"label": "Nova configuração para limitar o tamanho do bloco de entrada de UDFs do WebAssembly."}]}]} />

Número máximo de linhas passadas para uma UDF do WebAssembly em um único bloco. Defina como 0 para processar todas as linhas de uma só vez.

<div id="webassembly_udf_max_instances">
  ## webassembly\_udf\_max\_instances
</div>

<SettingsInfoBlock type="UInt64" default_value="32" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": "32"},{"label": "Nova configuração para limitar o número de instâncias de WebAssembly UDF que podem ser executadas em paralelo por função."}]}]} />

Número máximo de instâncias de WebAssembly UDF que podem ser executadas em paralelo por função.

<div id="webassembly_udf_max_memory">
  ## webassembly\_udf\_max\_memory
</div>

<SettingsInfoBlock type="UInt64" default_value="134217728" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": "134217728"},{"label": "Nova configuração para limitar a memória por instância de UDF em WebAssembly."}]}]} />

Limite de memória em bytes por instância de UDF em WebAssembly.

<div id="window_view_clean_interval">
  ## window\_view\_clean\_interval
</div>

<SettingsInfoBlock type="Segundos" default_value="60" />

O intervalo de limpeza da window view, em segundos, para remover dados desatualizados.

<div id="window_view_heartbeat_interval">
  ## window\_view\_heartbeat\_interval
</div>

<SettingsInfoBlock type="Segundos" default_value="15" />

O intervalo de heartbeat, em segundos, para indicar que a consulta watch está ativa.

<div id="workload">
  ## workload
</div>

<SettingsInfoBlock type="String" default_value="default" />

Nome do workload usado para acessar recursos

<div id="write_full_path_in_iceberg_metadata">
  ## write\_full\_path\_in\_iceberg\_metadata
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "0"},{"label": "Nova configuração."}]}]} />

Grava caminhos completos (incluindo s3://) nos arquivos de metadados do Iceberg.

<div id="write_through_distributed_cache">
  ## write\_through\_distributed\_cache
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.10"},{"label": "0"},{"label": "Uma configuração para o ClickHouse Cloud"}]}]} />

Só tem efeito no ClickHouse Cloud. Permite gravar no distributed cache (a gravação no S3 também será realizada pelo distributed cache)

<div id="write_through_distributed_cache_buffer_size">
  ## write\_through\_distributed\_cache\_buffer\_size
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.7"},{"label": "0"},{"label": "Nova configuração do ClickHouse Cloud"}]}]} />

Só tem efeito no ClickHouse Cloud. Define o tamanho do buffer para o cache distribuído write-through. Se for 0, usará o tamanho de buffer que teria sido usado se não houvesse cache distribuído.

<div id="zstd_window_log_max">
  ## zstd\_window\_log\_max
</div>

<SettingsInfoBlock type="Int64" default_value="0" />

Permite selecionar o valor máximo de window log do ZSTD (não será usado para a família MergeTree)
