Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

ajustes de sesión optimize_*

Estos ajustes están disponibles en system.settings y se generan automáticamente a partir del código fuente.

optimize_aggregators_of_group_by_keys

Tipo
Bool
Predeterminado
1

Elimina los agregadores min/max/any/anyLast de las claves de GROUP BY en la cláusula SELECT

optimize_append_index

Tipo
Bool
Predeterminado
0

Use restricciones para añadir la condición del índice. El valor predeterminado es false.

Valores posibles:

  • true, false

optimize_arithmetic_operations_in_aggregate_functions

Tipo
Bool
Predeterminado
1

Saca las operaciones aritméticas de las funciones de agregación

optimize_const_name_size

Tipo
Int64
Predeterminado
256
Historial de versiones
VersiónValor predeterminadoComentario
25.11256Sustituir por un escalar y usar un hash como nombre para constantes grandes (el tamaño se estima por la longitud del nombre)

Sustituir por un escalar y usar un hash como nombre para constantes grandes (el tamaño se estima por la longitud del nombre).

Posibles valores:

  • entero positivo - longitud máxima del nombre,
  • 0 — siempre,
  • entero negativo - nunca.

optimize_count_from_files

Tipo
Bool
Predeterminado
1

Habilita o deshabilita la optimización del conteo de filas en archivos con distintos formatos de entrada. Se aplica a las funciones de tabla/motores file/s3/url/hdfs/azureBlobStorage.

Valores posibles:

  • 0 — Optimización deshabilitada.
  • 1 — Optimización habilitada.

optimize_dictget_tuple_element

Tipo
Bool
Predeterminado
1
Historial de versiones
VersiónValor predeterminadoComentario
26.51Reescribe tupleElement(dictGet(..., tuple_of_attrs, ...), N) como una llamada a dictGet de un solo atributo.

Reescribe tupleElement(dictGet('dict', ('a', 'b', 'c'), key), 2) como dictGet('dict', 'b', key) para evitar recuperar atributos del diccionario innecesarios. Admite acceso posicional (.1, .2, …) y con nombre (.b), y también se aplica a dictGetOrDefault cuando el argumento por defecto es una tupla constante o un tuple(...) de constantes.

optimize_distinct_in_order

Tipo
Bool
Predeterminado
1

Habilita la optimización de DISTINCT si algunas de sus columnas forman un prefijo de la ordenación. Por ejemplo, un prefijo de la clave de ordenación en MergeTree o de la instrucción ORDER BY

optimize_distributed_group_by_sharding_key

Tipo
Bool
Predeterminado
1

Optimiza las consultas GROUP BY sharding_key al evitar una agregación costosa en el servidor iniciador (lo que reduce el uso de memoria de la consulta en ese servidor).

Se admiten los siguientes tipos de consultas (y cualquier combinación de ellos):

  • 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

No se admiten los siguientes tipos de consultas (más adelante podría añadirse soporte para algunas de ellas):

  • 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

Posibles valores:

  • 0 — Deshabilitado.
  • 1 — Habilitado.

Véase también:

optimize_dry_run_check_part

Tipo
Bool
Predeterminado
1
Historial de versiones
VersiónValor predeterminadoComentario
26.21Nueva opción

Si está habilitado, OPTIMIZE ... DRY RUN valida la parte fusionada resultante con checkDataPart. Si la comprobación falla, se lanza una excepción.

optimize_empty_string_comparisons

Tipo
Bool
Predeterminado
1
Historial de versiones
VersiónValor predeterminadoComentario
25.101Nueva configuración.

Convierte expresiones como col = '' o '' = col en empty(col), y col != '' o '' != col en notEmpty(col), únicamente cuando col es de tipo String o FixedString.

optimize_extract_common_expressions

Tipo
Bool
Predeterminado
1
Historial de versiones
VersiónValor predeterminadoComentario
25.11Optimiza las expresiones WHERE, PREWHERE, ON, HAVING y QUALIFY extrayendo las expresiones comunes de una disyunción de conjunciones.
24.120Introduce una configuración para optimizar las expresiones WHERE, PREWHERE, ON, HAVING y QUALIFY extrayendo las expresiones comunes de una disyunción de conjunciones.

Permite extraer expresiones comunes de las disyunciones en las expresiones WHERE, PREWHERE, ON, HAVING y QUALIFY. Una expresión lógica como (A AND B) OR (A AND C) puede reescribirse como A AND (B OR C), lo que puede ayudar a aprovechar:

  • índices en expresiones de filtrado simples
  • la optimización de CROSS a INNER JOIN

optimize_functions_to_subcolumns

Tipo
Bool
Predeterminado
1
Historial de versiones
VersiónValor predeterminadoComentario
24.81Configuración habilitada de forma predeterminada

Habilita o deshabilita la optimización mediante la transformación de algunas funciones para que lean subcolumnas. Esto reduce la cantidad de datos que se deben leer.

Estas funciones pueden transformarse:

Valores posibles:

  • 0 — Optimización deshabilitada.
  • 1 — Optimización habilitada.

optimize_inverse_dictionary_lookup

Tipo
Bool
Predeterminado
1
Historial de versiones
VersiónValor predeterminadoComentario
25.121Nueva opción

Evita repetir la búsqueda inversa en diccionarios mediante búsquedas más rápidas en un conjunto precalculado de posibles valores de clave.

optimize_multiif_to_if

Tipo
Bool
Predeterminado
1

Sustituye 'multiIf' por 'if' cuando solo haya una condición.

optimize_normalize_count_variants

Tipo
Bool
Predeterminado
1
Historial de versiones
VersiónValor predeterminadoComentario
21.31Reescribe de forma predeterminada las funciones de agregación semánticamente equivalentes a count() como count()

Reescribe las funciones de agregación semánticamente equivalentes a count() como count().

optimize_on_insert

Tipo
Bool
Predeterminado
1
Historial de versiones
VersiónValor predeterminadoComentario
21.11Habilita la optimización de datos en INSERT de forma predeterminada para mejorar la experiencia del usuario

Habilita o deshabilita la transformación de datos antes de la inserción, como si se hubiera realizado una fusión en este bloque (según el motor de la tabla).

Posibles valores:

  • 0 — Deshabilitado.
  • 1 — Habilitado.

Ejemplo

La diferencia entre habilitado y deshabilitado:

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

Tenga en cuenta que esta configuración afecta al comportamiento de la vista materializada.

optimize_prewhere_after_pushdown

Tipo
Bool
Predeterminado
0
Historial de versiones
VersiónValor predeterminadoComentario
26.60Nueva configuración que habilita una segunda pasada de promoción de PREWHERE para fusionar en la cadena PREWHERE existente los filtros añadidos sobre un paso de lectura de MergeTree por optimizaciones posteriores (pushdown de predicados a través de JOIN, reescrituras de proyección).

Ejecuta una segunda pasada de promoción de PREWHERE después de que optimizaciones posteriores del plan de consulta hayan podido añadir filtros adicionales sobre un paso de lectura de MergeTree (p. ej., pushdown de predicados a través de JOIN, reescrituras de proyección). Cuando ya existe un PREWHERE, el nuevo filtro se fusiona con él mediante AND en lugar de permanecer como un paso de filtro independiente.

optimize_qbit_distance_function_reads

Tipo
Bool
Predeterminado
1
Historial de versiones
VersiónValor predeterminadoComentario
25.101Nueva configuración

Sustituye las funciones de distancia del tipo de dato QBit por otras equivalentes que solo leen del almacenamiento las columnas necesarias para el cálculo.

optimize_read_in_order

Tipo
Bool
Predeterminado
1

Habilita la optimización de ORDER BY en las consultas SELECT para la lectura de datos de tablas MergeTree.

Valores posibles:

  • 0 — la optimización de ORDER BY está deshabilitada.
  • 1 — la optimización de ORDER BY está habilitada.

Véase también

optimize_respect_aliases

Tipo
Bool
Predeterminado
1

Si se establece en true, respetará los alias en WHERE/GROUP BY/ORDER BY, lo que ayudará con el descarte de particiones/índices secundarios/optimize_aggregation_in_order/optimize_read_in_order/optimize_trivial_count

optimize_sorting_by_input_stream_properties

Tipo
Bool
Predeterminado
1

Optimiza la ordenación en función de las propiedades de ordenación del flujo de entrada

optimize_substitute_columns

Tipo
Bool
Predeterminado
0

Use restricciones para sustituir columnas. El valor predeterminado es false.

Valores posibles:

  • true, false

optimize_syntax_fuse_functions

Tipo
Bool
Predeterminado
1
Historial de versiones
VersiónValor predeterminadoComentario
26.31La optimización está lista para producción

Permite fusionar funciones de agregación con el mismo argumento. Reescribe una consulta que contiene al menos dos funciones de agregación de sum, count o avg con el mismo argumento como sumCount.

Valores posibles:

  • 0 — Las funciones con el mismo argumento no se fusionan.
  • 1 — Las funciones con el mismo argumento se fusionan.

Ejemplo

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 __table1

optimize_throw_if_noop

Tipo
Bool
Predeterminado
0

Habilita o deshabilita el lanzamiento de una excepción si una consulta OPTIMIZE no realizó ninguna fusión.

De forma predeterminada, OPTIMIZE se completa correctamente incluso si no hizo nada. Esta configuración le permite distinguir estas situaciones y obtener el motivo en el mensaje de excepción.

Valores posibles:

  • 1 — El lanzamiento de una excepción está habilitado.
  • 0 — El lanzamiento de una excepción está deshabilitado.

optimize_time_filter_with_preimage

Tipo
Bool
Predeterminado
1
Historial de versiones
VersiónValor predeterminadoComentario
24.21Optimiza los predicados de Date y DateTime convirtiendo las funciones en comparaciones equivalentes sin necesidad de conversiones (p. ej., toYear(col) = 2023 -> col >= '2023-01-01' AND col <= '2023-12-31')

Optimiza los predicados de Date y DateTime convirtiendo las funciones en comparaciones equivalentes sin necesidad de conversiones (p. ej., toYear(col) = 2023 -> col >= '2023-01-01' AND col <= '2023-12-31')

optimize_truncate_order_by_after_group_by_keys

Tipo
Bool
Predeterminado
1
Historial de versiones
VersiónValor predeterminadoComentario
26.41Eliminar los elementos finales de ORDER BY una vez que todas las claves de GROUP BY queden incluidas en el prefijo de ORDER BY.

Eliminar los elementos finales de ORDER BY una vez que todas las claves de GROUP BY queden incluidas en el prefijo de ORDER BY.

optimize_uniq_to_count

Tipo
Bool
Predeterminado
1

Reescribe uniq y sus variantes (excepto uniqUpTo) como count si la subconsulta tiene DISTINCT o una cláusula GROUP BY.

optimize_using_constraints

Tipo
Bool
Predeterminado
0

Use restricciones para la optimización de consultas. El valor predeterminado es false.

Valores posibles:

  • true, false
Navigation