add_http_cors_header
analyze_index_with_space_filling_curves
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 análise de índice.
analyzer_inline_views
any_join_distinct_right_table_keys
ANY INNER|LEFT JOIN.
Use esta configuração apenas para compatibilidade retroativa se seus casos de uso dependerem do comportamento legado de
JOIN.- Os resultados das operações
t1 ANY LEFT JOIN t2et2 ANY RIGHT JOIN t1não são iguais porque o ClickHouse usa uma lógica de mapeamento de chaves entre as tabelas, da esquerda para a direita, de muitos para um. - Os resultados das operações
ANY INNER JOINcontêm todas as linhas da tabela à esquerda, assim como as operaçõesSEMI LEFT JOIN.
- Os resultados das operações
t1 ANY LEFT JOIN t2et2 ANY RIGHT JOIN t1são iguais porque o ClickHouse usa uma lógica que fornece mapeamento de chaves de um para muitos em operaçõesANY RIGHT JOIN. - Os resultados das operações
ANY INNER JOINcontêm uma linha por chave de ambas as tabelas, à esquerda e à direita.
- 0 — O comportamento legado está desabilitado.
- 1 — O comportamento legado está habilitado.
archive_adaptive_buffer_max_size_bytes
arrow_flight_request_descriptor_type
- ‘path’ — Usa
FlightDescriptor::Path(padrão, funciona com a maioria dos servidores Arrow Flight) - ‘command’ — Usa
FlightDescriptor::Commandcom uma consulta SELECT (necessário para o Dremio)
backup_slow_all_threads_after_retryable_s3_error
true, todas as threads que executam solicitações ao S3 para o mesmo endpoint de backup ficam mais lentas
depois que uma única solicitação ao S3 encontra um erro S3 passível de nova tentativa, como ‘Slow Down’.
Quando definido como false, cada thread lida com o backoff das solicitações ao S3 independentemente das demais.
cache_warmer_threads
calculate_text_stack_trace
cancel_http_readonly_queries_on_client_close
SELECT) quando o cliente fecha a conexão sem aguardar a resposta.
Valor padrão no Cloud: 1.
checksum_on_read
connection_pool_max_wait_ms
- Inteiro positivo.
- 0 — Tempo limite infinito.
connections_with_failover_max_tries
convert_query_to_cnf
true, uma consulta SELECT será convertida para a forma normal conjuntiva (CNF). Há cenários em que reescrever uma consulta em CNF pode fazer com que ela seja executada mais rapidamente (veja esta issue no Github para uma explicação).
Por exemplo, observe como a consulta SELECT a seguir não é modificada (comportamento padrão):
convert_query_to_cnf como true e ver o que muda:
WHERE é reescrita em CNF, mas o conjunto de resultados é o mesmo - a lógica booleana permanece inalterada:
count_matches_stop_at_empty_match
countMatches.
cross_to_inner_join_rewrite
data_type_default_nullable
- 1 — Os tipos de dados nas definições de coluna são definidos como
Nullablepor padrão. - 0 — Os tipos de dados nas definições de coluna são definidos como não
Nullablepor padrão.
decimal_check_overflow
deduplicate_blocks_in_dependent_materialized_views
- 0 — Desabilitado.
- 1 — Habilitado.
defer_partition_pruning_after_final
FINAL em tabelas cujas
colunas da chave de partição não fazem parte da chave de ordenação. Esse é o comportamento seguro do ponto de vista da correção
introduzido na 26.3: FINAL pode precisar desduplicar linhas que compartilham a mesma chave primária, mas estão
em partições diferentes, e a poda de partições excluiria silenciosamente essas linhas da
entrada usada na desduplicação.
Quando desabilitada, 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 do insert
e nunca muda.
Essa configuração afeta apenas tabelas particionadas cujas colunas da chave de partição não estão incluídas
na chave de ordenação; para as demais 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 do ponto de vista da correção).
describe_compact_output
dialeto
clickhouse(padrão) — SQL padrão do ClickHouse.kusto— Kusto Query Language. Requer a configuração experimentalallow_experimental_kusto_dialect.prql— PRQL. Requer a configuração experimentalallow_experimental_prql_dialect.polyglot— transpila SQL de outros dialetos (MySQL, PostgreSQL etc.) para ClickHouse SQL. Requer a configuração experimentalallow_experimental_polyglot_dialect.promql— PromQL (Prometheus Query Language) avaliada em uma tabela TimeSeries, configurada pelas opçõespromql_database,promql_tableepromql_evaluation_time.clickhouse_json— em vez de texto SQL, a consulta é interpretada como um AST JSON (a saída deparseQueryToJSON). A consultaSETcontinua sendo reconhecida em formato simples para permitir a reversão para outro dialeto. Requer a configuração experimentalenable_json_ast_dialect.
discard_query_data
distinct_overflow_mode
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.
do_not_merge_across_partitions_select_final
dynamic_throw_on_type_mismatch
true(padrão) — gera uma exceção.false— retornaNULLpara essas linhas.
enforce_strict_identifier_format
engine_url_skip_empty_files
- 0 —
SELECTlança uma exceção se o arquivo vazio não for compatível com o formato solicitado. - 1 —
SELECTretorna um resultado vazio para arquivo vazio.
exact_rows_before_limit
except_default_mode
exclude_materialize_skip_indexes_on_insert
execute_exists_as_scalar_subquery
EXISTS não correlacionadas como subconsultas escalares. Assim como ocorre com subconsultas escalares, o cache é usado, e o constant folding é aplicado ao resultado.
Valor padrão no Cloud: 0.
explain_query_plan_default
EXPLAIN PLAN.
Valores possíveis:
pretty(padrão desde a 26.7) —actions,compacteprettysãotruepor padrão, produzindo um plano compacto, Pretty e anotado com ações.legacy— saída anterior à 26.7.
actions, compact ou pretty na instrução EXPLAIN (por exemplo, EXPLAIN actions = 0, compact = 0, pretty = 0 SELECT ...) sempre substitui essa configuração.
EXPLAIN PLAN com json = 1 ou distributed = 1 mantém os padrões legados (anteriores à 26.7) independentemente dessa configuração, a menos que actions, compact ou pretty sejam definidos explicitamente. A saída Pretty não consegue representar resultados JSON nem planos distribuídos por shard, portanto esses modos só são renderizados corretamente no formato legado.
extract_key_value_pairs_max_pairs_per_row
extract_kvp_max_pairs_per_row
Número máximo de pares que podem ser produzidos pela função extractKeyValuePairs. Usado como proteção contra o consumo excessivo de memória.
extremes
fallback_to_stale_replicas_for_distributed_queries
SELECT em uma tabela distribuída que aponta para tabelas replicadas.
Por padrão, 1 (habilitado).
file_like_engine_default_partition_strategy
{_partition_id}: esse tipo de caminho é compatível apenas com a estratégia wildcard, portanto sempre implica wildcard.
filesystem_prefetches_limit
filesystem_prefetches_max_memory_usage é mais recomendada se você quiser limitar o número de prefetches
final
- 0 - desabilitado
- 1 - habilitado
finalize_projection_parts_synchronously
flatten_nested
- 1 — A coluna Nested é expandida em arrays separados.
- 0 — A coluna Nested permanece como um único array de tuplas.
0, é possível usar qualquer nível de aninhamento.
Exemplos
Consulta:
framing_output_format
data, totals e extremes é exatamente o que o formato de saída teria produzido sem enquadramento. Pacotes auxiliares (progresso, logs, eventos de perfil e exceções) são representados em JSON.
Há uma exceção deliberada: um formato de saída que omite totais e extremos em sua saída simples por não conseguir representá-los (a família JSONCompactEachRow) os emite com enquadramento, nos pacotes totals e extremes. Para esses formatos, a concatenação somente dos pacotes data corresponde exatamente à saída sem enquadramento, e os pacotes totals e extremes contêm linhas adicionais que a saída sem enquadramento não inclui.
Os logs do servidor são incluídos se a configuração send_logs_level estiver definida, e os eventos de perfil serão incluídos se a configuração send_profile_events estiver habilitada (eles são enviados no máximo uma vez a cada interactive_delay microssegundos, e os pacotes de progresso também são limitados por interactive_delay).
Um fluxo bem-sucedido termina com um pacote progress final que contém os contadores finais (result_rows, result_bytes, memory_usage), gravado após os pacotes finais log e profile_events emitidos pelo logging de término da consulta, assim como o pacote de progresso final do protocolo nativo. Em caso de falha, o pacote exception é o último pacote — com uma exceção: quando a falha ocorre depois que parte do fluxo de pacotes já foi produzida na resposta e não pode mais ser descartada (a gravação de um pacote falha parcialmente, a entrega do próprio pacote exception falha ou o fluxo de resposta falha durante a liberação ou o fechamento), o enquadramento falha de forma segura — o fluxo é encerrado sem um pacote exception terminal, e o cliente recebe uma resposta truncada e uma conexão HTTP abortada, em vez de um pacote terminal analisável. Nada é acrescentado após um fluxo parcial de pacotes; portanto, um corpo de erro HTTP simples nunca é misturado a ele.
Tudo o que uma consulta habilita somente por meio de sua própria cláusula SETTINGS — um formato de enquadramento, send_logs_level ou send_profile_events — só é conhecido depois que a consulta é analisada; portanto, os logs e eventos de perfil correspondentes são capturados apenas a partir da execução da consulta. Os logs e eventos de perfil das fases de análise sintática, planejamento e análise são capturados somente quando a configuração vem da sessão ou da URL. Por exemplo, uma consulta que falha durante a análise (como ao fazer referência a uma tabela desconhecida) e habilita send_logs_level apenas em sua cláusula SETTINGS entrega somente o pacote exception, e não os logs da fase de análise; defina send_logs_level na sessão ou na URL para capturá-los.
A mesma ressalva quanto à descoberta tardia se aplica a send_logs_source_regexp: a fila de logs filtra as entradas por origem no momento em que cada uma é capturada; portanto, uma expressão regular definida apenas na própria cláusula SETTINGS da consulta passa a valer a partir da execução da consulta. Os pacotes log das fases de análise sintática, planejamento e análise são filtrados pelo valor da configuração na sessão ou na URL (não são filtrados quando ela não está definida nesses locais); portanto, podem incluir origens que não correspondem à expressão regular no nível da consulta. Por outro lado, entradas descartadas por uma expressão regular mais restritiva na sessão ou na URL não são recuperadas por uma expressão mais ampla no nível da consulta. Defina send_logs_source_regexp na sessão ou na URL para filtrar todo o ciclo de vida da consulta.
Atualmente, a configuração se aplica ao protocolo HTTP e é ignorada por outras interfaces.
Valores possíveis:
None- encaminha de forma transparente tudo o que se aplica (dados, totais, extremos, progresso) ao formato de saída e ignora o que não se aplica (métricas, logs), mantendo o comportamento padrão.EventStream- enquadra os pacotes como eventos HTTP enviados pelo servidor (text/event-stream). Cada pacote é enviado como um evento com o nome correspondente:data,totals,extremes,progress,log,profile_events,exception. O progresso e outros pacotes auxiliares são enviados como JSON. Como eventos enviados pelo servidor usam um protocolo de texto que trata quebras de linha (incluindo retornos de carro,\r) como delimitadores, um bloco de dados formatados é codificado em Base64 em um único campodatado evento, que é decodificado para o payload totalmente formatado, com todas as quebras de linha; oContent-Typeinclui o parâmetropayload=base64para indicar isso. Qualquer formato de saída pode ser transportado dessa maneira com exatidão byte a byte, tanto texto quanto binário.JSONEachPacketBase64- cada pacote é um objeto JSON em uma linha separada, e os dados formatados são codificados em Base64, por exemplo,{"packet":"data","data":"eyJ4IjoxfQo="}. Adequado para formatos de saída binários.JSONEachPacketString- cada pacote é um objeto JSON em uma linha separada, e os dados formatados são incluídos em uma string, por exemplo,{"packet":"data","data":"{\"x\":1}\n"}.
JSONEachPacketString insere os bytes do payload em uma string JSON sem validá-los nem recodificá-los. As colunas String e FixedString podem conter bytes arbitrários, portanto formatos de saída de texto (como JSONEachRow, TSV ou CSV) podem emitir UTF-8 inválido para esses valores — assim como o próprio JSONEachRow do ClickHouse faz com o padrão output_format_json_validate_utf8 = 0 —, e não há garantia de que o fluxo NDJSON resultante seja UTF-8 válido. Use JSONEachPacketBase64 para transportar bytes arbitrários com exatidão byte a byte.
Exemplo:
fsync_metadata
.sql. Ativado por padrão.
Faz sentido desativá-lo se o servidor tiver milhões de tabelas pequenas sendo constantemente criadas e removidas.
functions_h3_default_if_invalid
geo_distance_returns_float64_on_float64_arguments
geoDistance, greatCircleDistance e greatCircleAngle forem Float64, retorne Float64 e use precisão dupla nos cálculos internos. Em versões anteriores do ClickHouse, as funções sempre retornavam Float32.
geotoh3_argument_order
glob_expansion_max_elements
h3togeo_lon_lat_result_order
handshake_timeout_ms
hedged_connection_timeout_ms
highlight_max_matches_per_row
- Inteiro positivo.
hnsw_candidate_list_size_for_search
hsts_max_age
idle_connection_timeout
- Inteiro positivo (0 - encerra imediatamente, após 0 segundos).
inject_random_order_for_select_without_order_by
interactive_delay
intersect_default_mode
least_greatest_legacy_null_behavior
legacy_column_name_of_tuple_literal
limit
- 0 — O número de linhas não é limitado.
- Inteiro positivo.
load_marks_asynchronously
1.
lock_acquire_timeout
DEADLOCK_AVOIDED.
Valores possíveis:
- Inteiro positivo (em segundos).
- 0 — Sem tempo limite de bloqueio.
low_priority_query_wait_time_ms
priority), as consultas de baixa prioridade aguardam até que as de prioridade mais alta terminem. Essa configuração especifica o tempo de espera.
make_distributed_plan
enable_parallel_replicas = 0eautomatic_parallel_replicas_mode = 0— o plano distribuído faz sua própria distribuição de trabalho;correlated_subqueries_use_in_memory_buffer = 0;use_skip_indexes_on_data_read = 0;compile_expressions = 0;query_plan_direct_read_from_text_index = 0.
merge_table_max_tables_to_look_for_schema_inference
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 isso, o esquema será inferido a partir das primeiras tabelas, até o número especificado.
mongodb_throw_on_unsupported_query
multiple_joins_try_to_keep_original_names
normalize_function_names
offset
- 0 — Nenhuma linha é ignorada.
- Inteiro positivo.
paimon_target_snapshot_id
snapshot_id especificado, sem avançar a watermark confirmada.
Padrão: -1 (desabilitado)
parallelize_output_from_storages
partial_result_on_first_cancel
per_part_index_stats
poll_interval
polyglot_dialect
postgresql_fault_injection_probability
predicate_statistics_sample_rate
system.predicate_statistics_log. Quando definido como N > 0, aproximadamente 1/N das consultas são amostradas (pelo ID da consulta). 0 significa que está desabilitado.
prefetch_buffer_size
print_pretty_type_names
DESCRIBE e na função toTypeName().
Exemplo:
priority
push_external_roles_in_interserver_queries
query_metric_log_interval
collect_interval_milliseconds da configuração query_metric_log ou, se ela não estiver presente, 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
queue_max_wait_ms
rabbitmq_max_wait_ms
readonly
recursive_cte_max_steps_in_type_inference
getLeastSupertype aos lados não recursivo e recursivo do UNION ALL até a convergência. Defina como 0 para desativar a ampliação de tipos e usar apenas os tipos da parte não recursiva.
regexp_max_matches_per_row
- Inteiro positivo.
reject_expensive_hyperscan_regexps
remerge_sort_lowered_memory_bytes_ratio
remote_read_min_bytes_for_seek
rename_files_after_processing
- Tipo: String
- Valor padrão: String vazia
file. Quando essa 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.
Placeholders
%a— Nome completo do arquivo original (por exemplo, “sample.csv”).%f— Nome do arquivo original sem extensão (por exemplo, “sample”).%e— Extensão do arquivo original com ponto (por exemplo, “.csv”).%t— Timestamp (em microssegundos).%%— Símbolo de porcentagem (”%”).
Exemplo
-
Opção:
--rename_files_after_processing="processed_%f_%t%e" -
Consulta:
SELECT * FROM file('sample.csv')
sample.csv for concluída com sucesso, o arquivo será renomeado para processed_sample_1683473210851438.csv
replication_wait_for_inactive_replica_timeout
ALTER, OPTIMIZE ou TRUNCATE.
Valores possíveis:
0— Não esperar.- Inteiro negativo — Espera por tempo ilimitado.
- Inteiro positivo — Número de segundos de espera.
reserve_memory
workload.
Se não houver memória suficiente disponível para o workload, a consulta não será iniciada e ficará em estado pendente até que a reserva possa ser atendida.
Um valor de 0 significa que não há reserva.
Essa configuração só entra em vigor se o recurso MEMORY RESERVATION for criado.
Substitui o engine da tabela de ReplicatedMergeTree por SharedMergeTree durante o RESTORE.
Valor padrão na Cloud: 1.
result_overflow_mode
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.
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
Result
rows_before_aggregation
secondary_indices_enable_bulk_filtering
select_sequential_consistency
Essa configuração tem comportamento diferente no SharedMergeTree e no ReplicatedMergeTree. Consulte SharedMergeTree consistency para mais informações sobre o comportamento de
select_sequential_consistency no SharedMergeTree.SELECT. Requer que insert_quorum_parallel esteja desabilitado (habilitado por padrão).
Valores possíveis:
- 0 — Desabilitado.
- 1 — Habilitado.
SELECT apenas nas réplicas que contêm dados de todas as consultas INSERT anteriores executadas com insert_quorum. Se o cliente se conectar a 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 quorum de réplicas.
Quando insert_quorum_parallel está habilitado (o padrão), select_sequential_consistency não funciona. Isso acontece porque consultas INSERT paralelas podem ser gravadas em diferentes conjuntos de réplicas de quorum, portanto não há garantia de que uma única réplica terá recebido todas as gravações.
Veja também:
session_timezone
timeZone() e serverTimeZone() para obter o fuso horário da sessão e o fuso horário do servidor.
Valores possíveis:
- Qualquer nome de fuso horário de
system.time_zones, por exemplo,Europe/Berlin,UTCouZulu
toDateTime()sem fuso horário explicitamente informado, usado na primeira consultaSELECT, respeita a configuraçãosession_timezonee o fuso horário global.- Na segunda consulta, um DateTime é convertido de uma String e herda o tipo e o fuso horário da coluna existente
d. Assim, a configuraçãosession_timezonee o fuso horário global não são respeitados.
set_overflow_mode
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.
single_join_prefer_left_table
skip_redundant_aliases_in_udf
- 1 — Os aliases são ignorados (substituídos) em UDFs.
- 0 — Os aliases não são ignorados (substituídos) em UDFs.
sleep_after_receiving_query_ms
snappy_mode
file e url. Content-Encoding: snappy em HTTP sempre usa o formato de framing e ignora esta configuração.
Observe que o formato bruto de bloco snappy produzido por uma única chamada a snappy::Compress (por exemplo, os payloads do protocolo remoto do Prometheus processados por SnappyBasicReadBuffer) é um formato wire separado, específico do protocolo, e não é controlado por esta configuração.
Valores possíveis:
basic— Formato de bloco snappy do Hadoop. Compatível com arquivos lidos e gravados pelo Hadoop. Suporta leitura e gravação.framed— Formato de framing do Snappy, o formato de streaming padrão definido pelo Google. Suporta leitura e gravação.
sort_overflow_mode
throw: gerar uma exceção.break: interromper a execução da consulta e retornar o resultado parcial.
splitby_max_substrings_includes_remaining_string
max_substrings > 0, incluirá a parte restante da string no último elemento do array de resultado.
Valores possíveis:
0- A parte restante da string não será incluída no último elemento do array de resultado.1- A parte restante da string será incluída no último elemento do array de resultado. Esse é o comportamento da funçãosplit()do Spark e do método ‘string.split()’ do Python.
stop_refreshable_materialized_views_on_startup
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.
tcp_keep_alive_timeout
temporary_data_in_cache_reserve_space_wait_lock_timeout_milliseconds
throw_if_no_data_to_insert
clickhouse-client ou a interface gRPC.
timeout_before_checking_execution_speed
min_execution_speed).
transfer_overflow_mode
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.
transform_null_in
NULL não podem ser comparados, porque NULL significa um valor indefinido. Portanto, 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
NULLno operadorINretornafalse. - 1 — A comparação entre valores
NULLno operadorINretornatrue.
null_in:
traverse_shadow_remote_data_paths
union_default_mode
SELECT. A configuração só é usada com UNION quando UNION ALL ou UNION DISTINCT não é especificado 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 comUNION.
unknown_packet_in_send_data
variant_throw_on_type_mismatch
true(padrão) — lança uma exceção.false— retornaNULLpara essas linhas.