> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-trino-dialect.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Configurações que restringem a complexidade das consultas.

# Restrições na complexidade das consultas

<div id="overview">
  ## Visão geral
</div>

Como parte das [configurações](/pt-BR/concepts/features/configuration/settings/overview), 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.

<div id="overflow_mode_setting">
  ## Configurações de `overflow_mode`
</div>

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.

<div id="group_by_overflow_mode_settings">
  ## Configurações de `group_by_overflow_mode`
</div>

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.

<div id="relevant-settings">
  ## Lista de configurações
</div>

As configurações a seguir são usadas para aplicar restrições à complexidade das consultas.

<Note>
  As restrições de "quantidade máxima de algo" podem ter o valor `0`,
  o que significa "sem restrição".
</Note>

| Configuração                                                                                                                                      | Descrição breve                                                                                                                                                                                                        |
| ------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [`max_memory_usage`](/pt-BR/reference/settings/session-settings/max-memory-usage#max_memory_usage)                                                | A quantidade máxima de RAM a ser usada para executar uma consulta em um único servidor.                                                                                                                                |
| [`max_memory_usage_for_user`](/pt-BR/reference/settings/session-settings/max-memory-usage#max_memory_usage_for_user)                              | A quantidade máxima de RAM a ser usada para executar as consultas de um usuário em um único servidor.                                                                                                                  |
| [`max_rows_to_read`](/pt-BR/reference/settings/session-settings/max-rows#max_rows_to_read)                                                        | O número máximo de linhas que podem ser lidas de uma tabela ao executar uma consulta.                                                                                                                                  |
| [`max_bytes_to_read`](/pt-BR/reference/settings/session-settings/max-bytes#max_bytes_to_read)                                                     | O número máximo de bytes (de dados descomprimidos) que podem ser lidos de uma tabela ao executar uma consulta.                                                                                                         |
| [`read_overflow_mode_leaf`](/pt-BR/reference/settings/session-settings/read-overflow-mode#read_overflow_mode_leaf)                                | Define o que acontece quando o volume de dados lidos excede um dos limites dos nós leaf.                                                                                                                               |
| [`max_rows_to_read_leaf`](/pt-BR/reference/settings/session-settings/max-rows#max_rows_to_read_leaf)                                              | O número máximo de linhas que podem ser lidas de uma tabela local em um nó leaf ao executar uma consulta distribuída.                                                                                                  |
| [`max_bytes_to_read_leaf`](/pt-BR/reference/settings/session-settings/max-bytes#max_bytes_to_read_leaf)                                           | O número máximo de bytes (de dados descomprimidos) que podem ser lidos de uma tabela local em um nó leaf ao executar uma consulta distribuída.                                                                         |
| [`read_overflow_mode_leaf`](/pt-BR/reference/settings/session-settings/read-overflow-mode#read_overflow_mode_leaf)                                | Define o que acontece quando o volume de dados lidos excede um dos limites dos nós leaf.                                                                                                                               |
| [`max_rows_to_group_by`](/pt-BR/reference/settings/session-settings/max-rows#max_rows_to_group_by)                                                | O número máximo de chaves únicas recebidas da agregação.                                                                                                                                                               |
| [`group_by_overflow_mode`](/pt-BR/reference/settings/session-settings/group-by#group_by_overflow_mode)                                            | Define o que acontece quando o número de chaves únicas para agregação excede o limite.                                                                                                                                 |
| [`max_bytes_before_external_group_by`](/pt-BR/reference/settings/session-settings/max-bytes#max_bytes_before_external_group_by)                   | Habilita ou desabilita a execução de cláusulas `GROUP BY` em memória externa.                                                                                                                                          |
| [`max_bytes_ratio_before_external_group_by`](/pt-BR/reference/settings/session-settings/max-bytes#max_bytes_ratio_before_external_group_by)       | A razão da memória disponível permitida para `GROUP BY`. Quando esse valor é atingido, a memória externa é usada para agregação.                                                                                       |
| [`max_bytes_before_external_sort`](/pt-BR/reference/settings/session-settings/max-bytes#max_bytes_before_external_sort)                           | Habilita ou desabilita a execução de cláusulas `ORDER BY` em memória externa.                                                                                                                                          |
| [`max_bytes_ratio_before_external_sort`](/pt-BR/reference/settings/session-settings/max-bytes#max_bytes_ratio_before_external_sort)               | A razão da memória disponível permitida para `ORDER BY`. Quando esse valor é atingido, a ordenação externa é usada.                                                                                                    |
| [`max_rows_to_sort`](/pt-BR/reference/settings/session-settings/max-rows#max_rows_to_sort)                                                        | O número máximo de linhas antes da ordenação. Permite limitar o consumo de memória durante a ordenação.                                                                                                                |
| [`max_bytes_to_sort`](/pt-BR/reference/settings/session-settings/max-bytes#max_bytes_to_sort)                                                     | O número máximo de bytes antes da ordenação.                                                                                                                                                                           |
| [`sort_overflow_mode`](/pt-BR/reference/settings/session-settings/other#sort_overflow_mode)                                                       | Define o que acontece se o número de linhas recebidas antes da ordenação exceder um dos limites.                                                                                                                       |
| [`max_result_rows`](/pt-BR/reference/settings/session-settings/max-result#max_result_rows)                                                        | Limita o número de linhas no resultado.                                                                                                                                                                                |
| [`max_result_bytes`](/pt-BR/reference/settings/session-settings/max-result#max_result_bytes)                                                      | Limita o tamanho do resultado em bytes (descomprimidos).                                                                                                                                                               |
| [`result_overflow_mode`](/pt-BR/reference/settings/session-settings/other#result_overflow_mode)                                                   | Define o que fazer se o volume do resultado exceder um dos limites.                                                                                                                                                    |
| [`max_execution_time`](/pt-BR/reference/settings/session-settings/max-execution#max_execution_time)                                               | O tempo máximo de execução da consulta, em segundos.                                                                                                                                                                   |
| [`timeout_overflow_mode`](/pt-BR/reference/settings/session-settings/timeout-overflow-mode#timeout_overflow_mode)                                 | Define 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` (a estimativa é verificada apenas com `throw`). |
| [`max_execution_time_leaf`](/pt-BR/reference/settings/session-settings/max-execution#max_execution_time_leaf)                                     | Semanticamente semelhante a `max_execution_time`, mas aplicado apenas aos nós leaf em consultas distribuídas ou remotas.                                                                                               |
| [`timeout_overflow_mode_leaf`](/pt-BR/reference/settings/session-settings/timeout-overflow-mode#timeout_overflow_mode_leaf)                       | Define o que acontece quando a consulta em um nó leaf é executada por mais tempo que `max_execution_time_leaf`.                                                                                                        |
| [`min_execution_speed`](/pt-BR/reference/settings/session-settings/min-execution-speed#min_execution_speed)                                       | Velocidade mínima de execução em linhas por segundo.                                                                                                                                                                   |
| [`min_execution_speed_bytes`](/pt-BR/reference/settings/session-settings/min-execution-speed#min_execution_speed_bytes)                           | O número mínimo de bytes processados por segundo durante a execução.                                                                                                                                                   |
| [`max_execution_speed`](/pt-BR/reference/settings/session-settings/max-execution#max_execution_speed)                                             | O número máximo de linhas processadas por segundo durante a execução.                                                                                                                                                  |
| [`max_execution_speed_bytes`](/pt-BR/reference/settings/session-settings/max-execution#max_execution_speed_bytes)                                 | O número máximo de bytes processados por segundo durante a execução.                                                                                                                                                   |
| [`timeout_before_checking_execution_speed`](/pt-BR/reference/settings/session-settings/other#timeout_before_checking_execution_speed)             | Verifica se a velocidade de execução não está muito baixa (não inferior a `min_execution_speed`) após o tempo especificado, em segundos, expirar.                                                                      |
| [`max_estimated_execution_time`](/pt-BR/reference/settings/session-settings/max#max_estimated_execution_time)                                     | Tempo máximo estimado de execução da consulta, em segundos.                                                                                                                                                            |
| [`max_columns_to_read`](/pt-BR/reference/settings/session-settings/max#max_columns_to_read)                                                       | O número máximo de colunas que podem ser lidas de uma tabela em uma única consulta.                                                                                                                                    |
| [`max_temporary_columns`](/pt-BR/reference/settings/session-settings/max-temporary#max_temporary_columns)                                         | O 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_columns`](/pt-BR/reference/settings/session-settings/max-temporary#max_temporary_non_const_columns)                     | O 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_depth`](/pt-BR/reference/settings/session-settings/max#max_subquery_depth)                                                         | Define o que acontece se uma consulta tiver mais subconsultas aninhadas do que o número especificado.                                                                                                                  |
| [`max_ast_depth`](/pt-BR/reference/settings/session-settings/max-ast#max_ast_depth)                                                               | A profundidade máxima de aninhamento da árvore de sintaxe de uma consulta.                                                                                                                                             |
| [`max_ast_elements`](/pt-BR/reference/settings/session-settings/max-ast#max_ast_elements)                                                         | O número máximo de elementos em uma árvore de sintaxe de consulta.                                                                                                                                                     |
| [`max_rows_in_set`](/pt-BR/reference/settings/session-settings/max-rows#max_rows_in_set)                                                          | O número máximo de linhas de um conjunto de dados na cláusula IN criado a partir de uma subconsulta.                                                                                                                   |
| [`max_bytes_in_set`](/pt-BR/reference/settings/session-settings/max-bytes#max_bytes_in_set)                                                       | O 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_mode`](/pt-BR/reference/settings/session-settings/other#set_overflow_mode)                                                         | Define o que acontece quando a quantidade de dados excede um dos limites.                                                                                                                                              |
| [`max_rows_in_distinct`](/pt-BR/reference/settings/session-settings/max-rows#max_rows_in_distinct)                                                | O número máximo de linhas distintas ao usar DISTINCT.                                                                                                                                                                  |
| [`max_bytes_in_distinct`](/pt-BR/reference/settings/session-settings/max-bytes#max_bytes_in_distinct)                                             | O 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_mode`](/pt-BR/reference/settings/session-settings/other#distinct_overflow_mode)                                               | Define o que acontece quando a quantidade de dados excede um dos limites.                                                                                                                                              |
| [`max_rows_to_transfer`](/pt-BR/reference/settings/session-settings/max-rows#max_rows_to_transfer)                                                | Tamanho máximo (em linhas) que pode ser passado para um servidor remoto ou salvo em uma tabela temporária quando a cláusula GLOBAL IN/JOIN é executada.                                                                |
| [`max_bytes_to_transfer`](/pt-BR/reference/settings/session-settings/max-bytes#max_bytes_to_transfer)                                             | O número máximo de bytes (dados não comprimidos) que pode ser passado para um servidor remoto ou salvo em uma tabela temporária quando a cláusula GLOBAL IN/JOIN é executada.                                          |
| [`transfer_overflow_mode`](/pt-BR/reference/settings/session-settings/other#transfer_overflow_mode)                                               | Define o que acontece quando a quantidade de dados excede um dos limites.                                                                                                                                              |
| [`max_rows_in_join`](/pt-BR/reference/settings/session-settings/max-rows#max_rows_in_join)                                                        | Limita o número de linhas na tabela hash usada ao fazer JOIN entre tabelas.                                                                                                                                            |
| [`max_bytes_in_join`](/pt-BR/reference/settings/session-settings/max-bytes#max_bytes_in_join)                                                     | O tamanho máximo, em bytes, da tabela hash usada ao fazer JOIN entre tabelas.                                                                                                                                          |
| [`join_overflow_mode`](/pt-BR/reference/settings/session-settings/join#join_overflow_mode)                                                        | Define qual ação o ClickHouse executa quando qualquer um dos limites de join a seguir é atingido.                                                                                                                      |
| [`max_partitions_per_insert_block`](/pt-BR/reference/settings/session-settings/max-partitions#max_partitions_per_insert_block)                    | Limita 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_block`](/pt-BR/reference/settings/session-settings/throw-on#throw_on_max_partitions_per_insert_block)        | Permite controlar o comportamento quando `max_partitions_per_insert_block` é atingido.                                                                                                                                 |
| [`max_temporary_data_on_disk_size_for_user`](/pt-BR/reference/settings/session-settings/max-temporary#max_temporary_data_on_disk_size_for_user)   | A 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_query`](/pt-BR/reference/settings/session-settings/max-temporary#max_temporary_data_on_disk_size_for_query) | A quantidade máxima de dados consumida por arquivos temporários em disco, em bytes, para todas as consultas executadas concorrentemente.                                                                               |
| [`max_sessions_for_user`](/pt-BR/reference/settings/session-settings/max#max_sessions_for_user)                                                   | Número máximo de sessões simultâneas por usuário autenticado no servidor ClickHouse.                                                                                                                                   |
| [`max_partitions_to_read`](/pt-BR/reference/settings/session-settings/max-partitions#max_partitions_to_read)                                      | Limita o número máximo de partições que podem ser acessadas em uma única consulta.                                                                                                                                     |

<div id="obsolete-settings">
  ## Configurações obsoletas
</div>

<Note>
  As configurações abaixo estão obsoletas
</Note>

<div id="max-pipeline-depth">
  ### max\_pipeline\_depth
</div>

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.
