Pular para o conteúdo principal

Visão geral

Como parte das configurações, o ClickHouse oferece a possibilidade de impor restrições à complexidade das consultas. Isso ajuda a proteger contra consultas potencialmente intensivas em recursos, garantindo uma execução mais segura e previsível, especialmente na interface do usuário. Quase todas as restrições se aplicam apenas a consultas SELECT e, no processamento distribuído de consultas, elas são aplicadas separadamente em cada servidor. Em geral, o ClickHouse verifica as restrições somente depois que as partes de dados são totalmente processadas, em vez de verificá-las para cada linha. Isso pode levar a situações em que as restrições sejam violadas enquanto a parte está sendo processada.

Configurações de overflow_mode

A maioria das restrições também tem uma configuração overflow_mode, que define o que acontece quando o limite é excedido e pode assumir um de dois valores:
  • throw: gera uma exceção (padrão).
  • break: interrompe a execução da consulta e retorna o resultado parcial, como se os dados de origem tivessem se esgotado.

Configurações de group_by_overflow_mode

A configuração group_by_overflow_mode também aceita o valor any:
  • any : continua a agregação das chaves que entraram no conjunto, mas não adiciona novas chaves ao conjunto.

Lista de configurações

As configurações a seguir são usadas para aplicar restrições à complexidade das consultas.
As restrições de “quantidade máxima de algo” podem ter o valor 0, o que significa “sem restrição”.
ConfiguraçãoBreve descrição
max_memory_usageA quantidade máxima de RAM usada para executar uma consulta em um único servidor.
max_memory_usage_for_userA quantidade máxima de RAM usada para executar as consultas de um usuário em um único servidor.
max_rows_to_readO número máximo de linhas que podem ser lidas de uma tabela ao executar uma consulta.
max_bytes_to_readO número máximo de bytes (de dados não compactados) que podem ser lidos de uma tabela ao executar uma consulta.
read_overflow_mode_leafDefine o que acontece quando o volume de dados lidos excede um dos limites do nó folha
max_rows_to_read_leafO número máximo de linhas que podem ser lidas de uma tabela local em um nó folha ao executar uma consulta distribuída
max_bytes_to_read_leafO número máximo de bytes (de dados não compactados) que podem ser lidos de uma tabela local em um nó folha ao executar uma consulta distribuída.
read_overflow_mode_leafDefine o que acontece quando o volume de dados lidos excede um dos limites do nó folha.
max_rows_to_group_byO número máximo de chaves exclusivas recebidas da agregação.
group_by_overflow_modeDefine o que acontece quando o número de chaves exclusivas para agregação excede o limite
max_bytes_before_external_group_byHabilita ou desabilita a execução de cláusulas GROUP BY em memória externa.
max_bytes_ratio_before_external_group_byA proporção da memória disponível permitida para GROUP BY. Quando esse limite é atingido, a memória externa é usada para agregação.
max_bytes_before_external_sortHabilita ou desabilita a execução de cláusulas ORDER BY em memória externa.
max_bytes_ratio_before_external_sortA proporção da memória disponível permitida para ORDER BY. Quando esse limite é atingido, a ordenação externa é usada.
max_rows_to_sortO número máximo de linhas antes da ordenação. Permite limitar o consumo de memória durante a ordenação.
max_bytes_to_sortO número máximo de bytes antes da ordenação.
sort_overflow_modeDefine o que acontece se o número de linhas recebidas antes da ordenação exceder um dos limites.
max_result_rowsLimita o número de linhas no resultado.
max_result_bytesLimita o tamanho do resultado em bytes (não compactados)
result_overflow_modeDefine o que fazer se o volume do resultado exceder um dos limites.
max_execution_timeO tempo máximo de execução da consulta, em segundos.
timeout_overflow_modeDefine o que fazer se a consulta for executada por mais tempo que max_execution_time ou se o tempo estimado de execução for maior que max_estimated_execution_time.
max_execution_time_leafSemelhante, em termos semânticos, a max_execution_time, mas aplicado apenas a nós folha para consultas distribuídas ou remotas.
timeout_overflow_mode_leafDefine o que acontece quando a consulta em um nó folha é executada por mais tempo que max_execution_time_leaf.
min_execution_speedVelocidade mínima de execução em linhas por segundo.
min_execution_speed_bytesO número mínimo de bytes processados por segundo durante a execução.
max_execution_speedO número máximo de linhas processadas por segundo durante a execução.
max_execution_speed_bytesO número máximo de bytes processados por segundo durante a execução.
timeout_before_checking_execution_speedVerifica, após o tempo especificado em segundos, se a velocidade de execução não está muito baixa (isto é, se não é inferior a min_execution_speed).
max_estimated_execution_timeTempo máximo estimado de execução da consulta, em segundos.
max_columns_to_readO número máximo de colunas que podem ser lidas de uma tabela em uma única consulta.
max_temporary_columnsO número máximo de colunas temporárias que devem ser mantidas na RAM simultaneamente durante a execução de uma consulta, incluindo colunas constantes.
max_temporary_non_const_columnsO número máximo de colunas temporárias que devem ser mantidas na RAM simultaneamente durante a execução de uma consulta, sem contar as colunas constantes.
max_subquery_depthDefine o que acontece se uma consulta tiver mais subconsultas aninhadas do que o número especificado.
max_ast_depthA profundidade máxima de aninhamento da árvore sintática de uma consulta.
max_ast_elementsO número máximo de elementos na árvore sintática de uma consulta.
max_rows_in_setO número máximo de linhas de um conjunto de dados na cláusula IN criado a partir de uma subconsulta.
max_bytes_in_setO número máximo de bytes (de dados não comprimidos) usados por um conjunto na cláusula IN criado a partir de uma subconsulta.
set_overflow_modeDefine o que acontece quando a quantidade de dados excede um dos limites.
max_rows_in_distinctO número máximo de linhas distintas ao usar DISTINCT.
max_bytes_in_distinctO número máximo de bytes do estado (em bytes não comprimidos) na memória, usado por uma tabela hash ao usar DISTINCT.
distinct_overflow_modeDefine o que acontece quando a quantidade de dados excede um dos limites.
max_rows_to_transferTamanho máximo (em linhas) que pode ser transferido para um servidor remoto ou salvo em uma tabela temporária quando a seção GLOBAL IN/JOIN é executada.
max_bytes_to_transferO número máximo de bytes (dados não comprimidos) que pode ser transferido para um servidor remoto ou salvo em uma tabela temporária quando a seção GLOBAL IN/JOIN é executada.
transfer_overflow_modeDefine o que acontece quando a quantidade de dados excede um dos limites.
max_rows_in_joinLimita o número de linhas na tabela hash usada ao fazer JOIN entre tabelas.
max_bytes_in_joinO tamanho máximo, em bytes, da tabela hash usada ao fazer JOIN entre tabelas.
join_overflow_modeDefine qual ação o ClickHouse executa quando qualquer um dos limites de join a seguir é atingido.
max_partitions_per_insert_blockLimita o número máximo de partições em um único bloco inserido, e uma exceção é lançada se o bloco contiver partições demais.
throw_on_max_partitions_per_insert_blockPermite controlar o comportamento quando max_partitions_per_insert_block é atingido.
max_temporary_data_on_disk_size_for_userA quantidade máxima de dados consumida por arquivos temporários em disco, em bytes, para todas as consultas do usuário executadas concorrentemente.
max_temporary_data_on_disk_size_for_queryA quantidade máxima de dados consumida por arquivos temporários em disco, em bytes, para todas as consultas executadas concorrentemente.
max_sessions_for_userNúmero máximo de sessões simultâneas por usuário autenticado no servidor ClickHouse.
max_partitions_to_readLimita o número máximo de partições que podem ser acessadas em uma única consulta.

Configurações obsoletas

As configurações abaixo estão obsoletas

max_pipeline_depth

Profundidade máxima do pipeline. Corresponde ao número de transformações pelas quais cada bloco de dados passa durante o processamento da consulta. A contagem é feita dentro dos limites de um único servidor. Se a profundidade do pipeline exceder esse valor, uma exceção será lançada.
Última modificação em 10 de junho de 2026