Saltar al contenido principal

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.

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».
AjusteDescripción breve
max_memory_usageLa cantidad máxima de RAM que puede usarse para ejecutar una consulta en un solo servidor.
max_memory_usage_for_userLa cantidad máxima de RAM que puede usarse para ejecutar las consultas de un usuario en un solo servidor.
max_rows_to_readEl número máximo de filas que pueden leerse de una tabla al ejecutar una consulta.
max_bytes_to_readEl número máximo de bytes (de datos sin comprimir) que pueden leerse de una tabla al ejecutar una consulta.
read_overflow_mode_leafEstablece qué sucede cuando el volumen de datos leídos supera uno de los límites de los nodos hoja
max_rows_to_read_leafEl número máximo de filas que pueden leerse de una tabla local en un nodo hoja al ejecutar una consulta distribuida
max_bytes_to_read_leafEl número máximo de bytes (de datos sin comprimir) que pueden leerse de una tabla local en un nodo hoja al ejecutar una consulta distribuida.
read_overflow_mode_leafEstablece qué sucede cuando el volumen de datos leídos supera uno de los límites de los nodos hoja.
max_rows_to_group_byEl número máximo de claves únicas recibidas de la agregación.
group_by_overflow_modeEstablece qué sucede cuando el número de claves únicas para la agregación supera el límite
max_bytes_before_external_group_byHabilita o deshabilita la ejecución de cláusulas GROUP BY en memoria externa.
max_bytes_ratio_before_external_group_byLa proporción de la memoria disponible que puede usarse para GROUP BY. Una vez alcanzada, se usa memoria externa para la agregación.
max_bytes_before_external_sortHabilita o deshabilita la ejecución de cláusulas ORDER BY en memoria externa.
max_bytes_ratio_before_external_sortLa proporción de la memoria disponible que puede usarse para ORDER BY. Una vez alcanzada, se usa ordenación externa.
max_rows_to_sortEl número máximo de filas antes de ordenar. Permite limitar el consumo de memoria durante la ordenación.
max_bytes_to_sortEl número máximo de bytes antes de ordenar.
sort_overflow_modeEstablece qué sucede si el número de filas recibidas antes de ordenar supera uno de los límites.
max_result_rowsLimita el número de filas del resultado.
max_result_bytesLimita el tamaño del resultado en bytes (sin comprimir)
result_overflow_modeEstablece qué hacer si el volumen del resultado supera uno de los límites.
max_execution_timeEl tiempo máximo de ejecución de la consulta, en segundos.
timeout_overflow_modeEstablece qué hacer si la consulta se ejecuta durante más tiempo que max_execution_time o si el tiempo estimado de ejecución supera max_estimated_execution_time.
max_execution_time_leafSemánticamente similar a max_execution_time, pero solo se aplica en los nodos hoja para consultas distribuidas o remotas.
timeout_overflow_mode_leafEstablece qué sucede cuando la consulta en un nodo hoja se ejecuta durante más tiempo que max_execution_time_leaf.
min_execution_speedVelocidad mínima de ejecución en filas por segundo.
min_execution_speed_bytesEl número mínimo de bytes procesados por segundo durante la ejecución.
max_execution_speedEl número máximo de filas procesadas por segundo durante la ejecución.
max_execution_speed_bytesEl número máximo de bytes procesados por segundo durante la ejecución.
timeout_before_checking_execution_speedComprueba que la velocidad de ejecución no sea demasiado lenta (no inferior a min_execution_speed) una vez transcurrido el tiempo especificado, en segundos.
max_estimated_execution_timeTiempo máximo estimado de ejecución de la consulta, en segundos.
max_columns_to_readEl número máximo de columnas que se pueden leer de una tabla en una sola consulta.
max_temporary_columnsEl número máximo de columnas temporales que deben mantenerse en RAM simultáneamente al ejecutar una consulta, incluidas las columnas constantes.
max_temporary_non_const_columnsEl número máximo de columnas temporales que deben mantenerse en RAM simultáneamente al ejecutar una consulta, sin contar las columnas constantes.
max_subquery_depthEstablece qué ocurre si una consulta tiene más subconsultas anidadas que el número especificado.
max_ast_depthLa profundidad máxima de anidamiento del árbol sintáctico de una consulta.
max_ast_elementsEl número máximo de elementos en el árbol sintáctico de una consulta.
max_rows_in_setEl número máximo de filas de un conjunto de datos en la cláusula IN creada a partir de una subconsulta.
max_bytes_in_setEl número máximo de bytes (de datos sin comprimir) usados por un conjunto en la cláusula IN creada a partir de una subconsulta.
set_overflow_modeEstablece qué ocurre cuando el volumen de datos supera alguno de los límites.
max_rows_in_distinctEl número máximo de filas distintas al usar DISTINCT.
max_bytes_in_distinctEl número máximo de bytes del estado (en bytes sin comprimir) en memoria que utiliza una tabla hash al usar DISTINCT.
distinct_overflow_modeEstablece qué ocurre cuando el volumen de datos supera alguno de los límites.
max_rows_to_transferEl tamaño máximo (en filas) que puede pasarse a un servidor remoto o guardarse en una tabla temporal cuando se ejecuta la sección GLOBAL IN/JOIN.
max_bytes_to_transferEl número máximo de bytes (datos sin comprimir) que se puede pasar a un servidor remoto o guardar en una tabla temporal cuando se ejecuta la sección GLOBAL IN/JOIN.
transfer_overflow_modeEstablece qué ocurre cuando el volumen de datos supera alguno de los límites.
max_rows_in_joinLimita el número de filas de la tabla hash que se utiliza al unir tablas.
max_bytes_in_joinEl tamaño máximo, en bytes, de la tabla hash utilizada al unir tablas.
join_overflow_modeDefine qué acción realiza ClickHouse cuando se alcanza cualquiera de los siguientes límites de join.
max_partitions_per_insert_blockLimita el número máximo de particiones en un único bloque insertado y lanza una excepción si el bloque contiene demasiadas particiones.
throw_on_max_partitions_per_insert_blockPermite controlar el comportamiento cuando se alcanza max_partitions_per_insert_block.
max_temporary_data_on_disk_size_for_userLa cantidad máxima de datos, en bytes, consumida por archivos temporales en disco para todas las consultas del usuario que se ejecutan simultáneamente.
max_temporary_data_on_disk_size_for_queryLa cantidad máxima de datos, en bytes, consumida por archivos temporales en disco para todas las consultas que se ejecutan simultáneamente.
max_sessions_for_userNúmero máximo de sesiones simultáneas por usuario autenticado en el servidor ClickHouse.
max_partitions_to_readLimita el número máximo de particiones a las que se puede acceder en una sola consulta.

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 10 de junio de 2026