> ## 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.

> Paramètres qui restreignent la complexité des requêtes.

# Restrictions sur la complexité des requêtes

<div id="overview">
  ## Vue d’ensemble
</div>

Dans le cadre des [paramètres](/fr/concepts/features/configuration/settings/overview), ClickHouse offre
la possibilité d’imposer des restrictions sur la complexité des requêtes. Cela permet de se prémunir contre
des requêtes potentiellement très gourmandes en ressources et de garantir une exécution plus sûre et plus prévisible,
en particulier lors de l’utilisation de l’interface utilisateur.

Presque toutes les restrictions ne s’appliquent qu’aux requêtes `SELECT` et, pour le traitement distribué
des requêtes, elles sont appliquées séparément sur chaque serveur.

En règle générale, ClickHouse ne vérifie les restrictions qu’une fois les parties de données
entièrement traitées, plutôt que de les vérifier pour chaque ligne. Il peut donc arriver
que les restrictions soient dépassées pendant le traitement
d’une partie de données.

<div id="overflow_mode_setting">
  ## Paramètres de `overflow_mode`
</div>

La plupart des restrictions ont également un paramètre `overflow_mode`, qui définit ce qui se passe
lorsque la limite est dépassée, et peut prendre l'une des deux valeurs suivantes :

* `throw` : lever une exception (par défaut).
* `break` : arrêter l'exécution de la requête et renvoyer un résultat partiel, comme si les
  données d'origine étaient épuisées.

Lorsqu’une requête est arrêtée par `max_execution_time` avec `break`, certaines opérations ne peuvent pas renvoyer un
résultat partiel en toute sécurité et s’arrêtent donc sans produire de résultat, plutôt que de renvoyer un résultat réduit. Une fonction
qui calcule une seule valeur s’arrête sans produire cette valeur ; le fait que l’arrêt atteigne également le
client sous forme d’erreur `TIMEOUT_EXCEEDED`, ou seulement sous forme de résultat manquant, dépend de l’endroit où la requête a été
interrompue. Une mutation de table `Memory` laissée incomplète par le délai d’expiration laisse la table inchangée et
signale `TIMEOUT_EXCEEDED`. Un `INSERT` peut signaler `QUERY_WAS_CANCELLED`. Certaines opérations qui attendent
d’autres répliques ou un traitement en arrière-plan ne s’arrêtent pas du tout à `max_execution_time` : une écriture avec quorum
continue d’attendre jusqu’à ce que son quorum soit atteint, ou signale `UNKNOWN_STATUS_OF_INSERT` si
`insert_quorum_timeout` expire en premier.

<div id="group_by_overflow_mode_settings">
  ## Paramètres de `group_by_overflow_mode`
</div>

Le paramètre `group_by_overflow_mode` accepte également
la valeur `any` :

* `any` : poursuivre l’agrégation pour les clés déjà présentes dans l’ensemble, mais ne pas
  ajouter de nouvelles clés à l’ensemble.

<div id="relevant-settings">
  ## Liste des paramètres
</div>

Les paramètres suivants servent à appliquer des restrictions à la complexité des requêtes.

<Note>
  Les restrictions de type « quantité maximale de quelque chose » peuvent prendre la valeur `0`,
  ce qui signifie qu'elles sont « sans restriction ».
</Note>

| Paramètre                                                                                                                                      | Description succincte                                                                                                                                                                                           |
| ---------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [`max_memory_usage`](/fr/reference/settings/session-settings/max-memory-usage#max_memory_usage)                                                | Quantité maximale de RAM utilisable pour exécuter une requête sur un seul serveur.                                                                                                                              |
| [`max_memory_usage_for_user`](/fr/reference/settings/session-settings/max-memory-usage#max_memory_usage_for_user)                              | Quantité maximale de RAM utilisable pour exécuter les requêtes d’un utilisateur sur un seul serveur.                                                                                                            |
| [`max_rows_to_read`](/fr/reference/settings/session-settings/max-rows#max_rows_to_read)                                                        | Nombre maximal de lignes pouvant être lues à partir d’une table lors de l’exécution d’une requête.                                                                                                              |
| [`max_bytes_to_read`](/fr/reference/settings/session-settings/max-bytes#max_bytes_to_read)                                                     | Nombre maximal d’octets (de données non compressées) pouvant être lus à partir d’une table lors de l’exécution d’une requête.                                                                                   |
| [`read_overflow_mode_leaf`](/fr/reference/settings/session-settings/read-overflow-mode#read_overflow_mode_leaf)                                | Définit le comportement lorsque le volume de données lues dépasse l’une des limites des nœuds feuille.                                                                                                          |
| [`max_rows_to_read_leaf`](/fr/reference/settings/session-settings/max-rows#max_rows_to_read_leaf)                                              | Nombre maximal de lignes pouvant être lues à partir d’une table locale sur un nœud feuille lors de l’exécution d’une requête distribuée.                                                                        |
| [`max_bytes_to_read_leaf`](/fr/reference/settings/session-settings/max-bytes#max_bytes_to_read_leaf)                                           | Nombre maximal d’octets (de données non compressées) pouvant être lus à partir d’une table locale sur un nœud feuille lors de l’exécution d’une requête distribuée.                                             |
| [`read_overflow_mode_leaf`](/fr/reference/settings/session-settings/read-overflow-mode#read_overflow_mode_leaf)                                | Définit le comportement lorsque le volume de données lues dépasse l’une des limites des nœuds feuille.                                                                                                          |
| [`max_rows_to_group_by`](/fr/reference/settings/session-settings/max-rows#max_rows_to_group_by)                                                | Nombre maximal de clés uniques issues de l’agrégation.                                                                                                                                                          |
| [`group_by_overflow_mode`](/fr/reference/settings/session-settings/group-by#group_by_overflow_mode)                                            | Définit le comportement lorsque le nombre de clés uniques pour l’agrégation dépasse la limite.                                                                                                                  |
| [`max_bytes_before_external_group_by`](/fr/reference/settings/session-settings/max-bytes#max_bytes_before_external_group_by)                   | Active ou désactive l’exécution des clauses `GROUP BY` en mémoire externe.                                                                                                                                      |
| [`max_bytes_ratio_before_external_group_by`](/fr/reference/settings/session-settings/max-bytes#max_bytes_ratio_before_external_group_by)       | Ratio de mémoire disponible autorisé pour `GROUP BY`. Une fois ce seuil atteint, la mémoire externe est utilisée pour l’agrégation.                                                                             |
| [`max_bytes_before_external_sort`](/fr/reference/settings/session-settings/max-bytes#max_bytes_before_external_sort)                           | Active ou désactive l’exécution des clauses `ORDER BY` en mémoire externe.                                                                                                                                      |
| [`max_bytes_ratio_before_external_sort`](/fr/reference/settings/session-settings/max-bytes#max_bytes_ratio_before_external_sort)               | Ratio de mémoire disponible autorisé pour `ORDER BY`. Une fois ce seuil atteint, le tri externe est utilisé.                                                                                                    |
| [`max_rows_to_sort`](/fr/reference/settings/session-settings/max-rows#max_rows_to_sort)                                                        | Nombre maximal de lignes avant le tri. Permet de limiter la consommation de mémoire lors du tri.                                                                                                                |
| [`max_bytes_to_sort`](/fr/reference/settings/session-settings/max-bytes#max_bytes_to_sort)                                                     | Nombre maximal d’octets avant le tri.                                                                                                                                                                           |
| [`sort_overflow_mode`](/fr/reference/settings/session-settings/other#sort_overflow_mode)                                                       | Définit le comportement si le nombre de lignes reçues avant le tri dépasse l’une des limites.                                                                                                                   |
| [`max_result_rows`](/fr/reference/settings/session-settings/max-result#max_result_rows)                                                        | Limite le nombre de lignes dans le résultat.                                                                                                                                                                    |
| [`max_result_bytes`](/fr/reference/settings/session-settings/max-result#max_result_bytes)                                                      | Limite la taille du résultat en octets (non compressés).                                                                                                                                                        |
| [`result_overflow_mode`](/fr/reference/settings/session-settings/other#result_overflow_mode)                                                   | Définit le comportement si le volume du résultat dépasse l’une des limites.                                                                                                                                     |
| [`max_execution_time`](/fr/reference/settings/session-settings/max-execution#max_execution_time)                                               | Temps d’exécution maximal d’une requête, en secondes.                                                                                                                                                           |
| [`timeout_overflow_mode`](/fr/reference/settings/session-settings/timeout-overflow-mode#timeout_overflow_mode)                                 | Définit le comportement si la requête s’exécute plus longtemps que `max_execution_time` ou si le temps d’exécution estimé dépasse `max_estimated_execution_time` (l’estimation n’est vérifiée qu’avec `throw`). |
| [`max_execution_time_leaf`](/fr/reference/settings/session-settings/max-execution#max_execution_time_leaf)                                     | Similaire sur le plan sémantique à `max_execution_time`, mais s’applique uniquement aux nœuds feuille pour les requêtes distribuées ou distantes.                                                               |
| [`timeout_overflow_mode_leaf`](/fr/reference/settings/session-settings/timeout-overflow-mode#timeout_overflow_mode_leaf)                       | Définit le comportement lorsque la requête sur un nœud feuille s’exécute plus longtemps que `max_execution_time_leaf`.                                                                                          |
| [`min_execution_speed`](/fr/reference/settings/session-settings/min-execution-speed#min_execution_speed)                                       | Vitesse d’exécution minimale en lignes par seconde.                                                                                                                                                             |
| [`min_execution_speed_bytes`](/fr/reference/settings/session-settings/min-execution-speed#min_execution_speed_bytes)                           | Nombre minimal d’octets traités par seconde.                                                                                                                                                                    |
| [`max_execution_speed`](/fr/reference/settings/session-settings/max-execution#max_execution_speed)                                             | Nombre maximal de lignes traitées par seconde.                                                                                                                                                                  |
| [`max_execution_speed_bytes`](/fr/reference/settings/session-settings/max-execution#max_execution_speed_bytes)                                 | Nombre maximal d’octets traités par seconde.                                                                                                                                                                    |
| [`timeout_before_checking_execution_speed`](/fr/reference/settings/session-settings/other#timeout_before_checking_execution_speed)             | Vérifie, une fois le délai spécifié en secondes écoulé, que la vitesse d’exécution n’est pas trop faible (c’est-à-dire qu’elle n’est pas inférieure à `min_execution_speed`).                                   |
| [`max_estimated_execution_time`](/fr/reference/settings/session-settings/max#max_estimated_execution_time)                                     | Temps d’exécution estimé maximal d’une requête, en secondes.                                                                                                                                                    |
| [`max_columns_to_read`](/fr/reference/settings/session-settings/max#max_columns_to_read)                                                       | Le nombre maximal de colonnes pouvant être lues depuis une table dans une seule requête.                                                                                                                        |
| [`max_temporary_columns`](/fr/reference/settings/session-settings/max-temporary#max_temporary_columns)                                         | Le nombre maximal de colonnes temporaires devant être conservées simultanément en RAM lors de l’exécution d’une requête, y compris les colonnes constantes.                                                     |
| [`max_temporary_non_const_columns`](/fr/reference/settings/session-settings/max-temporary#max_temporary_non_const_columns)                     | Le nombre maximal de colonnes temporaires devant être conservées simultanément en RAM lors de l’exécution d’une requête, sans compter les colonnes constantes.                                                  |
| [`max_subquery_depth`](/fr/reference/settings/session-settings/max#max_subquery_depth)                                                         | Définit ce qui se passe si une requête contient plus de sous-requêtes imbriquées que le nombre spécifié.                                                                                                        |
| [`max_ast_depth`](/fr/reference/settings/session-settings/max-ast#max_ast_depth)                                                               | La profondeur maximale d’imbrication de l’arbre syntaxique d’une requête.                                                                                                                                       |
| [`max_ast_elements`](/fr/reference/settings/session-settings/max-ast#max_ast_elements)                                                         | Le nombre maximal d’éléments dans l’arbre syntaxique d’une requête.                                                                                                                                             |
| [`max_rows_in_set`](/fr/reference/settings/session-settings/max-rows#max_rows_in_set)                                                          | Le nombre maximal de lignes pour un ensemble de données dans la clause IN créé à partir d’une sous-requête.                                                                                                     |
| [`max_bytes_in_set`](/fr/reference/settings/session-settings/max-bytes#max_bytes_in_set)                                                       | Le nombre maximal d’octets (de données non compressées) utilisés par un ensemble dans la clause IN créé à partir d’une sous-requête.                                                                            |
| [`set_overflow_mode`](/fr/reference/settings/session-settings/other#set_overflow_mode)                                                         | Définit ce qui se passe lorsque le volume de données dépasse l’une des limites.                                                                                                                                 |
| [`max_rows_in_distinct`](/fr/reference/settings/session-settings/max-rows#max_rows_in_distinct)                                                | Le nombre maximal de lignes distinctes lors de l’utilisation de DISTINCT.                                                                                                                                       |
| [`max_bytes_in_distinct`](/fr/reference/settings/session-settings/max-bytes#max_bytes_in_distinct)                                             | Le nombre maximal d’octets de l’état en mémoire (en octets non compressés) utilisé par une table de hachage lors de l’utilisation de DISTINCT.                                                                  |
| [`distinct_overflow_mode`](/fr/reference/settings/session-settings/other#distinct_overflow_mode)                                               | Définit ce qui se passe lorsque le volume de données dépasse l’une des limites.                                                                                                                                 |
| [`max_rows_to_transfer`](/fr/reference/settings/session-settings/max-rows#max_rows_to_transfer)                                                | Taille maximale (en lignes) pouvant être transmise à un serveur distant ou enregistrée dans une table temporaire lors de l’exécution de la section GLOBAL IN/JOIN.                                              |
| [`max_bytes_to_transfer`](/fr/reference/settings/session-settings/max-bytes#max_bytes_to_transfer)                                             | Le nombre maximal d’octets (données non compressées) pouvant être transmis à un serveur distant ou enregistrés dans une table temporaire lors de l’exécution de la section GLOBAL IN/JOIN.                      |
| [`transfer_overflow_mode`](/fr/reference/settings/session-settings/other#transfer_overflow_mode)                                               | Définit ce qui se passe lorsque le volume de données dépasse l’une des limites.                                                                                                                                 |
| [`max_rows_in_join`](/fr/reference/settings/session-settings/max-rows#max_rows_in_join)                                                        | Limite le nombre de lignes dans la table de hachage utilisée pour joindre des tables.                                                                                                                           |
| [`max_bytes_in_join`](/fr/reference/settings/session-settings/max-bytes#max_bytes_in_join)                                                     | La taille maximale, en octets, de la table de hachage utilisée pour joindre des tables.                                                                                                                         |
| [`join_overflow_mode`](/fr/reference/settings/session-settings/join#join_overflow_mode)                                                        | Définit l’action que ClickHouse effectue lorsque l’une des limites de jointure suivantes est atteinte.                                                                                                          |
| [`max_partitions_per_insert_block`](/fr/reference/settings/session-settings/max-partitions#max_partitions_per_insert_block)                    | Limite le nombre maximal de partitions dans un seul bloc inséré, et une exception est levée si le bloc contient trop de partitions.                                                                             |
| [`throw_on_max_partitions_per_insert_block`](/fr/reference/settings/session-settings/throw-on#throw_on_max_partitions_per_insert_block)        | Permet de contrôler le comportement lorsque `max_partitions_per_insert_block` est atteint.                                                                                                                      |
| [`max_temporary_data_on_disk_size_for_user`](/fr/reference/settings/session-settings/max-temporary#max_temporary_data_on_disk_size_for_user)   | La quantité maximale de données consommée par les fichiers temporaires sur disque, en octets, pour toutes les requêtes utilisateur exécutées concurremment.                                                     |
| [`max_temporary_data_on_disk_size_for_query`](/fr/reference/settings/session-settings/max-temporary#max_temporary_data_on_disk_size_for_query) | La quantité maximale de données consommée par les fichiers temporaires sur disque, en octets, pour toutes les requêtes exécutées concurremment.                                                                 |
| [`max_sessions_for_user`](/fr/reference/settings/session-settings/max#max_sessions_for_user)                                                   | Nombre maximal de sessions simultanées par utilisateur authentifié sur le serveur ClickHouse.                                                                                                                   |
| [`max_partitions_to_read`](/fr/reference/settings/session-settings/max-partitions#max_partitions_to_read)                                      | Limite le nombre maximal de partitions accessibles dans une seule requête.                                                                                                                                      |

<div id="obsolete-settings">
  ## Paramètres obsolètes
</div>

<Note>
  Les paramètres suivants sont obsolètes.
</Note>

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

Profondeur maximale du pipeline. Elle correspond au nombre de transformations que chaque
bloc de données subit pendant le traitement d'une requête. Elle est comptabilisée dans les limites d'un
serveur unique. Si la profondeur du pipeline dépasse cette limite, une exception est levée.
