Skip to main content

Descripción general

Como parte de la configuración, ClickHouse ofrece la posibilidad de imponer restricciones sobre la complejidad de las consultas. Esto ayuda a proteger frente a consultas que pueden consumir muchos recursos, lo que garantiza una ejecución más segura y predecible, especialmente al usar la interfaz de usuario. Casi todas las restricciones solo se aplican a las consultas SELECT, y en el procesamiento distribuido de consultas, las restricciones se aplican por separado en cada servidor. Por lo general, ClickHouse comprueba las restricciones solo después de que las partes de datos se hayan procesado por completo, en lugar de comprobarlas para cada fila. Esto puede dar lugar a situaciones en las que se infrinjan las restricciones mientras se está procesando la parte de datos.

Ajustes de overflow_mode

La mayoría de las restricciones también tienen un ajuste overflow_mode, que define qué ocurre cuando se supera el límite y puede tomar uno de estos dos valores:
  • throw: lanzar una excepción (predeterminado).
  • break: detener la ejecución de la consulta y devolver un resultado parcial, como si los datos de origen se hubieran agotado.
Cuando una consulta se detiene mediante max_execution_time con break, algunas operaciones no pueden devolver de forma segura un resultado parcial, por lo que, en lugar de un resultado menor, se detienen sin producir ninguno. Una función que calcula un único valor se detiene sin producir dicho valor; que la detención llegue también al client como un error TIMEOUT_EXCEEDED, o solo como un resultado ausente, depende de dónde se haya interrumpido la consulta. Una mutación de una tabla Memory que quede incompleta debido al timeout mantiene la tabla sin cambios e informa TIMEOUT_EXCEEDED. Un INSERT puede informar QUERY_WAS_CANCELLED. Algunas operaciones que esperan a otras réplicas o a trabajo en segundo plano no se detienen en max_execution_time en absoluto: una escritura con cuórum sigue esperando hasta que se satisfaga su cuórum, o informa UNKNOWN_STATUS_OF_INSERT si insert_quorum_timeout transcurre primero.

Configuración de group_by_overflow_mode

La configuración group_by_overflow_mode también puede tomar el valor any:
  • any : continúa la agregación para las claves que ya entraron en el conjunto, pero no agrega nuevas claves al conjunto.

Lista de ajustes

Los siguientes ajustes se utilizan para aplicar restricciones a la complejidad de las consultas.
Las restricciones sobre la «cantidad máxima de algo» pueden tomar el valor 0, lo que significa que es «sin restricciones».

Configuraciones obsoletas

Las siguientes configuraciones están obsoletas

max_pipeline_depth

Profundidad máxima del pipeline. Corresponde al número de transformaciones por las que pasa cada bloque de datos durante el procesamiento de la consulta. Se contabiliza dentro de los límites de un único servidor. Si la profundidad del pipeline es mayor, se lanza una excepción.
Última modificación el 14 de agosto de 2026