group_by_overflow_mode
Establece qué sucede cuando el número de claves únicas para la agregación supera el límite:throw: lanzar una excepciónbreak: dejar de ejecutar la consulta y devolver el resultado parcialany: continuar la agregación para las claves que entraron en el conjunto, pero sin añadir nuevas claves al conjunto.
group_by_top_k_optimization_observation_rows
Paraenable_group_by_top_k_optimization: número de filas que cada flujo de agregación observa antes de congelar un heap top-K lleno que descartó menos del 10 % de las filas de entrada y expulsó menos claves que su capacidad. Un heap congelado implica que la agregación continúa como si la optimización estuviera deshabilitada.
La ventana efectiva es de al menos el doble del tamaño reservado del heap, por lo que un heap siempre tiene la oportunidad de llenarse antes de evaluarse. 0 deshabilita esta congelación (el heap se sigue congelando cuando un conjunto de empates en el límite crece demasiado).
Esto no afecta a las consultas GROUP BY keys LIMIT K sin ORDER BY, en las que la congelación siempre está deshabilitada: el plan para esta estructura contiene una ordenación generada automáticamente que solo compensa mientras el heap limita la tabla hash, por lo que congelarlo dejaría un plan más lento que el no optimizado.
group_by_top_k_optimization_shared_boundary
Paraenable_group_by_top_k_optimization: comparte el límite de omisión más estricto entre los threads de agregación. Cada thread publica el límite de su propio conjunto top-K una vez por bloque procesado, siempre que dicho límite se haya ajustado, y todos los threads omiten filas comparándolas con el mejor límite publicado, en lugar de hacerlo solo con el suyo. Si existe un conjunto de K claves estrictamente mejores que una fila, queda demostrado que esa fila no puede llegar al resultado final, sin importar qué thread contenga dichas claves; por tanto, compartir el límite no altera el resultado. Lo único que hace es permitir que los threads cuyas claves locales tienen una clasificación baja (p. ej., cuando los valores de clave están agrupados a lo largo de la tabla) omitan filas que, de otro modo, agregarían inútilmente.
Valores posibles:
- 0 — Deshabilitado.
- 1 — Habilitado.
group_by_two_level_threshold
A partir de cuántas claves comienza una agregación en dos niveles. 0: el umbral no se establece.group_by_two_level_threshold_bytes
A partir de qué tamaño, en bytes, del estado de agregación se empieza a usar una agregación en dos niveles. 0: el umbral no está establecido. La agregación en dos niveles se usa cuando se activa al menos uno de los umbrales.group_by_use_nulls
Cambia la forma en que la cláusula GROUP BY trata los tipos de las claves de agregación. Cuando se usan los especificadoresROLLUP, CUBE o GROUPING SETS, puede que algunas claves de agregación no se utilicen para generar determinadas filas de resultado.
Las columnas de estas claves se rellenan con el valor predeterminado o con NULL en las filas correspondientes, según esta configuración.
Valores posibles:
- 0 — Se usa el valor predeterminado del tipo de clave de agregación para generar los valores ausentes.
- 1 — ClickHouse ejecuta
GROUP BYtal como lo define el estándar SQL. Los tipos de las claves de agregación se convierten en Nullable. Las columnas de las claves de agregación correspondientes se rellenan con NULL en las filas en las que no se usaron.