Essas configurações estão disponíveis em system.settings e são autogeradas a partir do código-fonte.
optimize_aggregators_of_group_by_keys
Elimina agregadores min/max/any/anyLast de chaves de GROUP BY na seção SELECT
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
Mover operações aritméticas para fora das funções de agregação
optimize_const_name_size
Histórico de versões
| Versão | Valor padrão | Comentário |
|---|---|---|
| 25.11 | 256 | Substitui por um escalar e usa um hash como nome para constantes grandes (o tamanho é estimado pelo comprimento do nome) |
Substitui por um escalar e usa um hash como nome para constantes grandes (o tamanho é estimado pelo comprimento do nome).
Valores possíveis:
- inteiro positivo - comprimento máximo do nome,
- 0 — sempre,
- inteiro negativo - nunca.
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 às funções de tabela/motores file/s3/url/hdfs/azureBlobStorage.
Valores possíveis:
- 0 — Otimização desativada.
- 1 — Otimização ativada.
optimize_dictget_tuple_element
Histórico de versões
| Versão | Valor padrão | Comentário |
|---|---|---|
| 26.5 | 1 | Reescreve tupleElement(dictGet(..., tuple_of_attrs, ...), N) em uma chamada dictGet de atributo único. |
Reescreve tupleElement(dictGet('dict', ('a', 'b', 'c'), key), 2) em dictGet('dict', 'b', key) para evitar buscar atributos desnecessários do dicionário. Oferece suporte a 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
Habilita a otimização de DISTINCT se algumas colunas do DISTINCT formarem um prefixo da ordenação. Por exemplo, um prefixo da chave de ordenação no MergeTree ou da instrução 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 (assim como todas as combinações entre eles):
SELECT DISTINCT [..., ]sharding_key[, ...] FROM distSELECT ... FROM dist GROUP BY sharding_key[, ...]SELECT ... FROM dist GROUP BY sharding_key[, ...] ORDER BY xSELECT ... FROM dist GROUP BY sharding_key[, ...] LIMIT 1SELECT ... 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 pode ser adicionado posteriormente):
SELECT ... GROUP BY sharding_key[, ...] WITH TOTALSSELECT ... GROUP BY sharding_key[, ...] WITH ROLLUPSELECT ... GROUP BY sharding_key[, ...] WITH CUBESELECT ... GROUP BY sharding_key[, ...] SETTINGS extremes=1
Valores possíveis:
- 0 — Desabilitado.
- 1 — Habilitado.
Veja também:
optimize_dry_run_check_part
Histórico de versões
| Versão | Valor padrão | Comentário |
|---|---|---|
| 26.2 | 1 | Nova configuração |
Quando ativado, OPTIMIZE ... DRY RUN valida a parte resultante da mesclagem usando checkDataPart. Se a verificação falhar, uma exceção é lançada.
optimize_empty_string_comparisons
Histórico de versões
| Versão | Valor padrão | Comentário |
|---|---|---|
| 25.10 | 1 | Nova configuração. |
Converte expressões como col = '' ou '' = col para empty(col), e col != '' ou '' != col para notEmpty(col), apenas quando col é do tipo String ou FixedString.
optimize_extract_common_expressions
Histórico de versões
| Versão | Valor padrão | Comentário |
|---|---|---|
| 25.1 | 1 | Otimiza expressões WHERE, PREWHERE, ON, HAVING e QUALIFY extraindo expressões comuns de disjunções de conjunções. |
| 24.12 | 0 | Introduz uma configuração para otimizar expressões WHERE, PREWHERE, ON, HAVING e QUALIFY extraindo expressões comuns de disjunções de conjunções. |
Permite extrair expressões comuns de disjunções em expressões WHERE, PREWHERE, ON, HAVING e QUALIFY. Uma expressão lógica como (A AND B) OR (A AND C) pode ser reescrita como A AND (B OR C), o que pode ajudar a aproveitar:
- índices em expressões de filtro simples
- otimização de CROSS para INNER JOIN
optimize_functions_to_subcolumns
Histórico de versões
| Versão | Valor padrão | Comentário |
|---|---|---|
| 24.8 | 1 | Configuração habilitada por padrão |
Habilita ou desabilita a otimização ao transformar algumas funções em leituras de subcolunas. Isso reduz a quantidade de dados lidos.
Estas funções podem ser transformadas:
- length para ler a subcoluna size0.
- empty para ler a subcoluna size0.
- notEmpty para ler a subcoluna size0.
- isNull para ler a subcoluna null.
- isNotNull para ler a subcoluna null.
- count para ler a subcoluna null.
- mapKeys para ler a subcoluna keys.
- mapValues para ler a subcoluna values.
Valores possíveis:
- 0 — Otimização desabilitada.
- 1 — Otimização habilitada.
optimize_inverse_dictionary_lookup
Histórico de versões
| Versão | Valor padrão | Comentário |
|---|---|---|
| 25.12 | 1 | Nova configuração |
Evite buscas inversas repetidas no dicionário usando buscas mais rápidas em um conjunto pré-computado de possíveis valores de chave.
optimize_multiif_to_if
Substitui 'multiIf' por 'if' quando há apenas uma condição.
optimize_normalize_count_variants
Histórico de versões
| Versão | Valor padrão | Comentário |
|---|---|---|
| 21.3 | 1 | Reescrever funções de agregação semanticamente equivalentes a count() como count() por padrão |
Reescrever funções de agregação semanticamente equivalentes a count() como count().
optimize_on_insert
Histórico de versões
| Versão | Valor padrão | Comentário |
|---|---|---|
| 21.1 | 1 | Ativa a otimização de dados em INSERT por padrão para proporcionar uma melhor experiência ao usuário |
Ativa ou desativa a transformação de dados antes da inserção, como se um merge tivesse sido feito neste bloco (de acordo com o mecanismo de tabela).
Valores possíveis:
- 0 — Desativado.
- 1 — Ativado.
Exemplo
A diferença entre ativado e desativado:
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 essa configuração influencia o comportamento da visão materializada.
optimize_prewhere_after_pushdown
Histórico de versões
| Versão | Valor padrão | Comentário |
|---|---|---|
| 26.6 | 0 | Nova configuração que habilita uma segunda passagem de promoção de PREWHERE para mesclar à cadeia PREWHERE existente os filtros adicionados acima de uma etapa de leitura MergeTree por otimizações posteriores (pushdown de predicados por meio de JOIN, reescritas de projeção). |
Execute uma segunda passagem de promoção de PREWHERE após otimizações posteriores do plano de consulta possivelmente terem
adicionado filtros adicionais acima de uma etapa de leitura MergeTree (por exemplo, pushdown de predicados por meio de
JOIN, reescritas de projeção). Quando já existe um PREWHERE, o novo
filtro é mesclado a ele com AND, em vez de permanecer como uma etapa de filtro separada.
optimize_qbit_distance_function_reads
Histórico de versões
| Versão | Valor padrão | Comentário |
|---|---|---|
| 25.10 | 1 | Nova configuração |
Substitui as funções de distância no tipo de dado QBit por equivalentes que leem do armazenamento apenas as colunas necessárias para o cálculo.
optimize_read_in_order
Habilita a otimização de ORDER BY em consultas SELECT ao ler dados de tabelas MergeTree.
Valores possíveis:
- 0 — a otimização de
ORDER BYestá desabilitada. - 1 — a otimização de
ORDER BYestá habilitada.
Veja também
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/no uso de índices secundários/optimize_aggregation_in_order/optimize_read_in_order/optimize_trivial_count
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 para substituição de colunas. O padrão é false.
Valores possíveis:
- true, false
optimize_syntax_fuse_functions
Histórico de versões
| Versão | Valor padrão | Comentário |
|---|---|---|
| 26.3 | 1 | A otimização está pronta para uso em produção |
Permite combinar funções de agregação com o mesmo argumento. Reescreve consultas que contêm pelo menos duas funções de agregação sum, count ou avg com o mesmo argumento para sumCount.
Valores possíveis:
- 0 — Funções com o mesmo argumento não são combinadas.
- 1 — Funções com o mesmo argumento são combinadas.
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 TSVRaw;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 __table1optimize_throw_if_noop
Habilita ou desabilita o lançamento de uma exceção se uma consulta OPTIMIZE não realizar um merge.
Por padrão, OPTIMIZE retorna com sucesso mesmo quando não faz nada. Essa configuração permite diferenciar essas situações e obter o motivo na mensagem de exceção.
Valores possíveis:
- 1 — O lançamento de exceção está habilitado.
- 0 — O lançamento de exceção está desabilitado.
optimize_time_filter_with_preimage
Histórico de versões
| Versão | Valor padrão | Comentário |
|---|---|---|
| 24.2 | 1 | Otimiza predicados Date e DateTime convertendo funções em comparações equivalentes, sem necessidade de conversão (ex.: toYear(col) = 2023 -> col >= '2023-01-01' AND col <= '2023-12-31') |
Otimiza predicados Date e DateTime convertendo funções em comparações equivalentes, sem necessidade de conversão (ex.: toYear(col) = 2023 -> col >= '2023-01-01' AND col <= '2023-12-31')
optimize_truncate_order_by_after_group_by_keys
Histórico de versões
| Versão | Valor padrão | Comentário |
|---|---|---|
| 26.4 | 1 | Remove os elementos finais de ORDER BY quando todas as chaves de GROUP BY já estiverem cobertas pelo prefixo de ORDER BY. |
Remove 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 uma cláusula group by.
optimize_using_constraints
Use restrições para otimizar consultas. O padrão é false.
Valores possíveis:
- true, false