optimize_trivial_approximate_count_query
Usa un valor aproximado para la optimización de recuento trivial en motores de almacenamiento que admitan este tipo de estimación, por ejemplo, EmbeddedRocksDB. Valores posibles:- 0 — Optimización deshabilitada.
- 1 — Optimización habilitada.
optimize_trivial_count_query
Activa o desactiva la optimización de la consulta trivialSELECT count() FROM table mediante los metadatos de MergeTree. Si necesita usar seguridad a nivel de fila, desactive este SETTING.
Valores posibles:
- 0 — Optimización desactivada.
- 1 — Optimización activada.
optimize_trivial_count_with_sparsity_filter
Extiende la optimización optimize_trivial_count_query a consultas de la formaSELECT count() FROM t WHERE col <op> const, donde <op> const
divide exactamente las filas entre valores predeterminados y no predeterminados de col. El conteo se
resuelve entonces a partir de los contadores num_defaults / num_rows por columna que MergeTree ya
mantiene en serialization.json, sin escanear datos.
Patrones reconocidos:
col = default(col)/col != default(col)paraInt*/UInt*,String/FixedString,Date/DateTime/DateTime64,Decimal*,UUID,IPv4/IPv6.IS NULL/IS NOT NULLen columnasNullable.empty(col)/notEmpty(col)en columnasString.col = true/col != trueen columnasBool.col > 0,col >= 1,col < 1,col <= 0en columnas enteras sin signo.col/NOT coldirectos en columnasInt*,UInt*,Bool(prueba de veracidad).
Float*, Enum*, Nullable, LowCardinality
ni a tipos compuestos (Tuple, Array, Map, …) — para estos, el conteo se resuelve mediante la
ruta de escaneo normal.
Para que surta efecto, el contador num_defaults por parte debe ser exacto. Habilite la
SETTING de tabla de MergeTree compute_exact_num_defaults_for_sparse_columns en la tabla de destino antes de
las inserciones y fusiones. Las partes escritas sin ella quedan excluidas silenciosamente de la reescritura, por lo que
habilitar solo optimize_trivial_count_with_sparsity_filter no es suficiente.
Para los patrones IS NULL / IS NOT NULL en columnas Nullable, la columna también debe
tener una entrada num_defaults en serialization.json, lo que solo ocurre cuando la SETTING de tabla de MergeTree
nullable_serialization_version está establecida en allow_sparse en el momento de la inserción /
fusión. Con el valor predeterminado basic, las columnas Nullable no obtienen ninguna entrada por columna, por lo que
la optimización simplemente no se aplica.
Posibles valores:
- 0 — Optimización deshabilitada.
- 1 — Optimización habilitada.
optimize_trivial_group_by_limit_query
Habilita o deshabilita la optimización de una consulta trivialSELECT ... FROM table GROUP BY key_expr LIMIT n (sin cláusulas HAVING/ORDER BY/QUALIFY/LIMIT BY/DISTINCT/de ventana y sin modificadores de GROUP BY), que consiste en limitar la agregación a n + offset claves distintas.
Si la proyección no contiene funciones de agregación, el límite se aplica estableciendo max_rows_to_group_by = n + offset con group_by_overflow_mode = 'any' (esta variante también se aplica en los segmentos de las consultas distribuidas). Si la proyección contiene funciones de agregación, el límite solo se aplica cuando el servidor realiza toda la agregación localmente: en cuanto cualquier thread de agregación supera el límite, todos los threads pasan a compartir un único conjunto de n + offset claves conservadas, de modo que los valores agregados de las claves devueltas siguen siendo exactos.
La optimización no se aplica cuando el usuario ha establecido explícitamente group_by_overflow_mode en un valor distinto de any (para respetar el comportamiento throw/break que ha elegido de forma explícita), cuando el usuario ya ha establecido un max_rows_to_group_by más restrictivo, ni cuando se usa exact_rows_before_limit (el límite haría que rows_before_limit_at_least informara como máximo n + offset).
La variante con funciones de agregación es incompatible con el heap top-K de GROUP BY de enable_group_by_top_k_optimization en la misma consulta. Como el heap es más rápido, el corte solo se aplica cuando no se puede usar el heap: cuando está deshabilitado, cuando n + offset supera query_plan_max_limit_for_top_k_optimization, cuando max_rows_to_group_by está establecido o cuando el plan de consulta está serializado.
Valores posibles:
- 0 — Optimización deshabilitada.
- 1 — Optimización habilitada.
optimize_trivial_insert_select
Optimiza la consulta trivial ‘INSERT INTO table SELECT … FROM TABLES’ Combine esta configuración con un valor explícito demax_insert_threads: la optimización limita el SELECT a
max_insert_threads threads de lectura, lo que modifica el número de bloques que genera el SELECT.
optimize_trivial_view_pushdown_to_distributed
Cuando está habilitada, en las vistas sobre tablas Distributed cuya listaSELECT contiene únicamente referencias a columnas, *
o expresiones (pero sin funciones de ventana ni subconsultas escalares), y que no incluyen agregación, agrupación, ordenación ni joins, la consulta externa completa se envía a
cada segmento. Esto permite que el segmento aplique localmente los filtros y las expresiones de la vista, lo que reduce la cantidad de datos transferidos por la red.
Valores posibles:
- 0 — La optimización está deshabilitada; las vistas sobre tablas
Distributedsiempre se ejecutan en el coordinador. - 1 — La optimización está habilitada.