Pular para o conteúdo principal
Todas as configurações abaixo também estão disponíveis na tabela system.settings. Essas configurações são geradas automaticamente a partir do código-fonte.

add_http_cors_header

Adiciona o cabeçalho HTTP CORS.

additional_result_filter

Uma expressão de filtro adicional aplicada ao resultado da consulta SELECT. Essa configuração não é aplicada a nenhuma subconsulta. Exemplo
INSERT INTO table_1 VALUES (1, 'a'), (2, 'bb'), (3, 'ccc'), (4, 'dddd');
SElECT * FROM table_1;
┌─x─┬─y────┐
│ 1 │ a    │
│ 2 │ bb   │
│ 3 │ ccc  │
│ 4 │ dddd │
└───┴──────┘
SELECT *
FROM table_1
SETTINGS additional_result_filter = 'x != 2'
┌─x─┬─y────┐
│ 1 │ a    │
│ 3 │ ccc  │
│ 4 │ dddd │
└───┴──────┘

additional_table_filters

Uma expressão de filtro adicional aplicada após a leitura da tabela especificada. Exemplo
INSERT INTO table_1 VALUES (1, 'a'), (2, 'bb'), (3, 'ccc'), (4, 'dddd');
SELECT * FROM table_1;
┌─x─┬─y────┐
│ 1 │ a    │
│ 2 │ bb   │
│ 3 │ ccc  │
│ 4 │ dddd │
└───┴──────┘
SELECT *
FROM table_1
SETTINGS additional_table_filters = {'table_1': 'x != 2'}
┌─x─┬─y────┐
│ 1 │ a    │
│ 3 │ ccc  │
│ 4 │ dddd │
└───┴──────┘

aggregate_function_input_format

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:
CREATE TABLE example (
    user_id UInt64,
    avg_session_length AggregateFunction(avg, UInt32)
);
Com aggregate_function_input_format = 'value':
INSERT INTO example FORMAT CSV
123,456
Com aggregate_function_input_format = 'array':
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.

aggregate_functions_null_for_empty

Ativa ou desativa a reescrita de todas as funções de agregação em uma consulta, adicionando a elas o sufixo -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) 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:
SELECT SUM(-1), MAX(0) FROM system.one WHERE 0;
Com aggregate_functions_null_for_empty = 0, o resultado seria:
┌─SUM(-1)─┬─MAX(0)─┐
│       0 │      0 │
└─────────┴────────┘
Com aggregate_functions_null_for_empty = 1, o resultado seria:
┌─SUMOrNull(-1)─┬─MAXOrNull(0)─┐
│          NULL │         NULL │
└───────────────┴──────────────┘

aggregation_in_order_max_block_bytes

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.

aggregation_memory_efficient_merge_threads

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

ai_function_max_api_calls_per_query

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

ai_function_max_input_tokens_per_query

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.

ai_function_max_output_tokens_per_query

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.

ai_function_max_retries

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.

ai_function_request_timeout_sec

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.

ai_function_retry_initial_delay_ms

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.

ai_function_throw_on_error

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.

ai_function_throw_on_quota_exceeded

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

allow_aggregate_partitions_independently

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

allow_archive_path_syntax

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.

allow_asynchronous_read_from_io_pool_for_merge_tree

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.

allow_calculating_subcolumns_sizes_for_merge_tree_reading

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.

allow_changing_replica_until_first_data_packet

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.

allow_create_index_without_type

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

allow_custom_error_code_in_throwif

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.

allow_ddl

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

allow_deprecated_database_ordinary

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

allow_deprecated_error_prone_window_functions

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

allow_deprecated_snowflake_conversion_functions

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.

allow_deprecated_syntax_for_merge_tree

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

allow_distributed_ddl

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

allow_drop_detached

Permite consultas ALTER TABLE … DROP DETACHED PART[ITION] …

allow_dynamic_type_in_join_keys

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.

allow_execute_multiif_columnar

Permite executar a função multiIf de forma colunar

allow_experimental_ai_functions

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

allow_experimental_analyzer

Aliases: enable_analyzer Permite o novo analyzer de consulta.

allow_experimental_cleanup_old_data_files_compaction

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

allow_experimental_codecs

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

allow_experimental_correlated_subqueries

Permite executar subconsultas correlacionadas.

allow_experimental_database_glue_catalog

Aliases: allow_database_glue_catalog Permite usar o engine de banco de dados experimental DataLakeCatalog com catalog_type = ‘glue’ Valor padrão no Cloud: 1.

allow_experimental_database_hms_catalog

Permite o mecanismo experimental de banco de dados DataLakeCatalog com catalog_type = ‘hms’

allow_experimental_database_iceberg

Aliases: allow_database_iceberg Permite usar o engine de banco de dados experimental DataLakeCatalog com catalog_type = ‘iceberg’ Valor padrão no Cloud: 1.

allow_experimental_database_materialized_postgresql

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

allow_experimental_database_paimon_rest_catalog

Permite usar o mecanismo de banco de dados experimental DataLakeCatalog com catalog_type = ‘paimon_rest’

allow_experimental_database_unity_catalog

Aliases: allow_database_unity_catalog Permite o mecanismo de banco de dados experimental DataLakeCatalog com catalog_type = ‘unity’ Valor padrão no Cloud: 1.

allow_experimental_delta_kernel_rs

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

allow_experimental_delta_lake_writes

Habilita o recurso de escrita do delta-kernel.

allow_experimental_expire_snapshots

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

allow_experimental_funnel_functions

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

allow_experimental_geo_types_in_iceberg

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

allow_experimental_hash_functions

Ativa funções de hash experimentais

allow_experimental_iceberg_compaction

Permite usar explicitamente ‘OPTIMIZE’ em tabelas Iceberg.

allow_experimental_join_right_table_sorting

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.

allow_experimental_json_lazy_type_hints

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.

allow_experimental_kafka_offsets_storage_in_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

allow_experimental_kusto_dialect

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

allow_experimental_materialized_postgresql_table

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

allow_experimental_nlp_functions

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

allow_experimental_nullable_tuple_type

Permite criar colunas Tuple 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.

allow_experimental_object_storage_queue_hive_partitioning

Permite usar o particionamento Hive com os motores S3Queue/AzureQueue

allow_experimental_paimon_storage_engine

Permite criar tabelas usando motores de tabela Paimon*.

allow_experimental_parallel_reading_from_replicas

Aliases: enable_parallel_replicas 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

allow_experimental_polyglot_dialect

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

allow_experimental_prql_dialect

Ativa o PRQL — uma alternativa ao SQL.

allow_experimental_query_deduplication

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

allow_experimental_time_series_aggregate_functions

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

allow_experimental_time_series_table

Permite criar tabelas com o motor de tabela TimeSeries. Valores possíveis:
  • 0 — o motor de tabela TimeSeries está desabilitado.
  • 1 — o motor de tabela TimeSeries está habilitado.

allow_experimental_unique_key

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

allow_experimental_window_view

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

allow_experimental_ytsaurus_dictionary_source

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

allow_experimental_ytsaurus_table_engine

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

allow_experimental_ytsaurus_table_function

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

allow_fuzz_query_functions

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

allow_general_join_planning

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.

allow_get_client_http_header

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.

allow_hyperscan

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

allow_iceberg_remove_orphan_files

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

allow_insert_into_iceberg

Aliases: allow_experimental_insert_into_iceberg Permite executar consultas insert no Iceberg.

allow_introspection_functions

Ativa ou desativa funções de introspecção 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

allow_key_condition_coalesce_rewrite

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.

allow_materialized_view_with_bad_select

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.

allow_named_collection_override_by_default

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

allow_non_metadata_alters

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

allow_nonconst_timezone_arguments

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.

allow_nondeterministic_mutations

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
<profiles>
    <default>
        <allow_nondeterministic_mutations>1</allow_nondeterministic_mutations>

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

    <!-- ... -->

</profiles>

allow_nondeterministic_optimize_skip_unused_shards

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.

allow_nullable_tuple_in_extracted_subcolumns

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.

allow_prefetched_read_pool_for_local_filesystem

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

allow_prefetched_read_pool_for_remote_filesystem

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

allow_push_predicate_ast_for_distributed_subqueries

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

allow_push_predicate_when_subquery_contains_with

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

allow_rank_dense_rank_arguments

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.

allow_reorder_prewhere_conditions

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

allow_settings_after_format_in_insert

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:
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:
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.
Use esta configuração apenas por compatibilidade com versões anteriores, se seus casos de uso dependerem da sintaxe antiga.

allow_simdjson

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

allow_special_serialization_kinds_in_output_formats

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.

allow_statistics

Aliases: allow_experimental_statistics Permite definir colunas com estatísticas e manipular essas estatísticas.

allow_statistics_optimize

Aliases: allow_statistic_optimize Permite usar estatísticas para otimizar consultas.

allow_suspicious_codecs

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

allow_suspicious_fixed_string_types

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

allow_suspicious_indices

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

allow_suspicious_low_cardinality_types

Permite ou restringe o uso de 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 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.

allow_suspicious_primary_key

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

allow_suspicious_ttl_expressions

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

allow_suspicious_types_in_group_by

Permite ou restringe o uso dos tipos Variant e Dynamic nas chaves de GROUP BY.

allow_suspicious_types_in_order_by

Permite ou restringe o uso dos tipos Variant e Dynamic nas chaves ORDER BY.

allow_suspicious_variant_types

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.

allow_unrestricted_reads_from_keeper

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

alter_move_to_space_execute_async

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

alter_partition_verbose_result

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 e FREEZE PARTITION. Valores possíveis:
  • 0 — desabilita a verbosidade.
  • 1 — habilita a verbosidade.
Exemplo
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 PARTITION202101       │ 202101_7_7_0 │ 202101_5_5_0  │
ATTACH PARTITION202101       │ 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 │
└──────────────┴──────────────┴──────────────┴─────────────┴───────────────────────────────┴─────────────────────────────────────────────────────────────┘

alter_sync

Aliases: replication_alter_partitions_sync Permite especificar o comportamento de espera para ações executadas em réplicas por consultas ALTER, OPTIMIZE ou 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.
alter_sync se aplica apenas a tabelas Replicated e SharedMergeTree; não tem efeito ao alterar tabelas que não sejam Replicated nem Shared.

alter_update_mode

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.

analyze_index_with_space_filling_curves

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.

analyzer_compatibility_allow_compound_identifiers_in_unflatten_nested

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.

analyzer_compatibility_join_using_top_level_identifier

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

analyzer_inline_views

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.

any_join_distinct_right_table_keys

Habilita o comportamento legado do servidor ClickHouse em operações ANY INNER|LEFT JOIN.
Use esta configuração apenas para compatibilidade com versões anteriores, se seus casos de uso dependerem do comportamento legado de JOIN.
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:

apply_deleted_mask

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

apply_mutations_on_fly

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

apply_patch_parts

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

apply_patch_parts_join_cache_buckets

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

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

apply_row_policy_after_final

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.

apply_settings_from_server

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.

archive_adaptive_buffer_max_size_bytes

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

arrow_flight_request_descriptor_type

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)

ast_fuzzer_any_query

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.

ast_fuzzer_runs

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.

asterisk_include_alias_columns

Inclui colunas ALIAS em consultas com curinga (SELECT *). Valores possíveis:
  • 0 - desabilitado
  • 1 - habilitado

asterisk_include_materialized_columns

Inclui colunas MATERIALIZED em consultas com curinga (SELECT *). Valores possíveis:
  • 0 - desabilitado
  • 1 - habilitado

asterisk_include_virtual_columns

Inclui colunas virtuais em consultas com curinga (SELECT *). Valores possíveis:
  • 0 - desabilitado
  • 1 - habilitado

async_insert

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

async_insert_busy_timeout_decrease_rate

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

async_insert_busy_timeout_increase_rate

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

async_insert_busy_timeout_max_ms

Aliases: async_insert_busy_timeout_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).

async_insert_busy_timeout_min_ms

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

async_insert_deduplicate

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

async_insert_max_data_size

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

async_insert_max_query_number

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

async_insert_poll_timeout_ms

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

async_insert_use_adaptive_busy_timeout

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

async_query_sending_for_remote

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

async_socket_for_remote

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

automatic_parallel_replicas_min_bytes_per_replica

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.

automatic_parallel_replicas_mode

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

azure_allow_parallel_part_upload

Usa várias threads para upload multipart no Azure.

azure_check_objects_after_upload

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

azure_connect_timeout_ms

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

azure_create_new_file_on_insert

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

azure_ignore_file_doesnt_exist

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.

azure_list_object_keys_size

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

azure_max_blocks_in_multipart_upload

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

azure_max_get_burst

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

azure_max_get_rps

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

azure_max_inflight_parts_for_one_file

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

azure_max_put_burst

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

azure_max_put_rps

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

azure_max_redirects

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

azure_max_single_part_copy_size

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

azure_max_single_part_upload_size

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

azure_max_single_read_retries

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

azure_max_unexpected_write_error_retries

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

azure_max_upload_part_size

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

azure_min_upload_part_size

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

azure_request_timeout_ms

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.

azure_sdk_max_retries

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

azure_sdk_retry_initial_backoff_ms

Backoff mínimo entre tentativas no Azure SDK

azure_sdk_retry_max_backoff_ms

Backoff máximo entre tentativas no SDK do Azure

azure_skip_empty_files

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.

azure_strict_upload_part_size

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

azure_throw_on_zero_files_match

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.

azure_truncate_on_insert

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

azure_upload_part_size_multiply_factor

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.

azure_upload_part_size_multiply_parts_count_threshold

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.

azure_use_adaptive_timeouts

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.

backup_restore_batch_size_for_keeper_multi

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

backup_restore_batch_size_for_keeper_multiread

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

backup_restore_failure_after_host_disconnected_for_seconds

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.

backup_restore_finish_timeout_after_error_sec

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.

backup_restore_keeper_fault_injection_probability

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]

backup_restore_keeper_fault_injection_seed

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

backup_restore_keeper_max_retries

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.

backup_restore_keeper_max_retries_while_handling_error

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.

backup_restore_keeper_max_retries_while_initializing

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.

backup_restore_keeper_retry_initial_backoff_ms

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

backup_restore_keeper_retry_max_backoff_ms

Tempo máximo de backoff para operações do [Zoo]Keeper durante backup ou restauração Valor padrão no Cloud: 60000.

backup_restore_keeper_value_max_size

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

backup_restore_s3_retry_attempts

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

backup_restore_s3_retry_initial_backoff_ms

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

backup_restore_s3_retry_jitter_factor

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]

backup_restore_s3_retry_max_backoff_ms

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

backup_slow_all_threads_after_retryable_s3_error

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.

cache_warmer_threads

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 estiver habilitado. Zero para desabilitar.

calculate_text_stack_trace

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.

cancel_http_readonly_queries_on_client_close

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.

cast_ipv4_ipv6_default_on_conversion_error

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.

cast_keep_nullable

Habilita ou desabilita a manutenção do tipo de dado Nullable em operações 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:
SET cast_keep_nullable = 0;
SELECT CAST(toNullable(toInt32(0)) AS Int32) as x, toTypeName(x);
Resultado:
┌─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:
SET cast_keep_nullable = 1;
SELECT CAST(toNullable(toInt32(0)) AS Int32) as x, toTypeName(x);
Resultado:
┌─x─┬─toTypeName(CAST(toNullable(toInt32(0)), 'Int32'))─┐
│ 0 │ Nullable(Int32)                                   │
└───┴───────────────────────────────────────────────────┘
Veja também

cast_string_to_date_time_mode

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. Por exemplo, '2018-06-08T01:02:03.000Z'.
  • 'best_effort_us' — Semelhante a best_effort (veja a diferença em 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:

cast_string_to_dynamic_use_inference

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

cast_string_to_variant_use_inference

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

check_named_collection_dependencies

Verifica se DROP NAMED COLLECTION não quebrará as tabelas que dependem dela

check_query_single_value_result

Define o nível de detalhamento do resultado da consulta 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.

check_referential_table_dependencies

Verifica se uma consulta DDL (como DROP TABLE ou RENAME) não quebrará dependências referenciais

check_table_dependencies

Verifica se a consulta DDL (como DROP TABLE ou RENAME) não causará a quebra de dependências

checksum_on_read

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.

cloud_mode

Modo Cloud Valor padrão na Cloud: 1.

cloud_mode_database_engine

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.

cloud_mode_engine

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.

cluster_for_parallel_replicas

Cluster do shard em que o servidor atual está localizado Valor padrão do Cloud: default.

cluster_function_process_archive_on_multiple_nodes

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.

cluster_table_function_buckets_batch_size

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.

cluster_table_function_split_granularity

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.

collect_hash_table_stats_during_aggregation

Habilita a coleta de estatísticas da tabela hash para otimizar a alocação de memória

collect_hash_table_stats_during_joins

Habilita a coleta de estatísticas da tabela hash para otimizar a alocação de memóri

compatibility

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

compatibility_ignore_auto_increment_in_create_table

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

compatibility_ignore_collation_in_create_table

Compatibilidade: ignorar collation no CREATE TABLE

compatibility_s3_presigned_url_query_in_path

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.

compile_aggregate_expressions

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

compile_expressions

Compila algumas funções escalares e operadores em código nativo.

compile_sort_description

Compila a descrição da ordenação em código nativo.

connect_timeout

Tempo limite da conexão se não houver réplicas.

connect_timeout_with_failover_ms

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.

connect_timeout_with_failover_secure_ms

Tempo limite de conexão para selecionar a primeira réplica saudável (para conexões seguras).

connection_pool_max_wait_ms

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.

connections_with_failover_max_tries

O número máximo de tentativas de conexão com cada réplica do mecanismo de tabela Distributed.

convert_query_to_cnf

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 para mais detalhes). Por exemplo, observe como a consulta SELECT abaixo não é modificada (comportamento padrão):
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 é:
┌─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:
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:
┌─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

correlated_subqueries_default_join_kind

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.

correlated_subqueries_substitute_equivalent_expressions

Usa expressões de filtro para inferir expressões equivalentes e substituí-las em vez de criar um CROSS JOIN.

correlated_subqueries_use_in_memory_buffer

Usa buffer na memória para a entrada de subconsultas correlacionadas para evitar sua reavaliação.

count_distinct_implementation

Especifica qual das funções uniq* deve ser usada para executar a construção COUNT(DISTINCT …). Valores possíveis:

count_distinct_optimization

Reescreve count distinct em uma subconsulta de group by

count_matches_stop_at_empty_match

Interrompe a contagem assim que um padrão corresponder a zero caracteres na função countMatches.

create_if_not_exists

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.

create_index_ignore_unique

Ignora a palavra-chave UNIQUE em CREATE UNIQUE INDEX. Criado para testes de compatibilidade com SQL.

create_replicated_merge_tree_fault_injection_probability

A probabilidade de ocorrer uma injeção de falha durante a criação da tabela, após a criação dos metadados no ZooKeeper

create_table_empty_primary_key_by_default

Permite criar tabelas *MergeTree com chave primária vazia quando ORDER BY e PRIMARY KEY não são especificados

cross_join_min_bytes_to_compress

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.

cross_join_min_rows_to_compress

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.

cross_to_inner_join_rewrite

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

data_type_default_nullable

Faz com que os tipos de dados sem modificadores explícitos NULL or NOT NULL na definição da coluna sejam 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.

database_atomic_wait_for_drop_and_detach_synchronously

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.

database_datalake_require_metadata_access

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.

database_replicated_allow_explicit_uuid

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.

database_replicated_allow_heavy_create

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.

database_replicated_allow_only_replicated_engine

Permite criar apenas tabelas Replicated em bancos de dados com engine Replicated Valor padrão no Cloud: 1.

database_replicated_allow_replicated_engine_arguments

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.

database_replicated_always_detach_permanently

Executa DETACH TABLE como DETACH TABLE PERMANENTLY se o engine do banco de dados for Replicated

database_replicated_enforce_synchronous_settings

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.

database_replicated_initial_query_timeout_sec

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.

database_shared_drop_table_delay_seconds

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.

decimal_check_overflow

Verifica overflow em operações aritméticas e de comparação com decimais

deduplicate_blocks_in_dependent_materialized_views

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

deduplicate_insert

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.

deduplicate_insert_select

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.

default_materialized_view_sql_security

Permite definir o valor padrão da opção SQL SECURITY ao criar uma visão materializada. Mais sobre SQL security. O valor padrão é DEFINER.

default_max_bytes_in_join

Tamanho máximo da tabela do lado direito quando um limite é necessário, mas max_bytes_in_join não está definido.

default_normal_view_sql_security

Permite definir a opção padrão de SQL SECURITY ao criar uma view normal. Mais sobre SQL security. O valor padrão é INVOKER.

default_table_engine

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:
SET default_table_engine = 'Log';

SELECT name, value, changed FROM system.settings WHERE name = 'default_table_engine';
Resultado:
┌─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:
CREATE TABLE my_table (
    x UInt32,
    y UInt32
);

SHOW CREATE TABLE my_table;
Resultado:
┌─statement────────────────────────────────────────────────────────────────┐
│ CREATE TABLE default.my_table
(
    `x` UInt32,
    `y` UInt32
)
ENGINE = Log
└──────────────────────────────────────────────────────────────────────────┘

default_temporary_table_engine

O mesmo que 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:
SET default_temporary_table_engine = 'Log';

CREATE TEMPORARY TABLE my_table (
    x UInt32,
    y UInt32
);

SHOW CREATE TEMPORARY TABLE my_table;
Resultado:
┌─statement────────────────────────────────────────────────────────────────┐
│ CREATE TEMPORARY TABLE default.my_table
(
    `x` UInt32,
    `y` UInt32
)
ENGINE = Log
└──────────────────────────────────────────────────────────────────────────┘

default_view_definer

Permite definir a opção DEFINER padrão ao criar uma VIEW. Mais sobre SQL security. O valor padrão é CURRENT_USER.

defer_partition_pruning_after_final

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

delta_lake_enable_engine_predicate

Habilita a poda interna de dados no delta-kernel.

delta_lake_enable_expression_visitor_logging

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.

delta_lake_insert_max_bytes_in_data_file

Define o limite, em bytes, para um único arquivo de dados inserido no delta lake.

delta_lake_insert_max_rows_in_data_file

Define um limite de linhas para um único arquivo de dados inserido no Delta Lake.

delta_lake_log_metadata

Habilita o registro em log dos arquivos de metadados do delta lake na tabela do sistema.

delta_lake_reload_schema_for_consistency

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.

delta_lake_snapshot_end_version

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

delta_lake_snapshot_start_version

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

delta_lake_snapshot_version

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

delta_lake_throw_on_engine_predicate_error

Ativa o lançamento de uma exceção caso ocorra um erro ao analisar o predicado de varredura no delta-kernel.

describe_compact_output

Se true, inclui apenas os nomes e os tipos das colunas no resultado da consulta DESCRIBE

describe_include_subcolumns

Habilita a descrição de subcolunas em uma consulta DESCRIBE. Por exemplo, membros de um Tuple ou subcolunas de um tipo de dado Map, Nullable ou Array. 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.

describe_include_virtual_columns

Se true, as colunas virtuais da tabela serão incluídas no resultado da consulta DESCRIBE.

dialeto

Qual dialeto será usado para processar a consulta

dictionary_use_async_executor

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.

dictionary_validate_primary_key_type

Valida o tipo da chave primária de dicionários. Por padrão, o tipo id de layouts simples será convertido implicitamente para UInt64.

distinct_overflow_mode

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.

distributed_aggregation_memory_efficient

Indica se o modo de economia de memória da agregação distribuída está habilitado.

distributed_background_insert_batch

Aliases: distributed_directory_monitor_batch_inserts Ativa/desativa o envio em lote dos dados inseridos. Quando o envio em lote está ativado, o motor de tabela 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.

distributed_background_insert_max_sleep_time_ms

Aliases: distributed_directory_monitor_max_sleep_time_ms Intervalo máximo para que o motor de tabela Distributed envie dados. Limita o crescimento exponencial do intervalo definido na configuração distributed_background_insert_sleep_time_ms. Valores possíveis:
  • Um número inteiro positivo de milissegundos.

distributed_background_insert_sleep_time_ms

Aliases: distributed_directory_monitor_sleep_time_ms Intervalo base para o motor de tabela Distributed enviar dados. O intervalo real aumenta exponencialmente em caso de erro. Valores possíveis:
  • Um número inteiro positivo de milissegundos.

distributed_background_insert_split_batch_on_failure

Aliases: distributed_directory_monitor_split_batch_on_failure 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.
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).
Você não deve depender da divisão automática de batches, pois isso pode prejudicar o desempenho.

distributed_background_insert_timeout

Aliases: insert_distributed_timeout 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.

distributed_cache_alignment

Tem efeito apenas no ClickHouse Cloud. Uma configuração para fins de teste; não a altere

distributed_cache_bypass_connection_pool

Só tem efeito no ClickHouse Cloud. Permite contornar o pool de conexões do cache distribuído

distributed_cache_connect_backoff_max_ms

Só tem efeito no ClickHouse Cloud. Número máximo de milissegundos de backoff para criar conexões com o distributed cache.

distributed_cache_connect_backoff_min_ms

Só tem efeito no ClickHouse Cloud. Tempo mínimo de backoff, em milissegundos, para criar conexões com o distributed cache.

distributed_cache_connect_max_tries

Tem efeito apenas no ClickHouse Cloud. Número de tentativas de conexão ao cache distribuído em caso de falha

distributed_cache_connect_timeout_ms

Só tem efeito no ClickHouse Cloud. Tempo limite de conexão ao estabelecer conexão com o servidor de cache distribuído.

distributed_cache_credentials_refresh_period_seconds

Só tem efeito no ClickHouse Cloud. Período de atualização das credenciais.

distributed_cache_data_packet_ack_window

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

distributed_cache_discard_connection_if_unread_data

Só tem efeito no ClickHouse Cloud. Descarta a conexão se houver dados não lidos.

distributed_cache_fetch_metrics_only_from_current_az

Só tem efeito no ClickHouse Cloud. Busca métricas apenas da zona de disponibilidade atual em system.distributed_cache_metrics, system.distributed_cache_events

distributed_cache_file_cache_name

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.

distributed_cache_log_mode

Só tem efeito no ClickHouse Cloud. Modo de gravação no system.distributed_cache_log

distributed_cache_max_unacked_inflight_packets

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

distributed_cache_min_bytes_for_seek

Só tem efeito no ClickHouse Cloud. Número mínimo de bytes para executar seek no distributed cache.

distributed_cache_pool_behaviour_on_limit

Só tem efeito no ClickHouse Cloud. Define o comportamento da conexão do distributed cache quando o limite do pool é atingido

distributed_cache_prefer_bigger_buffer_size

Só tem efeito no ClickHouse Cloud. É o mesmo que filesystem_cache_prefer_bigger_buffer_size, mas para o cache distribuído.

distributed_cache_read_only_from_current_az

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.

distributed_cache_read_request_max_tries

Só tem efeito no ClickHouse Cloud. Número de tentativas para fazer uma solicitação de leitura do distributed cache em caso de falha

distributed_cache_receive_response_wait_milliseconds

Só tem efeito no ClickHouse Cloud. Tempo de espera, em milissegundos, para receber os dados de uma solicitação do distributed cache

distributed_cache_receive_timeout_milliseconds

Só tem efeito no ClickHouse Cloud. Tempo de espera, em milissegundos, para receber qualquer resposta do distributed cache Valor padrão do Cloud: 20000.

distributed_cache_receive_timeout_ms

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.

distributed_cache_send_timeout_ms

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.

distributed_cache_tcp_keep_alive_timeout_ms

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.

distributed_cache_throw_on_error

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.

distributed_cache_use_clients_cache_for_read

Só tem efeito no ClickHouse Cloud. Usa o cache dos clientes para solicitações de leitura.

distributed_cache_use_clients_cache_for_write

Tem efeito apenas no ClickHouse Cloud. Use o cache dos clientes para requisições de gravação.

distributed_cache_wait_connection_from_pool_milliseconds

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

distributed_cache_write_request_max_tries

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

distributed_connections_pool_size

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.

distributed_ddl_entry_format_version

Versão de compatibilidade das consultas de DDL distribuído (ON CLUSTER) Valor padrão no Cloud: 6.

distributed_ddl_output_mode

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

distributed_ddl_task_timeout

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.

distributed_foreground_insert

Aliases: insert_distributed_sync Habilita ou desabilita a inserção síncrona de dados em uma tabela 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

distributed_group_by_no_merge

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
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
└───────┘
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
└───────┘

distributed_index_analysis

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

Habilita a análise distribuída de índice mesmo para engines que não sejam SharedMergeTree (engine exclusivo do Cloud).

distributed_index_analysis_only_on_coordinator

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.

distributed_insert_skip_read_only_replicas

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.

distributed_plan_default_reader_bucket_count

Número padrão de tarefas para leitura paralela em uma consulta distribuída. As tarefas são distribuídas entre as réplicas.

distributed_plan_default_shuffle_join_bucket_count

Número padrão de buckets do distributed shuffle-hash-join.

distributed_plan_execute_locally

Executa todas as tarefas de um plano de consulta distribuída localmente. Útil para testes e depuração.

distributed_plan_force_exchange_kind

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.

distributed_plan_force_shuffle_aggregation

Usa a estratégia de agregação Shuffle em vez de PartialAggregation + Merge no plano de consulta distribuído.

distributed_plan_max_rows_to_broadcast

Número máximo de linhas para usar broadcast join em vez de shuffle join no plano de consulta distribuída.

distributed_plan_optimize_exchanges

Remove exchanges desnecessários no plano de consulta distribuída. Desative esta opção para depuração.

distributed_plan_prefer_replicas_over_workers

Serializa o plano distribuído de consulta para execução nas réplicas.

distributed_product_mode

Altera o comportamento das subconsultas distribuídas. 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.
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.

distributed_push_down_limit

Habilita ou desabilita a aplicação de 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: Valores possíveis:
  • 0 — Desabilitado.
  • 1 — Habilitado.
Veja também:

distributed_replica_error_cap

  • 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:

distributed_replica_error_half_life

  • 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:

distributed_replica_max_ignored_errors

  • 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:

do_not_merge_across_partitions_select_final

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.

dynamic_disk_allow_from_env

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.

dynamic_disk_allow_from_zk

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.

dynamic_disk_allow_include

Permite usar include na configuração de disco dinâmico (ou seja, nos argumentos da função disk()). Desativada por padrão.

dynamic_throw_on_type_mismatch

Ao aplicar uma função a uma coluna 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.

empty_result_for_aggregation_by_constant_keys_on_empty_set

Retorna um resultado vazio ao fazer agregação por chaves constantes em um conjunto vazio.

empty_result_for_aggregation_by_empty_set

Retorna um resultado vazio ao fazer agregação sem chaves em conjunto vazio.

enable_adaptive_memory_spill_scheduler

Aciona o processador para descarregar dados para armazenamento externo de forma adaptativa. No momento, há suporte a grace join.

enable_add_distinct_to_in_subqueries

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.

enable_automatic_decision_for_merging_across_partitions_for_final

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.

enable_blob_storage_log

Registra informações sobre operações de blob storage na tabela system.blob_storage_log

enable_blob_storage_log_for_read_operations

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.

enable_early_constant_folding

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

enable_extended_results_for_datetime_functions

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çãoenable_extended_results_for_datetime_functions = 0enable_extended_results_for_datetime_functions = 1
toStartOfYearRetorna Date ou DateTimeRetorna Date/DateTime para entradas Date/DateTime
Retorna Date32/DateTime64 para entradas Date32/DateTime64
toStartOfISOYearRetorna Date ou DateTimeRetorna Date/DateTime para entradas Date/DateTime
Retorna Date32/DateTime64 para entradas Date32/DateTime64
toStartOfQuarterRetorna Date ou DateTimeRetorna Date/DateTime para entradas Date/DateTime
Retorna Date32/DateTime64 para entradas Date32/DateTime64
toStartOfMonthRetorna Date ou DateTimeRetorna Date/DateTime para entradas Date/DateTime
Retorna Date32/DateTime64 para entradas Date32/DateTime64
toStartOfWeekRetorna Date ou DateTimeRetorna Date/DateTime para entradas Date/DateTime
Retorna Date32/DateTime64 para entradas Date32/DateTime64
toLastDayOfWeekRetorna Date ou DateTimeRetorna Date/DateTime para entradas Date/DateTime
Retorna Date32/DateTime64 para entradas Date32/DateTime64
toLastDayOfMonthRetorna Date ou DateTimeRetorna Date/DateTime para entradas Date/DateTime
Retorna Date32/DateTime64 para entradas Date32/DateTime64
toMondayRetorna Date ou DateTimeRetorna Date/DateTime para entradas Date/DateTime
Retorna Date32/DateTime64 para entradas Date32/DateTime64
toStartOfDayRetorna DateTime
Observação: resultados incorretos para valores fora do intervalo de 1970 a 2149
Retorna DateTime para entradas Date/DateTime
Retorna DateTime64 para entradas Date32/DateTime64
toStartOfHourRetorna DateTime
Observação: resultados incorretos para valores fora do intervalo de 1970 a 2149
Retorna DateTime para entradas Date/DateTime
Retorna DateTime64 para entradas Date32/DateTime64
toStartOfFifteenMinutesRetorna DateTime
Observação: resultados incorretos para valores fora do intervalo de 1970 a 2149
Retorna DateTime para valores de entrada Date/DateTime
Retorna DateTime64 para valores de entrada Date32/DateTime64
toStartOfTenMinutesRetorna DateTime
Observação: resultados incorretos para valores fora do intervalo de 1970-2149
Retorna DateTime para entradas Date/DateTime
Retorna DateTime64 para entradas Date32/DateTime64
toStartOfFiveMinutesRetorna DateTime
Observação: resultados incorretos para valores fora do intervalo de 1970 a 2149
Retorna DateTime para valores de entrada Date/DateTime
Retorna DateTime64 para valores de entrada Date32/DateTime64
toStartOfMinuteRetorna DateTime
Observação: resultados incorretos para valores fora do intervalo de 1970 a 2149
Retorna DateTime para valores de entrada Date/DateTime
Retorna DateTime64 para valores de entrada Date32/DateTime64
timeSlotRetorna DateTime
Observação: resultados incorretos para valores fora do intervalo de 1970-2149
Retorna DateTime para entradas Date/DateTime
Retorna DateTime64 para entradas Date32/DateTime64

enable_filesystem_cache

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

enable_filesystem_cache_log

Permite registrar o log do cache do sistema de arquivos para cada consulta

enable_filesystem_cache_on_write_operations

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” para mais detalhes. Valor padrão no Cloud: 1.

enable_filesystem_read_prefetches_log

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

enable_full_text_index

Aliases: allow_experimental_full_text_index Quando definido como true, permite usar o índice de texto.

enable_global_with_statement

Propagar instruções WITH para consultas UNION e para todas as subconsultas

enable_hdfs_pread

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.

enable_http_compression

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. Possible values:
  • 0 — Desabilitado.
  • 1 — Habilitado.

enable_job_stack_trace

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.

enable_join_fixed_hash_table_conversion

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.

enable_join_runtime_filters

Filtra o lado esquerdo usando o conjunto de chaves de JOIN coletadas do lado direito em tempo de execução.

enable_join_transitive_predicates

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

enable_lazy_columns_replication

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.

enable_lightweight_delete

Aliases: allow_experimental_lightweight_delete Habilita mutações de exclusão leve com DELETE para tabelas MergeTree.

enable_lightweight_update

Aliases: allow_experimental_lightweight_update Permite o uso de atualizações leves.

enable_materialized_cte

Ativa expressões de tabela comuns materializadas; essa opção tem precedência sobre enable_global_with_statement

enable_memory_bound_merging_of_aggregation_results

Habilita a estratégia de mesclagem com limite de memória para agregação.

enable_multiple_prewhere_read_steps

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

enable_named_columns_in_function_tuple

Gerar tuplas nomeadas na função tuple() quando todos os nomes forem exclusivos e puderem ser tratados como identificadores sem aspas.

enable_optimize_predicate_expression

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.

enable_optimize_predicate_expression_to_final_subquery

Permite fazer push do predicado para a subconsulta FINAL.

enable_order_by_all

Ativa ou desativa a ordenação com a sintaxe ORDER BY ALL; consulte ORDER BY. Valores possíveis:
  • 0 — Desativa ORDER BY ALL.
  • 1 — Ativa ORDER BY ALL.
Exemplo Consulta:
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:
┌─C1─┬─C2─┬─ALL─┐
│ 20 │ 20 │  10 │
│ 30 │ 10 │  20 │
│ 10 │ 20 │  30 │
└────┴────┴─────┘

enable_parallel_blocks_marshalling

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.

enable_parsing_to_custom_serialization

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.

enable_positional_arguments

Habilita ou desabilita o suporte a argumentos posicionais nas instruções GROUP BY, LIMIT BY e 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:
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:
┌─one─┬─two─┬─three─┐
│  30 │  10 │   20  │
│  20 │  20 │   10  │
│  10 │  20 │   30  │
└─────┴─────┴───────┘

enable_positional_arguments_for_projections

Ativa ou desativa o suporte a argumentos posicionais em definições de PROJECTION. Veja também a configuração enable_positional_arguments.
Esta é uma configuração avançada, e você não deve alterá-la se estiver apenas começando a usar o ClickHouse.
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.

enable_producing_buckets_out_of_order_in_aggregation

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.

enable_reads_from_query_cache

Quando ativado, os resultados de consultas SELECT são obtidos do cache de consultas. Valores possíveis:
  • 0 - Desabilitado
  • 1 - Habilitado

enable_s3_requests_logging

Ativa um logging bem detalhado das requisições ao S3. Recomendado apenas para depuração.

enable_scalar_subquery_optimization

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.

enable_scopes_for_with_statement

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.

enable_shared_storage_snapshot_in_query

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:
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.
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.
Valores possíveis:
  • 0 - Desabilitado
  • 1 - Habilitado

enable_sharing_sets_for_mutations

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

enable_software_prefetch_in_aggregation

Habilita o uso de prefetch por software na agregaç

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

enable_time_time64_type

Aliases: allow_experimental_time_time64_type Permite a criação dos tipos de dados Time e Time64.

enable_unaligned_array_join

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.

enable_url_encoding

Permite habilitar/desabilitar a decodificação/codificação do caminho na URI em tabelas com o motor URL. Desabilitado por padrão.

enable_vertical_final

Se estiver habilitado, remove linhas duplicadas durante o FINAL marcando as linhas como excluídas e filtrando-as posteriormente, em vez de mesclá-las

enable_writes_to_query_cache

Quando ativado, os resultados de consultas SELECT são armazenados no cache de consultas. Valores possíveis:
  • 0 - Desabilitado
  • 1 - Habilitado

enforce_strict_identifier_format

Se habilitada, permite apenas identificadores que contenham caracteres alfanuméricos e underscores.

engine_file_allow_create_multiple_files

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.

engine_file_empty_if_not_exists

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.

engine_file_skip_empty_files

Ativa ou desativa a omissão de arquivos vazios em tabelas com o motor 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.

engine_file_truncate_on_insert

Ativa ou desativa o truncamento antes do insert em tabelas com o motor 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.

engine_url_skip_empty_files

Ativa ou desativa a opção de ignorar arquivos vazios em tabelas do mecanismo 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.

exact_rows_before_limit

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

except_default_mode

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.

exclude_materialize_skip_indexes_on_insert

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 ou por uma consulta MATERIALIZE INDEX explícita. Não tem efeito se materialize_skip_indexes_on_insert estiver definido como false. Exemplo:
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

execute_exists_as_scalar_subquery

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.

external_storage_connect_timeout_sec

Timeout de conexão em segundos. No momento, compatível apenas com MySQL

external_storage_max_read_bytes

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

external_storage_max_read_rows

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

external_storage_rw_timeout_sec

Tempo limite de leitura/gravação em segundos. No momento, compatível apenas com MySQL

external_table_functions_use_nulls

Define como as funções de tabela mysql, postgresql e 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.

external_table_strict_query

Se estiver definido como true, a transformação de expression em filter local será proibida para consultas a external tables.

extract_key_value_pairs_max_pairs_per_row

Aliases: extract_kvp_max_pairs_per_row 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.

extremes

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

fallback_to_stale_replicas_for_distributed_queries

Direciona a consulta para uma réplica desatualizada se dados atualizados não estiverem disponíveis. Veja Replicação. 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).

filesystem_cache_allow_background_download

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.

filesystem_cache_boundary_alignment

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.

filesystem_cache_enable_background_download_during_fetch

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

filesystem_cache_enable_background_download_for_metadata_files_in_packed_storage

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

filesystem_cache_max_download_size

Tamanho máximo do cache de sistema de arquivos remoto que pode ser baixado por uma única consulta

filesystem_cache_name

Nome do cache do sistema de arquivos a ser usado em motores de tabela sem estado ou lagos de dados

filesystem_cache_prefer_bigger_buffer_size

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.

filesystem_cache_reserve_space_wait_lock_timeout_milliseconds

Tempo de espera para adquirir o bloqueio do cache para reservar espaço no cache do sistema de arquivos

filesystem_cache_segments_batch_size

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

filesystem_cache_skip_download_if_exceeds_per_query_cache_write_limit

Aliases: skip_download_if_exceeds_query_cache Ignora o download do sistema de arquivos remoto caso exceda o tamanho do cache de consultas

filesystem_prefetch_max_memory_usage

Uso máximo de memória para prefetches. Valor padrão no Cloud: 10% da memória total.

filesystem_prefetch_step_bytes

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

filesystem_prefetch_step_marks

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

filesystem_prefetches_limit

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

final

Aplica automaticamente o modificador FINAL a todas as tabelas de uma consulta nas quais FINAL é aplicável, incluindo tabelas em JOIN, tabelas em subconsultas e tabelas distribuídas. Valores possíveis:
  • 0 - desabilitado
  • 1 - habilitado
Exemplo:
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───┐
1second
└─────┴────────┘
┌─key─┬─some──┐
1first
└─────┴───────┘

SELECT * FROM test SETTINGS final = 1;
┌─key─┬─some───┐
1second
└─────┴────────┘

SET final = 1;
SELECT * FROM test;
┌─key─┬─some───┐
1second
└─────┴────────┘

finalize_projection_parts_synchronously

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.

flatten_nested

Define o formato dos dados de colunas nested. 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:
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:
┌─statement───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ CREATE TABLE default.t_nest
(
    `n.a` Array(UInt32),
    `n.b` Array(UInt32)
)
ENGINE = MergeTree
ORDER BY tuple()
SETTINGS index_granularity = 8192 │
└─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
Consulta:
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:
┌─statement──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ CREATE TABLE default.t_nest
(
    `n` Nested(a UInt32, b UInt32)
)
ENGINE = MergeTree
ORDER BY tuple()
SETTINGS index_granularity = 8192 │
└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

force_aggregate_partitions_independently

Força o uso da otimização quando ela for aplicável, mesmo que as heurísticas decidam não utilizá-la

force_aggregation_in_order

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

force_data_skipping_indices

Desabilita a execução da consulta se os data skipping indices especificados não forem usados. Considere o exemplo a seguir:
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.

force_grouping_standard_compatibility

Faz a função GROUPING retornar 1 quando o argumento não é usado como chave de agregação

force_index_by_date

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.

force_optimize_projection

Ativa ou desativa o uso obrigatório de projeções em consultas SELECT, quando a otimização de projeções estiver ativada (consulte a configuração 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.

force_optimize_projection_name

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

force_optimize_skip_unused_shards

Habilita ou desabilita a execução da consulta se 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.

force_optimize_skip_unused_shards_nesting

Controla como force_optimize_skip_unused_shards (portanto, ainda requer 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.

force_primary_key

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.

force_remove_data_recursively_on_drop

Remove os dados recursivamente na consulta DROP. Evita o erro ‘Diretório não está vazio’, mas pode remover silenciosamente dados desanexados

formatdatetime_e_with_space_padding

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

formatdatetime_f_prints_scale_number_of_digits

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.

formatdatetime_f_prints_single_zero

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.

formatdatetime_format_without_leading_zeros

Os formatadores ‘%c’, ‘%l’ e ‘%k’ na função ‘formatDateTime’ exibem meses e horas sem zeros à esquerda.

formatdatetime_parsedatetime_m_is_month_name

O especificador ‘%M’ nas funções ‘formatDateTime’ e ‘parseDateTime’ exibe/interpreta o nome do mês em vez dos minutos.

fsync_metadata

Habilita ou desabilita o fsync 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.

function_date_trunc_return_type_behavior

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.

function_implementation

Escolha a implementação da função para um destino ou uma variante específica (experimental). Se estiver em branco, habilite todas elas.

function_json_value_return_type_allow_complex

Controla se é permitido retornar tipos complexos (como: struct, array, map) para a função json_value.
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.

function_json_value_return_type_allow_nullable

Controla se é permitido retornar NULL quando o valor não existir na função JSON_VALUE.
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.

function_locate_has_mysql_compatible_argument_order

Controla a ordem dos argumentos da função 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)

function_range_max_elements_in_block

Define o limite de segurança para o volume de dados gerado pela função 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

function_sleep_max_microseconds_per_block

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.

function_visible_width_behavior

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.

functions_h3_default_if_invalid

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.

geo_distance_returns_float64_on_float64_arguments

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.

geotoh3_argument_order

A função ‘geoToH3’ aceita (lon, lat) se estiver configurada como ‘lon_lat’ e (lat, lon) se estiver configurada como ‘lat_lon’.

glob_expansion_max_elements

Número máximo de endereços permitidos (para armazenamentos externos, funções de tabela etc.).

grace_hash_join_initial_buckets

Número inicial de buckets para grace hash join

grace_hash_join_max_buckets

Limite para o número de buckets do grace hash join

group_by_overflow_mode

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.

group_by_two_level_threshold

A partir de quantas chaves começa uma agregação em dois níveis. 0 - o limite não está definido.

group_by_two_level_threshold_bytes

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.

group_by_use_nulls

Altera a forma como a cláusula 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. As colunas das chaves de agregação correspondentes são preenchidas com NULL nas linhas em que elas não foram usadas.
Veja também:

h3togeo_lon_lat_result_order

A função ‘h3ToGeo’ retorna (lon, lat) se true; caso contrário, (lat, lon).

handshake_timeout_ms

Tempo limite, em milissegundos, para receber o pacote Hello das réplicas durante o handshake.

hdfs_create_new_file_on_insert

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.

hdfs_ignore_file_doesnt_exist

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.

hdfs_replication

O número real de réplicas pode ser especificado quando o arquivo HDFS é criado.

hdfs_skip_empty_files

Habilita ou desabilita ignorar arquivos vazios em tabelas com o mecanismo 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.

hdfs_throw_on_zero_files_match

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.

hdfs_truncate_on_insert

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.

hedged_connection_timeout_ms

Timeout de conexão para estabelecer uma conexão com a réplica em requisições Hedged

highlight_max_matches_per_row

Define o número máximo de correspondências de destaque por linha na função 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.
O tamanho da lista dinâmica de candidatos durante a pesquisa no índice de similaridade vetorial, também conhecido como ‘ef_search’.

hsts_max_age

Tempo de expiração do HSTS. 0 significa desabilitar o HSTS.

http_connection_timeout

Tempo limite de conexão HTTP (em segundos). Valores possíveis:
  • Qualquer número inteiro positivo.
  • 0 - Desabilitado (tempo limite infinito).

http_headers_progress_interval_ms

Não envie os cabeçalhos HTTP X-ClickHouse-Progress com frequência maior que a do intervalo especificado.

http_headers_read_timeout

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.

http_make_head_request

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.

http_max_field_name_size

Comprimento máximo do nome do campo no cabeçalho HTTP

http_max_field_value_size

Tamanho máximo do valor de um campo em um cabeçalho HTTP

http_max_fields

Número máximo de campos no cabeçalho HTTP

http_max_multipart_form_data_size

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

http_max_request_header_size

Tamanho total máximo de todos os cabeçalhos da requisição HTTP (nomes e valores combinados), em bytes.

http_max_request_param_data_size

Limite para o tamanho dos dados da requisição usados como parâmetro de consulta em requisições HTTP predefinidas.

http_max_tries

Número máximo de tentativas de leitura via HTTP.

http_max_uri_size

Define o tamanho máximo da URI de uma requisição HTTP. Valores possíveis:
  • Inteiro positivo.

http_native_compression_disable_checksumming_on_decompress

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. Valores possíveis:
  • 0 — Desativado.
  • 1 — Ativado.

http_receive_timeout

Tempo limite para recebimento via HTTP (em segundos). Valores possíveis:
  • Qualquer número inteiro positivo.
  • 0 - Desabilitado (tempo limite infinito).

http_response_buffer_size

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

http_response_headers

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"}'

http_retry_initial_backoff_ms

Milissegundos mínimos de backoff ao tentar ler novamente via http

http_retry_max_backoff_ms

Número máximo de milissegundos de backoff ao tentar novamente a leitura via http

http_send_timeout

Tempo limite de envio HTTP (em segundos). Valores possíveis:
  • Qualquer número inteiro positivo.
  • 0 - Desabilitado (tempo limite infinito).
Isso se aplica apenas ao perfil padrão. É necessário reiniciar o servidor para que as alterações entrem em vigor.

http_skip_not_found_url_for_globs

Ignora URLs de globs com erro HTTP_NOT_FOUND

http_wait_end_of_query

Habilita a bufferização da resposta HTTP no servidor.

http_write_exception_in_output_format

Escreve a exceção no formato de saída para gerar uma saída válida. Funciona com os formatos JSON e XML.

http_zlib_compression_level

Define o nível de compressão dos dados na resposta a uma requisição HTTP se enable_http_compression = 1. Valores possíveis: números de 1 a 9.

iceberg_compaction_data_cleanup

O período após o qual os dados serão excluídos.

iceberg_compaction_delay_bias

Atraso mínimo entre 2 operações de compactação em segundo plano.

iceberg_data_file_size_lower_threshold_compaction

Limite para arquivos de dados na compactação no Iceberg.

iceberg_data_file_size_upper_threshold_compaction

Limite superior para compactação de arquivos de dados no Iceberg.

iceberg_delete_data_on_drop

Se todos os arquivos do Iceberg devem ser excluídos ao executar drop.

iceberg_expire_default_max_ref_age_ms

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.

iceberg_expire_default_max_snapshot_age_ms

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.

iceberg_expire_default_min_snapshots_to_keep

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.

iceberg_insert_max_bytes_in_data_file

Máximo de bytes do arquivo de dados Parquet do Iceberg em uma operação de inserção.

iceberg_insert_max_partitions

Número máximo de partições permitido em uma única operação de inserção para o mecanismo de tabela Iceberg.

iceberg_insert_max_rows_in_data_file

Número máximo de linhas no arquivo de dados Parquet do Iceberg durante a operação de inserção.

iceberg_max_number_datafiles_to_compact

Limite de arquivos de dados para compactação no Iceberg.

iceberg_metadata_compression_method

Método de compressão do arquivo .metadata.json.

iceberg_metadata_log_level

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.

iceberg_metadata_staleness_ms

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.

iceberg_orphan_files_older_than_seconds

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

iceberg_snapshot_id

Consulta a tabela Iceberg usando o ID de snapshot especificado.

iceberg_timestamp_ms

Consulte a tabela Iceberg usando o snapshot vigente em um timestamp específico.

idle_connection_timeout

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

ignore_cold_parts_seconds

Só tem efeito no ClickHouse Cloud. Exclui novas partes de dados de consultas SELECT até que sejam pré-aquecidas (consulte cache_populated_by_fetch) ou atinjam essa quantidade de segundos. Somente para Replicated-/SharedMergeTree.

ignore_data_skipping_indices

Ignora os índices de data skipping especificados, caso sejam usados pela consulta. Considere o exemplo a seguir:
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:
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:
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.

ignore_drop_queries_probability

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

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

ignore_materialized_views_with_dropped_target_table

Ignorar MVs com tabela de destino removida ao enviar para views

ignore_on_cluster_for_replicated_access_entities_queries

Ignora a cláusula ON CLUSTER em queries de gerenciamento de entidades de acesso replicadas.

ignore_on_cluster_for_replicated_database

Sempre ignora a cláusula ON CLUSTER em consultas DDL com bancos de dados Replicated.

ignore_on_cluster_for_replicated_named_collections_queries

Ignorar a cláusula ON CLUSTER em consultas de gerenciamento de coleções nomeadas replicadas.

ignore_on_cluster_for_replicated_udf_queries

Ignora a cláusula ON CLUSTER em consultas de gerenciamento de UDF replicadas.

implicit_select

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.

implicit_table_at_top_level

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.

implicit_transaction

Se estiver habilitado e ainda não estiver em uma transação, envolve a consulta em uma transação completa (begin + commit ou rollback)

inject_random_order_for_select_without_order_by

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

insert_allow_materialized_columns

Se esta configuração estiver habilitada, permite colunas materializadas em INSERT.

insert_deduplicate

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). Em tabelas replicadas, por padrão, apenas os 100 blocos mais recentes de cada partição são desduplicados (consulte replicated_deduplication_window, replicated_deduplication_window_seconds). Para tabelas não replicadas, consulte non_replicated_deduplication_window.

insert_deduplication_token

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, replicated_deduplication_window_seconds). Para tabelas não replicadas, consulte non_replicated_deduplication_window.
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.
Exemplo:
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
└───┘

insert_keeper_fault_injection_probability

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]

insert_keeper_fault_injection_seed

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

insert_keeper_max_retries

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.

insert_keeper_retry_initial_backoff_ms

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

insert_keeper_retry_max_backoff_ms

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

insert_null_as_default

Habilita ou desabilita a inserção de valores padrão no lugar de NULL em colunas com tipo de dado não 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. 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.

insert_quorum

Esta configuração não se aplica ao SharedMergeTree; consulte consistência do SharedMergeTree para mais informações.
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. 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_parallel

Esta configuração não se aplica ao SharedMergeTree; veja SharedMergeTree consistency para mais informações.
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_timeout

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_shard_id

Se não for 0, especifica o shard da tabela 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:
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 correspondente.
Exemplo Consulta:
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:
┌─number─┐
│      0 │
│      0 │
│      1 │
│      1 │
│      2 │
│      2 │
│      3 │
│      3 │
│      4 │
│      4 │
└────────┘

interactive_delay

O intervalo, em microssegundos, para verificar se a execução da requisição foi cancelada e enviar o progresso.

intersect_default_mode

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.

jemalloc_collect_profile_samples_in_trace_log

Coleta amostras de alocação e desalocação do jemalloc no log de trace.

jemalloc_enable_profiler

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

jemalloc_profile_text_collapsed_use_count

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.

jemalloc_profile_text_output_format

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

jemalloc_profile_text_symbolize_with_inline

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

join_algorithm

Especifica qual algoritmo de 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 é 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), 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 é 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, 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, EmbeddedRocksDB e tabelas 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 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).

join_any_take_last_row

Altera o comportamento das operações JOIN com strictness ANY.
Essa configuração se aplica apenas a operações JOIN com tabelas que usam o motor Join.
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:

join_default_strictness

Define a strictness padrão para cláusulas JOIN. Valores possíveis:
  • ALL — Se a tabela da direita tiver várias linhas correspondentes, o ClickHouse cria um produto cartesiano 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.

join_on_disk_max_files_to_merge

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.

join_output_by_rowlist_perkey_rows_threshold

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.

join_overflow_mode

Define qual ação o ClickHouse executa quando qualquer um dos limites de join a seguir é atingido: 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

join_runtime_bloom_filter_bytes

Tamanho, em bytes, de um filtro de Bloom usado como filtro de runtime para JOIN (consulte a configuração enable_join_runtime_filters).

join_runtime_bloom_filter_hash_functions

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

join_runtime_bloom_filter_max_ratio_of_set_bits

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.

join_runtime_filter_blocks_to_skip_before_reenabling

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.

join_runtime_filter_exact_values_limit

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.

join_runtime_filter_pass_ratio_threshold_for_disabling

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.

join_to_sort_maximum_table_rows

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.

join_to_sort_minimum_perkey_rows

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

join_use_nulls

Define como o 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, e as células vazias são preenchidas com NULL.

joined_block_split_single_row

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.

joined_subquery_requires_alias

Exige que subconsultas usadas em joins e funções de tabela tenham aliases para a qualificação correta dos nomes.

kafka_disable_num_consumers_limit

Desabilita o limite de kafka_num_consumers, que depende do número de núcleos de CPU disponíveis.

kafka_max_wait_ms

O tempo de espera, em milissegundos, para ler mensagens do Kafka antes de tentar novamente. Valores possíveis:
  • Inteiro positivo.
  • 0 — Sem limite de tempo.
Veja também:

keeper_map_strict_mode

Impõe verificações adicionais durante operações no KeeperMap. Ex.: lança uma exceção ao inserir uma chave que já existe

keeper_max_retries

Máximo de tentativas para operações gerais do Keeper

keeper_retry_initial_backoff_ms

Tempo limite de backoff inicial para operações gerais do Keeper

keeper_retry_max_backoff_ms

Tempo máximo de backoff para operações gerais do Keeper

least_greatest_legacy_null_behavior

Se ativada, as funções ‘least’ e ‘greatest’ retornam NULL se um de seus argumentos for NULL.

legacy_column_name_of_tuple_literal

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.

lightweight_delete_mode

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.

lightweight_deletes_sync

O mesmo que mutations_sync, mas controla apenas a execução de exclusões leves. Valores possíveis:
ValorDescrição
0As mutações são executadas de forma assíncrona.
1A consulta aguarda a conclusão das exclusões leves no servidor atual.
2A consulta aguarda a conclusão das exclusões leves em todas as réplicas (se existirem).
3A 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 Valor padrão no Cloud: 1.

limit

Define o número máximo de linhas a retornar no resultado da consulta. Ele ajusta o valor definido pela cláusula 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.

load_balancing

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: Veja também:

Random (padrão)

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.

Hostname mais semelhante

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.

Distância de Levenshtein entre hostnames

load_balancing = hostname_levenshtein_distance
Assim como nearest_hostname, mas compara o hostname usando a distância de Levenshtein. Por exemplo:
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

Em ordem

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.

Primeiro ou aleatório

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.

Round Robin

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

load_balancing_first_offset

A qual réplica a consulta deve ser enviada de preferência quando a estratégia de balanceamento de carga FIRST_OR_RANDOM é usada.

load_marks_asynchronously

Carrega as marcas do MergeTree de forma assíncrona Valor padrão no Cloud: 1.

local_filesystem_read_method

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

local_filesystem_read_prefetch

Deve usar pré-carregamento ao ler dados do sistema de arquivos local.

lock_acquire_timeout

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.

log_comment

Especifica o valor do campo log_comment da tabela system.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. Valores possíveis:
  • Qualquer string com comprimento máximo de max_query_size. Se max&#95;query&#95;size for excedido, o servidor gera uma exceção.
Exemplo Consulta:
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:
┌─type────────┬─query─────┐
│ QueryStart  │ SELECT 1; │
│ QueryFinish │ SELECT 1; │
└─────────────┴───────────┘

log_formatted_queries

Permite registrar consultas formatadas na tabela de sistema system.query_log (preenche a coluna formatted_query na system.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.

log_processors_profiles

Grava na tabela system.processors_profile_log o tempo que o processador passou em execução/aguardando dados. Veja também:

log_profile_events

Registra estatísticas de desempenho de consultas em query_log, query_thread_log e query_views_log.

log_queries

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. Exemplo:
log_queries=1

log_queries_cut_to_length

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.

log_queries_min_query_duration_ms

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

log_queries_min_type

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:
log_queries_min_type='EXCEPTION_WHILE_PROCESSING'

log_queries_probability

Permite que um usuário grave nas tabelas de sistema query_log, query_thread_log e 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.

log_query_settings

Registra as configurações da consulta no query_log e no log de span do OpenTelemetry.

log_query_threads

Configura o registro em log das threads de consulta. As threads de consulta são registradas na tabela system.query_thread_log. Essa configuração só tem efeito quando 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. Valores possíveis:
  • 0 — Desabilitado.
  • 1 — Habilitado.
Exemplo
log_query_threads=1

log_query_views

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. Exemplo:
log_query_views=1

low_cardinality_allow_in_native_format

Permite ou restringe o uso do tipo de dado LowCardinality com o formato 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.

low_cardinality_max_dictionary_size

Define o tamanho máximo, em linhas, de um Dicionário global compartilhado para o tipo de dado 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.

low_cardinality_use_single_dictionary_for_part

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.

low_priority_query_wait_time_ms

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.

make_distributed_plan

Cria plano de consulta distribuída.

materialize_skip_indexes_on_insert

Define se os INSERTs criam e armazenam skip indexes. Se desabilitado, os skip indexes só serão criados e armazenados durante mesclagens ou por um MATERIALIZE INDEX explícito. Veja também exclude_materialize_skip_indexes_on_insert.

materialize_statistics_on_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

materialize_ttl_after_modify

Aplica o TTL a dados antigos após a consulta ALTER MODIFY TTL

materialized_views_ignore_errors

Permite ignorar erros em MATERIALIZED VIEW e enviar o bloco original para a tabela, independentemente das MVs

materialized_views_squash_parallel_inserts

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.

max_analyze_depth

Número máximo de análises executadas pelo interpretador.

max_ast_depth

A profundidade máxima de aninhamento da árvore sintática de uma consulta. Se for excedida, uma exceção será lançada.
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á.

max_ast_elements

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

max_autoincrement_series

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.

max_backup_bandwidth

A velocidade máxima de leitura, em bytes por segundo, para um backup específico no servidor. Zero significa sem limite.

max_block_size

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.

max_bytes_before_external_group_by

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) Valores possíveis:
  • Volume máximo de RAM (em bytes) que pode ser usado por uma única operação GROUP BY.
  • 0GROUP BY na memória externa desabilitado.
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.

max_bytes_before_external_join

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.

max_bytes_before_external_sort

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 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. O valor recomendado é metade da memória disponível do sistema
  • 0ORDER BY em memória externa desabilitado.

max_bytes_before_remerge_sort

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.

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

max_bytes_in_distinct

O número máximo de bytes do estado (em bytes descomprimidos) na memória, usado por uma tabela hash ao utilizar DISTINCT.

max_bytes_in_join

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 e ao motor de tabela 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 para escolher a ação. Valores possíveis:
  • Inteiro positivo.
  • 0 — O controle de memória está desabilitado.

max_bytes_in_set

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.

max_bytes_ratio_before_external_group_by

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.

max_bytes_ratio_before_external_join

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.

max_bytes_ratio_before_external_sort

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.

max_bytes_to_read

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.

max_bytes_to_read_leaf

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.
Essa configuração é instável com prefer_localhost_replica=1.

max_bytes_to_sort

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.

max_bytes_to_transfer

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.

max_columns_to_read

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.
Essa configuração é útil para evitar consultas excessivamente complexas.
O valor 0 significa sem limite.

max_compress_block_size

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

max_concurrent_queries_for_all_users

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
<max_concurrent_queries_for_all_users>99</max_concurrent_queries_for_all_users>
Veja também Valor padrão no Cloud: 1000.

max_concurrent_queries_for_user

O número máximo de consultas processadas simultaneamente por usuário. Valores possíveis:
  • Inteiro positivo.
  • 0 — Sem limite.
Exemplo
<max_concurrent_queries_for_user>5</max_concurrent_queries_for_user>

max_consume_snapshots

Número máximo de snapshots do Paimon a consumir por leitura incremental. 0 significa que não há limite.

max_distributed_connections

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.

max_distributed_depth

Limita a profundidade máxima de consultas recursivas em tabelas Distributed. Se esse valor for excedido, o servidor lança uma exceção. Valores possíveis:
  • Inteiro positivo.
  • 0 — Profundidade ilimitada.

max_download_buffer_size

O tamanho máximo do buffer para download em paralelo por thread (por exemplo, para URL engine).

max_download_threads

O número máximo de threads para fazer download de dados (por exemplo, para o URL engine).

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 é atingido.

max_execution_speed

O número máximo de linhas processadas por segundo. Verificado em cada bloco de dados quando timeout_before_checking_execution_speed expira. Se a velocidade de execução estiver alta, ela será reduzida.

max_execution_speed_bytes

O número máximo de bytes processados por segundo. É verificado em cada bloco de dados quando timeout_before_checking_execution_speed expira. Se a velocidade de execução for alta, ela será reduzida.

max_execution_time

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

max_execution_time_leaf

Semanticamente semelhante a 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:
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:
SELECT count()
FROM cluster(cluster, view(SELECT * FROM t)) SETTINGS max_execution_time_leaf = 10;

max_expanded_ast_elements

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.

max_fetch_partition_retries_count

Número de tentativas ao buscar uma partição em outro host.

max_final_threads

Define o número máximo de threads paralelas para a fase de leitura de dados da consulta SELECT com o modificador FINAL. Valores possíveis:
  • Inteiro positivo.
  • 0 ou 1 — Desativado. As consultas SELECT são executadas em uma única thread.

max_http_get_redirects

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.

max_hyperscan_regexp_length

Define o tamanho máximo de cada expressão regular nas funções hyperscan multi-match. Valores possíveis:
  • Inteiro positivo.
  • 0 - O tamanho não é limitado.
Exemplo Consulta:
SELECT multiMatchAny('abcd', ['ab','bcd','c','d']) SETTINGS max_hyperscan_regexp_length = 3;
Resultado:
┌─multiMatchAny('abcd', ['ab', 'bcd', 'c', 'd'])─┐
│                                              1 │
└────────────────────────────────────────────────┘
Consulta:
SELECT multiMatchAny('abcd', ['ab','bcd','c','d']) SETTINGS max_hyperscan_regexp_length = 2;
Resultado:
Exception: Regexp length too large.
Veja também

max_hyperscan_regexp_total_length

Define o comprimento total máximo de todas as expressões regulares em cada hyperscan multi-match function. Valores possíveis:
  • Inteiro positivo.
  • 0 — O comprimento não é limitado.
Exemplo Consulta:
SELECT multiMatchAny('abcd', ['a','b','c','d']) SETTINGS max_hyperscan_regexp_total_length = 5;
Resultado:
┌─multiMatchAny('abcd', ['a', 'b', 'c', 'd'])─┐
│                                           1 │
└─────────────────────────────────────────────┘
Consulta:
SELECT multiMatchAny('abcd', ['ab','bc','c','d']) SETTINGS max_hyperscan_regexp_total_length = 5;
Resultado:
Exception: Total regexp lengths too large.
Veja também

max_insert_block_size

Aliases: max_insert_block_size_rows 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.

max_insert_block_size_bytes

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.

max_insert_delayed_streams_for_parallel_write

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.

max_insert_threads

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. Valores mais altos resultarão em maior uso de memória.

max_insert_threads_min_free_memory_per_thread

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.

max_joined_block_size_bytes

Tamanho máximo, em bytes, do bloco para o resultado do JOIN (se o algoritmo de join oferecer suporte). 0 significa ilimitado.

max_joined_block_size_rows

Tamanho máximo do bloco para o resultado do JOIN (se o algoritmo de join oferecer suporte). 0 significa ilimitado.

max_limit_for_vector_search_queries

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.

max_local_read_bandwidth

A velocidade máxima das leituras locais em bytes por segundo.

max_local_write_bandwidth

A velocidade máxima das gravações locais em bytes por segundo.

max_memory_usage

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 e max_server_memory_usage.

max_memory_usage_for_user

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. 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
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:
SELECT getSetting('max_memory_usage_for_user');

max_network_bandwidth

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.

max_network_bandwidth_for_all_users

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.

max_network_bandwidth_for_user

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.

max_network_bytes

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.

max_number_of_partitions_for_independent_aggregation

Número máximo de partições na tabela para aplicar a otimizaçã

max_os_cpu_wait_time_ratio_to_throw

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.

max_parallel_replicas

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.

Processamento em paralelo usando a chave SAMPLE

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.

Processamento paralelo com parallel_replicas_custom_key

Essa configuração é útil para qualquer tabela replicada.

max_parser_backtracks

Número máximo de retrocessos do analisador sintático (quantas vezes ele tenta alternativas diferentes durante o processo de análise descendente recursiva).

max_parser_depth

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.

max_parsing_threads

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.

max_partition_size_to_drop

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.
Esta configuração de consulta substitui a configuração equivalente no servidor; consulte max_partition_size_to_drop

max_partitions_per_insert_block

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).”
Essa configuração é um limite de segurança, porque usar um grande número de partições é um equívoco comum.

max_partitions_to_read

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)
Você também pode especificar a configuração do MergeTree max_partitions_to_read nas configurações da tabela.

max_parts_to_move

Limita o número de partes que podem ser movidas em uma consulta. Zero significa sem limite.

max_projection_rows_to_use_projection_index

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.

max_query_size

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

max_rand_distribution_parameter

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.

max_rand_distribution_trials

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.

max_read_buffer_size

O tamanho máximo do buffer para leitura do filesystem.

max_read_buffer_size_local_fs

O tamanho máximo do buffer para leitura no sistema de arquivos local. Se definido como 0, max_read_buffer_size será usado.

max_read_buffer_size_remote_fs

O tamanho máximo do buffer para leitura em um filesystem remoto. Se for definido como 0, max_read_buffer_size será usado.

max_recursive_cte_evaluation_depth

Limite máximo para a profundidade de avaliação de CTEs recursivas

max_remote_read_network_bandwidth

A velocidade máxima de transferência de dados pela rede, em bytes por segundo, para leitura.

max_remote_write_network_bandwidth

A velocidade máxima de transferência de dados pela rede, em bytes por segundo, para gravação.

max_replica_delay_for_distributed_queries

Desativa réplicas com defasagem em consultas distribuídas. Veja Replicação. 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.

max_result_bytes

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.
Essa configuração é de baixo nível e deve ser usada com cautela

max_result_rows

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.

max_reverse_dictionary_lookup_cache_size_bytes

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.

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

max_rows_in_distinct

O número máximo de linhas distintas ao usar DISTINCT.

max_rows_in_join

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 e ao motor de tabela 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 para escolher a ação. Valores possíveis:
  • Inteiro positivo.
  • 0 — Número ilimitado de linhas.

max_rows_in_set

O número máximo de linhas de um conjunto de dados na cláusula IN criado a partir de uma subconsulta.

max_rows_in_set_to_optimize_join

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.

max_rows_to_group_by

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.

max_rows_to_read

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.

max_rows_to_read_leaf

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.
Essa configuração é instável com prefer_localhost_replica=1.

max_rows_to_sort

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.

max_rows_to_transfer

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.

max_sessions_for_user

Número máximo de sessões simultâneas por usuário autenticado no servidor ClickHouse. Exemplo:
<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)

max_size_to_preallocate_for_aggregation

Para quantos elementos é permitido pré-alocar espaço, no total, em todas as tabelas hash antes da agregaçã

max_size_to_preallocate_for_joins

Para quantos elementos é permitido pré-alocar, no total, espaço em todas as tabelas hash antes da jun

max_skip_unavailable_shards_num

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

max_skip_unavailable_shards_ratio

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

max_streams_for_files_processing_in_cluster_functions

Se não for zero, limita o número de threads que leem dados de arquivos em funções de tabela Cluster.

max_streams_for_merge_tree_reading

Se não for zero, limita o número de streams de leitura ao ler a tabela MergeTree.

max_streams_for_union_step

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.

max_streams_for_union_step_to_max_threads_ratio

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.

max_streams_multiplier_for_merge_tables

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.

max_streams_to_max_threads_ratio

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.

max_subquery_depth

Se uma consulta tiver mais subconsultas aninhadas do que o número especificado, uma exceção será gerada.
Isso permite fazer uma verificação preventiva para evitar que os usuários do seu cluster escrevam consultas excessivamente complexas.

max_table_size_to_drop

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.
Esta configuração de consulta substitui a configuração equivalente no servidor; consulte max_table_size_to_drop

max_temporary_columns

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.
Essa configuração é útil para evitar consultas excessivamente complexas.
O valor 0 significa ilimitado.

max_temporary_data_on_disk_size_for_query

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)

max_temporary_data_on_disk_size_for_user

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)

max_temporary_non_const_columns

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.
Colunas constantes são geradas com bastante frequência durante a execução de uma consulta, mas exigem praticamente zero recursos computacionais.

max_threads

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

max_threads_for_indexes

O número máximo de threads que processam os índices.

max_threads_min_free_memory_per_thread

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.

max_untracked_memory

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

max_wkb_geometry_elements

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

memory_overcommit_ratio_denominator

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.

memory_overcommit_ratio_denominator_for_user

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.

memory_profiler_sample_max_allocation_size

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.

memory_profiler_sample_min_allocation_size

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.

memory_profiler_sample_probability

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.

memory_profiler_step

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. Valores possíveis:
  • Um número inteiro positivo de bytes.
  • 0 para desativar o profiler de memória.

memory_tracker_fault_probability

Para testar a exception safety, lance uma exceção sempre que alocar memória, com a probabilidade especificada.

memory_usage_overcommit_max_wait_microseconds

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.

merge_table_max_tables_to_look_for_schema_inference

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.

merge_tree_coarse_index_granularity

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.

merge_tree_compact_parts_min_granules_to_multibuffer_read

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.

merge_tree_determine_task_size_by_prewhere_columns

Se deve usar apenas o tamanho das colunas prewhere para determinar o tamanho da tarefa de leitura.

merge_tree_max_bytes_to_use_cache

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 define o tamanho do cache de blocos não comprimidos. Valores possíveis:
  • Qualquer número inteiro positivo.

merge_tree_max_rows_to_use_cache

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 define o tamanho do cache de blocos descomprimidos. Valores possíveis:
  • Qualquer número inteiro positivo.

merge_tree_min_bytes_for_concurrent_read

Se o número de bytes a serem lidos de um arquivo de uma tabela com o motor 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.

merge_tree_min_bytes_for_concurrent_read_for_remote_filesystem

O número mínimo de bytes a serem lidos de um arquivo para que o motor 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.

merge_tree_min_bytes_for_seek

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.

merge_tree_min_bytes_per_task_for_remote_reading

Aliases: filesystem_prefetch_min_bytes_for_single_read_task Número mínimo de bytes lidos por tarefa.

merge_tree_min_read_task_size

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

merge_tree_min_rows_for_concurrent_read

Se o número de linhas a serem lidas de um arquivo de uma tabela 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.

merge_tree_min_rows_for_concurrent_read_for_remote_filesystem

O número mínimo de linhas que devem ser lidas de um arquivo antes que o motor 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.

merge_tree_min_rows_for_seek

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.

merge_tree_read_split_ranges_into_intersecting_and_non_intersecting_injection_probability

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.

merge_tree_storage_snapshot_sleep_ms

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

merge_tree_use_const_size_tasks_for_remote_reading

Define se tarefas de tamanho constante devem ser usadas para ler de uma tabela remota.

merge_tree_use_deserialization_prefixes_cache

Habilita o cache dos metadados das colunas a partir dos prefixos dos arquivos durante a leitura em discos remotos no MergeTree.

merge_tree_use_prefixes_deserialization_thread_pool

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.

merge_tree_use_v1_object_and_dynamic_serialization

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.

metrics_perf_events_enabled

Se ativado, alguns eventos de perf serão medidos durante a execução das consultas.

metrics_perf_events_list

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.

min_bytes_to_use_direct_io

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.

min_bytes_to_use_mmap_io

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

min_chunk_bytes_for_parallel_parsing

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

min_compress_block_size

Para tabelas 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.
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.

min_count_to_compile_aggregate_expression

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 estiver habilitada. Valores possíveis:
  • Inteiro positivo.
  • 0 — Expressões agregadas idênticas são sempre compiladas por JIT.

min_count_to_compile_expression

Número mínimo de execuções da mesma expressão antes de ela ser compilada.

min_count_to_compile_sort_description

O número de descrições de ordenação idênticas antes da compilação JIT

min_execution_speed

Velocidade mínima de execução em linhas por segundo. Verificada em cada bloco de dados quando timeout_before_checking_execution_speed expira. Se a velocidade de execução for inferior, uma exceção é lançada.

min_execution_speed_bytes

A quantidade mínima de bytes processados por segundo. Verificada em cada bloco de dados quando timeout_before_checking_execution_speed expira. Se a velocidade de execução for menor, uma exceção será lançada.

min_external_table_block_size_bytes

Combina os blocos enviados à tabela externa até atingirem o tamanho especificado em bytes, caso não sejam grandes o suficiente.

min_external_table_block_size_rows

Combina os blocos passados para a tabela externa até atingirem o tamanho especificado em linhas, se os blocos não forem grandes o suficiente.

min_filtered_ratio_for_lazy_final

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.

min_free_disk_bytes_to_perform_insert

Mínimo de bytes de espaço livre em disco para realizar um insert.

min_free_disk_ratio_to_perform_insert

Proporção mínima de espaço livre em disco necessária para realizar uma inserção.

min_free_disk_space_for_temporary_data

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.

min_hit_rate_to_use_consecutive_keys_optimization

Taxa mínima de acerto de um cache usada na otimização de chaves consecutivas na agregação para mantê-la habilitada

min_insert_block_size_bytes

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.

min_insert_block_size_bytes_for_materialized_views

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

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.

min_insert_block_size_rows_for_materialized_views

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

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.

min_joined_block_size_rows

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.

min_os_cpu_wait_time_ratio_to_throw

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.

min_outstreams_per_resize_after_split

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

O que é um nó Resize

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.

Por que o nó Resize precisa ser dividido

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.

Como o nó Resize é dividido

  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.

Divisão do nó Resize com entradas/saídas arbitrárias

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 NullSources e algumas saídas são conectadas a NullSinks. Isso permite que a divisão ocorra sem afetar o fluxo geral de dados.

Finalidade da configuração

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.

Desativando a configuração

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.

min_table_rows_to_use_projection_index

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.

mongodb_throw_on_unsupported_query

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

move_all_conditions_to_prewhere

Move todas as condições aplicáveis de WHERE para PREWHERE

move_primary_key_columns_to_end_of_prewhere

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.

multiple_joins_try_to_keep_original_names

Não adiciona aliases à lista de expressões de nível superior na reescrita de múltiplas junções

mutations_execute_nondeterministic_on_initiator

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.

mutations_execute_subqueries_on_initiator

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.

mutations_max_literal_size_to_replace

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

mutations_sync

Permite executar consultas ALTER TABLE ... UPDATE|DELETE|MATERIALIZE INDEX|MATERIALIZE PROJECTION|MATERIALIZE COLUMN|MATERIALIZE STATISTICS (mutações) de forma síncrona. Valores possíveis:
ValorDescrição
0As mutações são executadas de forma assíncrona.
1A consulta aguarda a conclusão de todas as mutações no servidor atual.
2A consulta aguarda a conclusão de todas as mutações em todas as réplicas (se existirem).
3A consulta aguarda apenas as réplicas ativas. Compatível apenas com SharedMergeTree. Para ReplicatedMergeTree, comporta-se da mesma forma que mutations_sync = 2.

mysql_datatypes_support_level

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.

mysql_map_fixed_string_to_text_in_show_columns

Quando ativado, o tipo de dado FixedString do ClickHouse será exibido como TEXT em SHOW COLUMNS. Só tem efeito quando a conexão é feita por meio do protocolo wire do MySQL.
  • 0 - Usar BLOB.
  • 1 - Usar TEXT.

mysql_map_string_to_text_in_show_columns

Quando ativado, o tipo de dados String do ClickHouse será exibido como TEXT em SHOW COLUMNS. Só tem efeito quando a conexão é feita pelo MySQL wire protocol.
  • 0 - Usar BLOB.
  • 1 - Usar TEXT.

mysql_max_rows_to_insert

O número máximo de linhas na inserção em lote do engine MySQL

network_compression_method

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

Ajusta o nível de compressão ZSTD. Usado apenas quando network_compression_method está definido como ZSTD. Valores possíveis:
  • Número inteiro positivo de 1 a 15.

normalize_function_names

Normalizar nomes de funções para seus respectivos nomes canônicos

number_of_mutations_to_delay

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

number_of_mutations_to_throw

Se a tabela contiver pelo menos essa quantidade de mutações não concluídas, gere a exceção ‘Too many mutations …’. 0 - desabilitado

odbc_bridge_connection_pool_size

Tamanho do pool de conexões para cada string de configuração de conexão no ODBC bridge.

odbc_bridge_use_connection_pooling

Usa pool de conexões na ODBC bridge. Se definido como false, uma nova conexão é criada a cada vez.

offset

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, de modo que esses dois valores sejam somados. Valores possíveis:
  • 0 — Nenhuma linha é ignorada.
  • Inteiro positivo.
Exemplo Tabela de entrada:
CREATE TABLE test (i UInt64) ENGINE = MergeTree() ORDER BY i;
INSERT INTO test SELECT number FROM numbers(500);
Consulta:
SET limit = 5;
SET offset = 7;
SELECT * FROM test LIMIT 10 OFFSET 100;
Resultado:
┌───i─┐
│ 107 │
│ 108 │
│ 109 │
└─────┘

opentelemetry_start_keeper_trace_probability

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)

opentelemetry_start_trace_probability

Define a probabilidade de o ClickHouse iniciar um rastreamento para consultas executadas (se nenhum contexto de rastreamento 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.

opentelemetry_trace_cpu_scheduling

Coleta spans do OpenTelemetry para o escalonamento preemptivo de CPU da carga de trabalho.

opentelemetry_trace_processors

Coleta spans de OpenTelemetry para processadores.

optimize_aggregation_in_order

Habilita a otimização de GROUP BY em consultas SELECT para a agregação de dados na ordem correspondente em tabelas 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

optimize_aggregators_of_group_by_keys

Elimina os agregadores min/max/any/anyLast das chaves de GROUP BY na seção SELECT

optimize_and_compare_chain

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

optimize_append_index

Use restrições para adicionar a condição do índice. O padrão é false. Valores possíveis:
  • true, false

optimize_arithmetic_operations_in_aggregate_functions

Move operações aritméticas para fora das funções de agregação

optimize_const_name_size

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.

optimize_count_from_files

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.

optimize_dictget_tuple_element

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.

optimize_distinct_in_order

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

optimize_distributed_group_by_sharding_key

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

optimize_dry_run_check_part

Quando ativado, OPTIMIZE ... DRY RUN valida a parte mesclada resultante com checkDataPart. Se a verificação falhar, uma exceção será gerada.

optimize_empty_string_comparisons

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.

optimize_extract_common_expressions

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

optimize_functions_to_subcolumns

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: Valores possíveis:
  • 0 — Otimização desativada.
  • 1 — Otimização ativada.

optimize_group_by_constant_keys

Otimiza o GROUP BY quando todas as chaves no bloco são constantes

optimize_group_by_function_keys

Elimina funções de outras chaves na cláusula GROUP BY

optimize_if_chain_to_multiif

Substitui sequências de if(cond1, then1, if(cond2, …)) por multiIf. Atualmente, isso não é vantajoso para tipos numéricos.

optimize_if_transform_strings_to_enum

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.

optimize_injective_functions_in_group_by

Substitui funções injetivas pelos respectivos argumentos na cláusula GROUP BY

optimize_injective_functions_inside_uniq

Remove funções injetivas de um argumento dentro de funções uniq*().

optimize_inverse_dictionary_lookup

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.

optimize_min_equality_disjunction_chain_length

O tamanho mínimo da expressão expr = x1 OR ... expr = xN para otimizaçã

optimize_min_inequality_conjunction_chain_length

O tamanho mínimo da expressão expr <> x1 AND ... expr <> xN para otimizaçã

optimize_move_to_prewhere

Ativa ou desativa a otimização automática de PREWHERE em consultas SELECT. Funciona apenas com tabelas *MergeTree. Valores possíveis:
  • 0 — A otimização automática de PREWHERE está desativada.
  • 1 — A otimização automática de PREWHERE está ativada.

optimize_move_to_prewhere_if_final

Habilita ou desabilita a otimização automática de PREWHERE em consultas SELECT com o modificador FINAL. Funciona apenas com tabelas *MergeTree. 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

optimize_multiif_to_if

Substitui ‘multiIf’ por ‘if’ quando há apenas uma condição.

optimize_normalize_count_variants

Reescreve funções de agregação semanticamente equivalentes a count() como count().

optimize_on_insert

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:
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:
┌─FirstTable─┐
│          0 │
│          1 │
└────────────┘

┌─SecondTable─┐
│           0 │
│           0 │
│           0 │
│           1 │
│           1 │
└─────────────┘
Observe que esta configuração afeta o comportamento da visão materializada.

optimize_or_like_chain

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.

optimize_qbit_distance_function_reads

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.

optimize_read_in_order

Habilita a otimização de ORDER BY em consultas SELECT para ler dados de tabelas 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

optimize_redundant_functions_in_order_by

Remove funções do ORDER BY se o argumento também estiver no ORDER BY

optimize_respect_aliases

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

optimize_rewrite_aggregate_function_with_if

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.
Suportado apenas com o analisador (enable_analyzer = 1).

optimize_rewrite_array_exists_to_has

Reescreve funções arrayExists() para has() quando forem logicamente equivalentes. Por exemplo, arrayExists(x -> x = 1, arr) pode ser reescrita como has(arr, 1)

optimize_rewrite_like_perfect_affix

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

optimize_rewrite_regexp_functions

Reescreve funções relacionadas a expressões regulares para formas mais simples e eficientes

optimize_rewrite_sum_if_to_count_if

Reescreve as funções sumIf() e sum(if()) como a função countIf() quando forem logicamente equivalentes

optimize_skip_merged_partitions

Habilita ou desabilita a otimização da consulta OPTIMIZE TABLE … FINAL 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.

optimize_skip_unused_shards

Habilita ou desabilita a omissão de shards não utilizados em consultas 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).
Pressupõe que os dados estejam distribuídos pela chave de sharding; caso contrário, a consulta produzirá um resultado incorreto.
Valores possíveis:
  • 0 — Desabilitado.
  • 1 — Habilitado.

optimize_skip_unused_shards_limit

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.

optimize_skip_unused_shards_nesting

Controla optimize_skip_unused_shards (portanto, ainda requer 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.

optimize_skip_unused_shards_rewrite_in

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.

optimize_sorting_by_input_stream_properties

Otimiza a ordenação com base nas propriedades de ordenação do fluxo de entrada

optimize_substitute_columns

Use restrições na substituição de colunas. O padrão é false. Valores possíveis:
  • true, false

optimize_syntax_fuse_functions

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, count e avg com o mesmo argumento para 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:
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:
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

optimize_throw_if_noop

Ativa ou desativa o lançamento de uma exceção se uma consulta 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.

optimize_time_filter_with_preimage

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')

optimize_trivial_approximate_count_query

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.

optimize_trivial_count_query

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_trivial_group_by_limit_query

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.

optimize_trivial_insert_select

Otimiza a consulta trivial ‘INSERT INTO table SELECT … FROM TABLES’

optimize_truncate_order_by_after_group_by_keys

Remover os elementos finais de ORDER BY quando todas as chaves de GROUP BY já estiverem cobertas pelo prefixo de ORDER BY.

optimize_uniq_to_count

Reescreve uniq e suas variantes (exceto uniqUpTo) como count se a subconsulta tiver DISTINCT ou cláusula GROUP BY.

optimize_use_implicit_projections

Escolhe automaticamente projeções implícitas para executar consultas SELECT

optimize_use_projection_filtering

Permite usar projeções para filtrar intervalos de partes, mesmo quando elas não são selecionadas para executar a consulta SELECT.

optimize_use_projections

Aliases: allow_experimental_projection_optimization Ativa ou desativa a otimização de projeções ao processar consultas SELECT. Possible values:
  • 0 — Otimização de projeções desativada.
  • 1 — Otimização de projeções ativada.

optimize_using_constraints

Use restrições para otimizar consultas. O padrão é false. Valores possíveis:
  • true, false

os_threads_nice_value_materialized_view

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.

os_threads_nice_value_query

Aliases: os_thread_priority 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.

page_cache_block_size

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.

page_cache_inject_eviction

O cache de páginas em userspace às vezes invalida páginas aleatoriamente. Destina-se a testes.

page_cache_lookahead_blocks

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.

page_cache_max_coalesced_bytes

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.

paimon_target_snapshot_id

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)

parallel_distributed_insert_select

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 ou não replicadas, essa consulta será processada localmente em cada shard. Valores possíveis:
  • 0 — Desabilitado.
  • 1SELECT será executado em cada shard a partir da tabela subjacente do motor Distributed.
  • 2SELECT 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

parallel_hash_join_threshold

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.

parallel_non_joined_rows_processing

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.

parallel_replica_offset

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.

parallel_replicas_allow_in_with_subquery

Se true, a subconsulta de IN será executada em cada réplica seguidora.

parallel_replicas_allow_materialized_views

Permite o uso de visões materializadas com réplicas paralelas

parallel_replicas_allow_view_over_mergetree

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.

parallel_replicas_connect_timeout_ms

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çã

parallel_replicas_count

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.

parallel_replicas_custom_key

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.

parallel_replicas_custom_key_range_lower

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

parallel_replicas_custom_key_range_upper

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, 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

parallel_replicas_filter_pushdown

Permite fazer pushdown de filtros para a parte da consulta que as réplicas paralelas escolhem executar

parallel_replicas_for_cluster_engines

Substitui os motores de função de tabela por suas alternativas -Cluster

parallel_replicas_for_non_replicated_merge_tree

Se true, o ClickHouse também usará o algoritmo de réplicas paralelas para tabelas MergeTree não replicadas.

parallel_replicas_index_analysis_only_on_coordinator

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

parallel_replicas_insert_select_local_pipeline

Usa o pipeline local durante INSERT SELECT distribuído com réplicas paralelas

parallel_replicas_local_plan

Criar plano local para a réplica local

parallel_replicas_mark_segment_size

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]

parallel_replicas_min_number_of_rows_per_replica

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’

parallel_replicas_mode

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.

parallel_replicas_only_with_analyzer

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

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

parallel_replicas_prefer_local_replica

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.

parallel_replicas_support_projection

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.

parallel_view_processing

Habilita o envio de dados para views anexadas de forma concorrente em vez de sequencial.

parallelize_output_from_storages

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

parsedatetime_e_requires_space_padding

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.

parsedatetime_parse_without_leading_zeros

Os formatadores ‘%c’, ‘%l’ e ‘%k’ na função ‘parseDateTime’ interpretam meses e horas sem zeros à esquerda.

partial_merge_join_left_table_buffer_bytes

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.

partial_merge_join_rows_in_right_blocks

Limita o tamanho dos blocos de dados do lado direito do JOIN no algoritmo partial merge join para consultas 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].

partial_result_on_first_cancel

Permite que a consulta retorne um resultado parcial após ser cancelada.

parts_to_delay_insert

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.

parts_to_throw_insert

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 …‘.

per_part_index_stats

Registra estatísticas do índice por parte

poll_interval

Bloqueia o loop de espera da consulta no servidor pelo número especificado de segundos.

polyglot_dialect

Dialeto SQL de origem do transpiler polyglot (por exemplo, ‘sqlite’, ‘mysql’, ‘postgresql’, ‘snowflake’, ‘duckdb’).

postgresql_connection_attempt_timeout

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.

postgresql_connection_pool_auto_close_connection

Feche a conexão antes de devolvê-la ao pool.

postgresql_connection_pool_retries

Número de tentativas de push/pop do pool de conexões para o engine PostgreSQL de tabela e de banco de dados.

postgresql_connection_pool_size

Tamanho do pool de conexões do mecanismo de tabela PostgreSQL e do mecanismo de banco de dados.

postgresql_connection_pool_wait_timeout

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.

postgresql_fault_injection_probability

Probabilidade aproximada de falha nas consultas internas do PostgreSQL (para replicação). O valor válido está no intervalo [0.0f, 1.0f]

predicate_statistics_sample_rate

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.

prefer_column_name_to_alias

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. 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:
SET prefer_column_name_to_alias = 0;
SELECT avg(number) AS number, max(number) FROM numbers(10);
Resultado:
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:
SET prefer_column_name_to_alias = 1;
SELECT avg(number) AS number, max(number) FROM numbers(10);
Resultado:
┌─number─┬─max(number)─┐
│    4.5 │           9 │
└────────┴─────────────┘

prefer_external_sort_block_bytes

Prefere o número máximo de bytes por bloco para ordenação externa, reduzindo o uso de memória durante a mesclagem.

prefer_global_in_and_join

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 GLOBALGLOBAL 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:

prefer_localhost_replica

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.
Desative essa configuração se você usar max_parallel_replicas sem parallel_replicas_custom_key. Se 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.

prefer_warmed_unmerged_parts_seconds

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

preferred_block_size_bytes

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.

preferred_max_column_in_block_size_bytes

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.

preferred_optimize_projection_name

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

prefetch_buffer_size

O tamanho máximo do buffer de prefetch para leitura no sistema de arquivos. Permite exibir nomes de tipos com aninhamento profundo de forma legível, com recuos, na consulta DESCRIBE e na função toTypeName(). Exemplo:
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)
)

priority

Prioridade da consulta. 1 — a mais alta; quanto maior o valor, menor a prioridade; 0 — não usar prioridades.

promql_database

Especifica o nome do banco de dados usado pelo dialeto ‘promql’. Uma string vazia significa o banco de dados atual.

promql_evaluation_time

Aliases: evaluation_time Define o horário de avaliação a ser usado com o dialeto promql. ‘auto’ significa o horário atual.

promql_table

Especifica o nome de uma tabela TimeSeries usada pelo dialeto ‘promql’.

push_external_roles_in_interserver_queries

Habilita o envio dos papéis do usuário do nó de origem para outros nós ao executar uma consulta.

query_cache_compress_entries

Comprime as entradas no cache de consultas. 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

query_cache_for_subqueries

Se ativado, os resultados das subconsultas podem ser gravados no cache de consultas e lidos dele. Isso permite propagar use_query_cache para todas as subconsultas. Valores possíveis:
  • 0 - Desativado
  • 1 - Ativado

query_cache_max_entries

O número máximo de resultados de consultas que o usuário atual pode armazenar no cache de consultas. 0 significa ilimitado. Valores possíveis:
  • Número inteiro >= 0.

query_cache_max_size_in_bytes

A quantidade máxima de memória (em bytes) que o usuário atual pode alocar no cache de consultas. 0 significa sem limite. Valores possíveis:
  • Inteiro positivo >= 0.

query_cache_min_query_duration

Duração mínima, em milissegundos, que uma consulta precisa ser executada para que seu resultado seja armazenado no cache de consultas. Valores possíveis:
  • Inteiro >= 0.

query_cache_min_query_runs

Número mínimo de vezes que uma consulta SELECT precisa ser executada antes que seu resultado seja armazenado no cache de consultas. Valores possíveis:
  • Número inteiro positivo >= 0.

query_cache_nondeterministic_function_handling

Controla como o cache de consultas 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.

query_cache_share_between_users

Se ativada, o resultado de consultas SELECT armazenadas no cache de consultas 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

query_cache_squash_partial_results

Agrupa blocos de resultados parciais em blocos do tamanho de max_block_size. Reduz o desempenho das inserções no cache de consultas, mas melhora a compressibilidade das entradas de cache (consulte query_cache_compress-entries). Valores possíveis:
  • 0 - Desabilitado
  • 1 - Habilitado

query_cache_system_table_handling

Controla como o cache de consultas 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.

query_cache_tag

Uma string que funciona como rótulo para entradas do cache de consultas. As mesmas consultas com rótulos diferentes são consideradas diferentes pelo cache de consultas. Valores possíveis:
  • Qualquer string

query_cache_ttl

Após esse período, em segundos, as entradas no cache de consultas ficam desatualizadas. Valores possíveis:
  • Inteiro positivo >= 0.

query_metric_log_interval

O intervalo, em milissegundos, em que o 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 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

query_plan_aggregation_in_order

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 estiver definida como 1.
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.
Valores possíveis:
  • 0 - Desabilita
  • 1 - Habilita

query_plan_convert_any_join_to_semi_or_anti_join

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

query_plan_convert_join_to_in

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

query_plan_convert_outer_join_to_inner_join

Permite converter OUTER JOIN em INNER JOIN se o filtro após o JOIN sempre eliminar valores padrão

query_plan_direct_read_from_text_index

Permite executar a filtragem de busca de texto completo usando apenas o índice de texto invertido no plano de consulta.

query_plan_display_internal_aliases

Exibe aliases internos (como __table1) no EXPLAIN PLAN em vez dos especificados na consulta original.

query_plan_enable_multithreading_after_window_functions

Habilita o multithreading após a avaliação das funções de janela para permitir o processamento de streams em paralelo

query_plan_enable_optimizations

Ativa ou desativa a otimização de consultas no nível do plano de consulta.
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.
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)

query_plan_execute_functions_after_sorting

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 for 1.
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.
Valores possíveis:
  • 0 - Desabilita
  • 1 - Habilita

query_plan_filter_push_down

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 estiver definida como 1.
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.
Valores possíveis:
  • 0 - Desativar
  • 1 - Ativar

query_plan_join_shard_by_pk_ranges

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.

query_plan_join_swap_table

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

query_plan_lift_up_array_join

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 for 1.
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.
Valores possíveis:
  • 0 - Desabilita
  • 1 - Habilita

query_plan_lift_up_union

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 estiver definida como 1.
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.
Valores possíveis:
  • 0 - Desabilita
  • 1 - Habilita

query_plan_max_limit_for_lazy_materialization

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.

query_plan_max_limit_for_top_k_optimization

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.

query_plan_max_optimizations_to_apply

Limita o número total de otimizações aplicadas ao plano da consulta; consulte a configuração 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.
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.

query_plan_max_step_description_length

Comprimento máximo da descrição do passo no EXPLAIN PLAN.

query_plan_merge_expressions

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 for 1.
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.
Valores possíveis:
  • 0 - Desabilita
  • 1 - Habilita

query_plan_merge_filter_into_join_condition

Permite mesclar o filtro à condição de JOIN e converter CROSS JOIN em INNER.

query_plan_merge_filters

Permite mesclar filtros no plano de consulta.

query_plan_optimize_join_order_algorithm

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

query_plan_optimize_join_order_limit

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.

query_plan_optimize_join_order_randomize

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.

query_plan_optimize_lazy_final

Otimize a leitura com FINAL do ReplacingMergeTree criando um conjunto de chaves primárias e usando-o na análise de índices.

query_plan_optimize_lazy_materialization

Usa o plano de consulta na otimização de materialização tardia.

query_plan_optimize_prewhere

Permite aplicar push down do filtro à expressão PREWHERE em armazenamentos compatíveis

query_plan_push_down_limit

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 estiver definida como 1.
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.
Valores possíveis:
  • 0 - Desativar
  • 1 - Ativar

query_plan_read_in_order

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 estiver definida como 1.
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.
Valores possíveis:
  • 0 - Desabilita
  • 1 - Habilita

query_plan_read_in_order_through_join

Mantém a leitura em ordem da tabela à esquerda em operações JOIN, o que pode ser aproveitado por etapas subsequentes.

query_plan_remove_redundant_distinct

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 for 1.
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.
Valores possíveis:
  • 0 - Desativar
  • 1 - Ativar

query_plan_remove_redundant_sorting

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 estiver definida como 1.
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.
Valores possíveis:
  • 0 - Desabilita
  • 1 - Habilita

query_plan_remove_unused_columns

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 estiver definida como 1.
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.
Valores possíveis:
  • 0 - Desabilita
  • 1 - Habilita

query_plan_reuse_storage_ordering_for_window_functions

Aliases: optimize_read_in_window_order 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 estiver definida como 1.
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.
Valores possíveis:
  • 0 - Desabilita
  • 1 - Habilita

query_plan_split_filter

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.
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 estiver definida como 1. Valores possíveis:
  • 0 - Desabilita
  • 1 - Habilita

query_plan_text_index_add_hint

Permite adicionar uma dica (predicado adicional) ao filtro gerado a partir do índice de texto invertido no plano de consulta.

query_plan_top_k_through_join

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 for 1. Valores possíveis:
  • 0 - Desativar
  • 1 - Ativar
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 for 1.
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.
Valores possíveis:
  • 0 - Desabilitar
  • 1 - Habilitar

query_profiler_cpu_time_period_ns

Define o período de um temporizador do clock da CPU do profiler de consulta. 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:

query_profiler_real_time_period_ns

Define o período de um temporizador de tempo real do profiler de consultas. 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: Valor padrão no Cloud: 3000000000.

queue_max_wait_ms

O tempo de espera na fila de requisições, caso o número de requisições simultâneas exceda o máximo.

rabbitmq_max_wait_ms

O tempo de espera para ler do RabbitMQ antes de tentar novamente.

read_backoff_max_throughput

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.

read_backoff_min_concurrency

Configuração para tentar manter o número mínimo de threads em caso de leituras lentas.

read_backoff_min_events

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.

read_backoff_min_interval_between_events_ms

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.

read_backoff_min_latency_ms

Configuração para reduzir o número de threads em caso de leituras lentas. Considere apenas as leituras que levaram pelo menos esse tempo.

read_from_distributed_cache_if_exists_otherwise_bypass_cache

Só tem efeito no ClickHouse Cloud. É o mesmo que read_from_filesystem_cache_if_exists_otherwise_bypass_cache, mas para o distributed cache.

read_from_filesystem_cache_if_exists_otherwise_bypass_cache

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.

read_from_page_cache_if_exists_otherwise_bypass_cache

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.

read_in_order_two_level_merge_threshold

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.

read_in_order_use_buffering

Usar bufferização antes da mesclagem ao ler seguindo a ordem da chave primária. Isso aumenta o paralelismo da execuçã

read_in_order_use_virtual_row

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.

read_in_order_use_virtual_row_per_block

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.

read_overflow_mode

O que fazer quando o limite é excedido.

read_overflow_mode_leaf

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.

read_priority

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.

read_through_distributed_cache

Tem efeito apenas no ClickHouse Cloud. Permite a leitura do cache distribuído

readonly

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

receive_data_timeout_ms

Tempo limite da conexão para receber o primeiro pacote de dados ou um pacote com progresso positivo da réplica

receive_timeout

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.

recursive_cte_max_steps_in_type_inference

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.

regexp_dict_allow_hyperscan

Permite que o dicionário regexp_tree use a biblioteca Hyperscan.

regexp_dict_flag_case_insensitive

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

regexp_dict_flag_dotall

Permite que ’.’ corresponda a caracteres de quebra de linha em um dicionário regexp_tree.

regexp_max_matches_per_row

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. Possíveis valores:
  • Inteiro positivo.

reject_expensive_hyperscan_regexps

Rejeita padrões cuja avaliação com hyperscan provavelmente será custosa (devido à explosão de estados do NFA)

remerge_sort_lowered_memory_bytes_ratio

Se o uso de memória após o remerge não for reduzido nessa proporção, o remerge será desativado.

remote_filesystem_read_method

Método de leitura de dados do filesystem remoto; um dos seguintes: read, threadpool.

remote_filesystem_read_prefetch

Deve usar pré-busca ao ler dados do sistema de arquivos remoto.

remote_fs_read_backoff_max_tries

Número máximo de tentativas de leitura com backoff

remote_fs_read_max_backoff_ms

Tempo máximo de espera ao tentar ler dados de um disco remoto

remote_read_min_bytes_for_seek

Número mínimo de bytes necessário para que a leitura remota (url, s3) faça seek, em vez de ler com ignore.

rename_files_after_processing

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

Marcadores substitutos

  • %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 (”%”).

Exemplo

  • 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

replace_running_query

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.

replace_running_query_max_wait_ms

O tempo de espera para que a consulta com o mesmo query_id em execução termine, quando a configuração 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.

replication_wait_for_inactive_replica_timeout

Especifica por quanto tempo (em segundos) deve-se aguardar que réplicas inativas executem as consultas ALTER, OPTIMIZE ou TRUNCATE. Valores possíveis:
  • 0 — Não aguardar.
  • Inteiro negativo — Aguarda por tempo ilimitado.
  • Inteiro positivo — Número de segundos de espera.

restore_replace_external_dictionary_source_to_null

Substitui fontes externas de dicionário por Null durante a restauração. Útil para testes

restore_replace_external_engines_to_null

Apenas para testes. Substitui todos os motores externos por Null para evitar o início de conexões externas.

restore_replace_external_table_functions_to_null

Para fins de teste. Substitui todas as funções de tabela externas por Null para evitar iniciar conexões externas.

restore_replicated_merge_tree_to_shared_merge_tree

Substitui o mecanismo de tabela de ReplicatedMergeTree -> SharedMergeTree durante o RESTORE. Valor padrão no Cloud: 1.

result_overflow_mode

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, será um múltiplo de max_block_size e dependerá de max_threads. Exemplo
Query
SET max_threads = 3, max_block_size = 3333;
SET max_result_rows = 3334, result_overflow_mode = 'break';

SELECT *
FROM numbers_mt(100000)
FORMAT Null;
Result
6666 rows in set. ...

rewrite_count_distinct_if_with_count_distinct_implementation

Permite reescrever countDistcintIf usando a configuração count_distinct_implementation. Valores possíveis:
  • true — Permitir.
  • false — Não permitir.

rewrite_in_to_join

Reescreve expressões como ‘x IN subconsulta’ para JOIN. Isso pode ser útil para otimizar toda a consulta com reordenação de JOINs.

rows_before_aggregation

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çã

s3_allow_multipart_copy

Permite cópia em múltiplas partes no S3.

s3_allow_parallel_part_upload

Usa várias threads para upload multipart no S3. Isso pode resultar em uso de memória ligeiramente maior

s3_check_objects_after_upload

Verifique cada objeto enviado ao S3 com uma requisição HEAD para garantir que o upload foi bem-sucedido

s3_connect_timeout_ms

Tempo limite da conexão com o host dos disks S3.

s3_create_new_file_on_insert

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.

s3_disable_checksum

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.

s3_ignore_file_doesnt_exist

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.

s3_list_object_keys_size

Número máximo de arquivos que podem ser retornados em um lote pela solicitação ListObject

s3_max_connections

O número máximo de conexões por servidor.

s3_max_get_burst

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

s3_max_get_rps

Limite da taxa de solicitações GET para o S3 por segundo antes do throttling. Zero significa ilimitado.

s3_max_inflight_parts_for_one_file

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

s3_max_part_number

Número máximo de partes no upload em partes para o S3.

s3_max_put_burst

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

s3_max_put_rps

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

s3_max_single_operation_copy_size

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.

s3_max_single_part_upload_size

O tamanho máximo do objeto para upload em uma única parte no S3.

s3_max_single_read_retries

O número máximo de tentativas durante uma única leitura do S3.

s3_max_unexpected_write_error_retries

O número máximo de tentativas em caso de erros inesperados durante a gravação no S3.

s3_max_upload_part_size

O tamanho máximo da parte a ser carregada durante um upload multiparte para o S3.

s3_min_upload_part_size

O tamanho mínimo da parte a ser enviada durante um upload multipart para o S3.

s3_path_filter_limit

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.

s3_request_timeout_ms

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.

s3_skip_empty_files

Ativa ou desativa o ignoramento de arquivos vazios em tabelas do motor 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.

s3_slow_all_threads_after_network_error

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.

s3_strict_upload_part_size

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

s3_throw_on_zero_files_match

Gerar um erro quando a solicitação ListObjects não encontrar nenhum arquivo

s3_truncate_on_insert

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.

s3_upload_part_size_multiply_factor

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.

s3_upload_part_size_multiply_parts_count_threshold

Sempre que essa quantidade de partes for enviada ao S3, s3_min_upload_part_size será multiplicado por s3_upload_part_size_multiply_factor.

s3_uri_style

Força o estilo de endpoint do S3. Valores possíveis: auto, virtual_hosted, path.

s3_use_adaptive_timeouts

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.

s3_validate_request_settings

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.

s3queue_default_zookeeper_path

Prefixo padrão do caminho no ZooKeeper para o mecanismo S3Queue

s3queue_enable_logging_to_s3queue_log

Habilita a gravação em system.s3queue_log. O valor pode ser substituído para cada tabela por meio das configurações da tabela

s3queue_keeper_fault_injection_probability

Probabilidade de injeção de falha no Keeper para o S3Queue.

s3queue_migrate_old_metadata_to_buckets

Migra a estrutura antiga de metadados da tabela S3Queue para uma nova

schema_inference_cache_require_modification_time_for_url

Usa o schema do cache para URL com validação do horário da última modificação (para URLs com cabeçalho Last-Modified)

schema_inference_use_cache_for_azure

Usa cache na inferência de esquema ao usar a função de tabela do Azure

schema_inference_use_cache_for_file

Use o cache na inferência de esquema ao usar a função de tabela file

schema_inference_use_cache_for_hdfs

Usa cache na inferência de esquema ao usar a função de tabela hdfs

schema_inference_use_cache_for_s3

Usa cache na inferência de esquema ao usar a função de tabela S3

schema_inference_use_cache_for_url

Use o cache na inferência de esquema ao usar a função de tabela url

secondary_indices_enable_bulk_filtering

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.

select_sequential_consistency

O comportamento dessa configuração difere entre SharedMergeTree e ReplicatedMergeTree; consulte SharedMergeTree consistency para mais informações sobre o comportamento de select_sequential_consistency no SharedMergeTree.
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:

send_logs_level

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’

send_logs_source_regexp

Envia logs de texto do servidor com a regexp especificada para corresponder ao nome da origem do log. Vazio significa todas as origens.

send_profile_events

Habilita ou desabilita o envio de pacotes de ProfileEvents 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.

send_progress_in_http_headers

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. Valores possíveis:
  • 0 — Desativado.
  • 1 — Ativado.

send_table_structure_on_insert_with_inline_data

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.

send_timeout

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.

serialize_query_plan

Serializa o plano da consulta para processamento distribuído

serialize_string_in_memory_with_zero_byte

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.

session_timezone

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. 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:
SELECT timeZone(), serverTimeZone() FORMAT CSV

"Europe/Berlin","Europe/Berlin"
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:
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
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.
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

set_overflow_mode

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.

shared_merge_tree_sequential_consistency_initial_parts_update_backoff_ms

Backoff inicial, em milissegundos, para atualização das partes ao usar select_sequential_consistency com SharedMergeTree. Disponível apenas no ClickHouse Cloud.

shared_merge_tree_sequential_consistency_max_parts_update_backoff_ms

Backoff máximo, em milissegundos, para a atualização de partes ao usar select_sequential_consistency com SharedMergeTree. Disponível apenas no ClickHouse Cloud.

shared_merge_tree_sequential_consistency_parts_update_max_retries

Número máximo de tentativas para atualizar partes ao usar select_sequential_consistency com SharedMergeTree. Disponível apenas no ClickHouse Cloud.

shared_merge_tree_sync_parts_on_partition_operations

Sincroniza automaticamente o conjunto de partes de dados após operações de partição MOVE|REPLACE|ATTACH em tabelas SMT. Apenas no Cloud

short_circuit_function_evaluation

Permite calcular as funções if, multiIf, and e or de acordo com a avaliação de curto-circuito. 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.

short_circuit_function_evaluation_for_nulls

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.

short_circuit_function_evaluation_for_nulls_threshold

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.

show_data_lake_catalogs_in_system_tables

Permite exibir catálogos do lago de dados nas tabelas do sistema.

show_processlist_include_internal

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, SELECTs auxiliares executados em consultas SHOW ..., consultas auxiliares CREATE DATABASE ... executadas internamente para lidar com tabelas corrompidas, entre outros.

show_table_uuid_in_table_create_query_if_not_nil

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.

single_join_prefer_left_table

Para um único JOIN, em caso de ambiguidade de identificadores, prefira a tabela à esquerda

skip_redundant_aliases_in_udf

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:
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:
SELECT ((4 + 2) + 1 AS y, y + 2)
Consulta:
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:
SELECT ((4 + 2) + 1, ((4 + 2) + 1) + 2)

skip_unavailable_shards

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

sleep_after_receiving_query_ms

Tempo de espera após o recebimento da consulta no TCPHandler

sleep_in_send_data_ms

Tempo de espera durante o envio de dados no TCPHandler

sleep_in_send_tables_status_ms

Tempo de espera para enviar a resposta de status das tabelas no TCPHandler

sort_overflow_mode

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.

split_intersecting_parts_ranges_into_layers_final

Divide intervalos de partes sobrepostos em camadas durante a otimização FINAL

split_parts_ranges_into_intersecting_and_non_intersecting_final

Dividir intervalos de partes em sobrepostos e não sobrepostos durante a otimização FINAL

splitby_max_substrings_includes_remaining_string

Controla se a função splitBy*(), 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() do Spark e do método ‘string.split()’ do Python.

stop_refreshable_materialized_views_on_startup

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.

storage_file_read_method

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

storage_system_stack_trace_pipe_read_timeout_ms

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.

stream_flush_interval_ms

Aplica-se a tabelas com streaming em caso de timeout ou quando uma thread gera 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.

stream_like_engine_allow_direct_select

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.

stream_like_engine_insert_queue

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.

stream_poll_timeout_ms

Tempo limite para fazer polling de dados de/para armazenamentos de streaming.

system_events_show_zero_values

Permite selecionar eventos com valor zero de system.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
SELECT * FROM system.events WHERE event='QueryMemoryLimitExceeded';
Resultado
Ok.
Consulta
SET system_events_show_zero_values = 1;
SELECT * FROM system.events WHERE event='QueryMemoryLimitExceeded';
Resultado
┌─event────────────────────┬─value─┬─description───────────────────────────────────────────┐
│ QueryMemoryLimitExceeded │     0 │ Number of times when memory limit exceeded for query. │
└──────────────────────────┴───────┴───────────────────────────────────────────────────────┘

system_metric_log_show_zero_values_in_histograms

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.

table_engine_read_through_distributed_cache

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)

table_function_remote_max_addresses

Define o número máximo de endereços gerados com base em padrões para a função remote. Valores possíveis:
  • Inteiro positivo.

tcp_keep_alive_timeout

Tempo, em segundos, que a conexão deve permanecer ociosa antes que o TCP comece a enviar sondas de keepalive

temporary_data_in_cache_reserve_space_wait_lock_timeout_milliseconds

Tempo de espera para adquirir o bloqueio do cache para reservar espaço para dados temporários no cache do sistema de arquivos

temporary_files_buffer_size

Tamanho do buffer dos gravadores de arquivos temporários. Um buffer maior significa menos chamadas de sistema, mas maior consumo de memória.

temporary_files_codec

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 é aplicada.
  • NONE — nenhuma compressão é aplicada.

text_index_hint_max_selectivity

Seletividade máxima do filtro para usar a dica gerada a partir do índice de texto invertido.

text_index_like_max_postings_to_read

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.

text_index_like_min_pattern_length

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.

throw_if_no_data_to_insert

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 ou a interface gRPC.

throw_on_error_from_cache_on_write_operations

Ignora o erro do cache durante o armazenamento em cache em operações de gravação (INSERT, merges)

throw_on_max_partitions_per_insert_block

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.
Isso pode ser útil se você estiver tentando entender o impacto para os usuários ao alterar max_partitions_per_insert_block.

throw_on_unsupported_query_inside_transaction

Lança uma exceção se uma consulta sem suporte for usada dentro de uma transação

timeout_before_checking_execution_speed

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.

timeout_overflow_mode

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.

timeout_overflow_mode_leaf

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.

totals_auto_threshold

O limite para totals_mode = 'auto'. Consulte a seção “modificador WITH TOTALS”.

totals_mode

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

trace_profile_events

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. Valores possíveis:
  • 1 — Rastreamento de eventos de perfil habilitado.
  • 0 — Rastreamento de eventos de perfil desabilitado.

trace_profile_events_list

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.

transfer_overflow_mode

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.

transform_null_in

Habilita a igualdade entre valores NULL para o operador 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:
┌──idx─┬─────i─┐
│    1 │     1 │
│    2 │  NULL │
│    3 │     3 │
└──────┴───────┘
Consulta:
SELECT idx, i FROM null_in WHERE i IN (1, NULL) SETTINGS transform_null_in = 0;
Resultado:
┌──idx─┬────i─┐
│    1 │    1 │
└──────┴──────┘
Consulta:
SELECT idx, i FROM null_in WHERE i IN (1, NULL) SETTINGS transform_null_in = 1;
Resultado:
┌──idx─┬─────i─┐
│    1 │     1 │
│    2 │  NULL │
└──────┴───────┘
Veja também

traverse_shadow_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

union_default_mode

Define um modo para combinar os resultados da consulta SELECT. A configuração é usada apenas com 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.

unknown_packet_in_send_data

Enviar pacote desconhecido em vez do enésimo pacote de dados

update_parallel_mode

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.

update_sequential_consistency

Se true, o conjunto de partes é atualizado para a versão mais recente antes da execução da atualização.

url_base

A URL base usada para resolver URLs relativas na função de tabela url e no motor de tabela 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

use_async_executor_for_materialized_views

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.

use_cache_for_count_from_files

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.

use_client_time_zone

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.

use_compact_format_in_distributed_parts_names

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}]].
  • 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.

use_concurrency_control

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.

use_hash_table_stats_for_join_reordering

Ativa o uso das estatísticas coletadas da tabela hash para estimativa de cardinalidade durante a reordenação de junções

use_hedged_requests

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.

use_hive_partitioning

Quando habilitada, o ClickHouse detectará o particionamento no estilo Hive no caminho (/name=value/) em motores de tabela semelhantes a arquivos File/S3/URL/HDFS/AzureBlobStorage 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 _.

use_iceberg_metadata_files_cache

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

use_iceberg_partition_pruning

Usa a poda de partições do Iceberg para tabelas Iceberg

use_index_for_in_with_subqueries

Tenta usar um índice se houver uma subconsulta ou uma expressão de tabela no lado direito do operador IN.

use_index_for_in_with_subqueries_max_values

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.

use_join_disjunctions_push_down

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.

use_legacy_to_time

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.

use_page_cache_for_disks_without_file_cache

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.

use_page_cache_for_local_disks

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

use_page_cache_for_object_storage

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

use_page_cache_with_distributed_cache

Usa o cache de páginas em espaço do usuário quando o distributed cache está em uso.

use_paimon_partition_pruning

Usa a eliminação de partições do Paimon para funções de tabela do Paimon

use_parquet_metadata_cache

Quando ativado, o formato Parquet pode usar o cache de metadados do Parquet. Valores possíveis:
  • 0 - Desabilitado
  • 1 - Habilitado

use_partition_pruning

Aliases: use_partition_key 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.

use_primary_key

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.

use_query_cache

Se ativada, consultas SELECT podem usar o cache de consultas. Os parâmetros enable_reads_from_query_cache e enable_writes_to_query_cache controlam de forma mais detalhada como o cache é usado. Valores possíveis:
  • 0 - Desabilitado
  • 1 - Habilitado

use_query_condition_cache

Ativa o cache de condição de consulta. 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

use_roaring_bitmap_iceberg_positional_deletes

Usa roaring bitmap para exclusões posicionais do Iceberg.

use_skip_indexes

Usa data skipping indexes durante a execução da consulta. Valores possíveis:
  • 0 — Desativado.
  • 1 — Ativado.

use_skip_indexes_for_disjunctions

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.

use_skip_indexes_for_top_k

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.

use_skip_indexes_if_final

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.

use_skip_indexes_if_final_exact_mode

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.

use_skip_indexes_on_data_read

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.

use_statistics

/// 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

use_statistics_cache

Use o cache de estatísticas em uma consulta para evitar a sobrecarga de carregar estatísticas de todas as partes

use_statistics_for_part_pruning

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.

use_strict_insert_block_limits

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.

use_structure_from_insertion_table_in_table_functions

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

use_text_index_header_cache

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.

use_text_index_like_evaluation_by_dictionary_scan

Ativa a avaliação de consultas LIKE/ILIKE por varredura no dicionário do índice de texto invertido.

use_text_index_postings_cache

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.

use_text_index_tokens_cache

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.

use_top_k_dynamic_filtering

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.

use_top_k_dynamic_filtering_for_variable_length_types

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.

use_uncompressed_cache

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

use_variant_as_common_type

Permite usar o tipo Variant como tipo de resultado das funções if/multiIf/array/map quando não há um tipo comum entre os tipos de argumento. Exemplo:
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);
┌─variant_type───────────────────┐
│ Variant(Array(UInt64), UInt64) │
└────────────────────────────────┘
┌─variant───┐
│ []        │
│ 1         │
│ [0,1]     │
│ 3         │
│ [0,1,2,3] │
└───────────┘
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);
─variant_type─────────────────────────┐
│ Variant(Array(UInt8), String, UInt8) │
└──────────────────────────────────────┘

┌─variant───────┐
│ 42            │
│ [1,2,3]       │
│ Hello, World! │
│ ᴺᵁᴸᴸ          │
└───────────────┘
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);
┌─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'] │
└───────────────────┘
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);
┌─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'} │
└───────────────────────────────┘

use_variant_default_implementation_for_comparisons

Habilita ou desabilita a implementação padrão para o tipo Variant em funções de comparação.

use_with_fill_by_sorting_prefix

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

validate_enum_literals_in_operators

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.

validate_mutation_query

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.

validate_polygons

Ativa ou desativa a geração de uma exceção na função 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.

variant_throw_on_type_mismatch

Ao aplicar uma função a uma coluna 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.

vector_search_filter_strategy

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.

vector_search_index_fetch_multiplier

Aliases: 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’.

vector_search_with_rescoring

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.

wait_changes_become_visible_after_commit_mode

Aguarda que as alterações confirmadas se tornem efetivamente visíveis no snapshot mais recente

wait_for_async_insert

Se true, espera o processamento do insert assíncrono

wait_for_async_insert_timeout

Tempo limite de espera pelo processamento da inserção assíncrona

wait_for_window_view_fire_signal_timeout

Tempo limite de espera pelo sinal de disparo da window view no processamento em tempo de evento

webassembly_udf_max_fuel

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.

webassembly_udf_max_input_block_size

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.

webassembly_udf_max_instances

Número máximo de instâncias de WebAssembly UDF que podem ser executadas em paralelo por função.

webassembly_udf_max_memory

Limite de memória em bytes por instância de UDF em WebAssembly.

window_view_clean_interval

O intervalo de limpeza da window view, em segundos, para remover dados desatualizados.

window_view_heartbeat_interval

O intervalo de heartbeat, em segundos, para indicar que a consulta watch está ativa.

workload

Nome do workload usado para acessar recursos

write_full_path_in_iceberg_metadata

Grava caminhos completos (incluindo s3://) nos arquivos de metadados do Iceberg.

write_through_distributed_cache

Só tem efeito no ClickHouse Cloud. Permite gravar no distributed cache (a gravação no S3 também será realizada pelo distributed cache)

write_through_distributed_cache_buffer_size

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.

zstd_window_log_max

Permite selecionar o valor máximo de window log do ZSTD (não será usado para a família MergeTree)
Última modificação em 10 de junho de 2026