Skip to main content

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.
Quando uma consulta é interrompida por max_execution_time com break, algumas operações não conseguem retornar um resultado parcial com segurança; portanto, em vez de produzir um resultado menor, são interrompidas sem produzir resultado algum. Uma função que calcula um único valor é interrompida sem produzir esse valor; o fato de a interrupção também chegar ao cliente como um erro TIMEOUT_EXCEEDED, ou apenas como a ausência de um resultado, depende de onde a consulta foi interrompida. Uma mutação em uma tabela Memory deixada incompleta pelo timeout mantém a tabela inalterada e reporta TIMEOUT_EXCEEDED. Um INSERT pode reportar QUERY_WAS_CANCELLED. Algumas operações que aguardam outras réplicas ou trabalho em segundo plano não são interrompidas por max_execution_time: uma gravação com quórum continua aguardando até que seu quórum seja atingido ou reporta UNKNOWN_STATUS_OF_INSERT se insert_quorum_timeout expirar primeiro.

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çõ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 14 de agosto de 2026