Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

SETTINGS de sesión optimize_trivial_*

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

optimize_trivial_approximate_count_query

Tipo
Bool
Predeterminado
0

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

Tipo
Bool
Predeterminado
1

Activa o desactiva la optimización de la consulta trivial SELECT 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.

Véase también:

optimize_trivial_count_with_sparsity_filter

Funcionalidad beta
Tipo
Bool
Predeterminado
1
Historial de versiones
VersiónValor predeterminadoComentario
26.81Pasa a BETA y se habilita de forma predeterminada: resuelve `SELECT count() FROM t WHERE <pred>` a partir de los contadores persistentes `num_defaults` / `num_rows` por columna cuando `<pred>` divide las filas entre valores predeterminados y no predeterminados. Requiere la SETTING de MergeTree `compute_exact_num_defaults_for_sparse_columns` (que ahora también está habilitada de forma predeterminada).
26.70Nuevo SETTING (experimental) para resolver `SELECT count() FROM t WHERE <pred>` a partir de `num_defaults` / `num_rows` por columna registrados en `serialization.json` cuando `<pred>` divide las filas entre valores predeterminados y no predeterminados.

Extiende la optimización optimize_trivial_count_query a consultas de la forma SELECT 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) para Int* / UInt*, String / FixedString, Date / DateTime / DateTime64, Decimal*, UUID, IPv4 / IPv6.
  • IS NULL / IS NOT NULL en columnas Nullable.
  • empty(col) / notEmpty(col) en columnas String.
  • col = true / col != true en columnas Bool.
  • col > 0, col >= 1, col < 1, col <= 0 en columnas enteras sin signo.
  • col / NOT col directos en columnas Int*, UInt*, Bool (prueba de veracidad).

Los patrones de igualdad no se aplican a 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.

Véase también:

optimize_trivial_group_by_limit_query

Tipo
Bool
Predeterminado
1
Historial de versiones
VersiónValor predeterminadoComentario
26.51Nuevo SETTING que limita la agregación a un máximo de LIMIT claves distintas para las consultas `SELECT key_expr FROM t GROUP BY key_expr LIMIT n`.

Activa o desactiva la optimización de una consulta trivial SELECT key_expr FROM table GROUP BY key_expr LIMIT n (sin funciones de agregación, funciones de ventana ni arrayJoin en la proyección, sin cláusulas HAVING/ORDER BY/QUALIFY/LIMIT BY/DISTINCT/window y sin modificadores GROUP BY) estableciendo max_rows_to_group_by = n + offset con group_by_overflow_mode = 'any'. La agregación se detiene en cuanto se obtienen n + offset claves distintas.

La optimización se suprime cuando el usuario ha establecido explícitamente group_by_overflow_mode en un valor distinto de any (para preservar el comportamiento explícito de throw/break), y cuando el usuario ya ha establecido un max_rows_to_group_by más restrictivo (la optimización no tendría efecto).

Valores posibles:

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

optimize_trivial_insert_select

Tipo
Bool
Predeterminado
0
Historial de versiones
VersiónValor predeterminadoComentario
24.70La optimización no tiene sentido en muchos casos.

Optimiza la consulta trivial 'INSERT INTO table SELECT … FROM TABLES'

optimize_trivial_view_pushdown_to_distributed

Tipo
Bool
Predeterminado
1
Historial de versiones
VersiónValor predeterminadoComentario
26.81Nueva SETTING para enviar la consulta externa completa a los segmentos en vistas triviales sobre tablas Distributed.

Cuando está habilitada, en las vistas sobre tablas Distributed cuya lista SELECT 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 Distributed siempre se ejecutan en el coordinador.
  • 1 — La optimización está habilitada.
Navigation