Passer au contenu principal

Vue d’ensemble

Dans le cadre des paramètres, 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.

Paramètres de overflow_mode

La plupart des limitations 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.

Paramètres de group_by_overflow_mode

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.

Liste des paramètres

Les paramètres suivants servent à appliquer des restrictions à la complexité des requêtes.
Les restrictions de type « quantité maximale de quelque chose » peuvent prendre la valeur 0, ce qui signifie qu’elles sont « sans restriction ».
ParamètreDescription succincte
max_memory_usageLa quantité maximale de RAM à utiliser pour exécuter une requête sur un seul serveur.
max_memory_usage_for_userLa quantité maximale de RAM à utiliser pour exécuter les requêtes d’un utilisateur sur un seul serveur.
max_rows_to_readLe nombre maximal de lignes pouvant être lues dans une table lors de l’exécution d’une requête.
max_bytes_to_readLe nombre maximal d’octets (de données non compressées) pouvant être lus dans une table lors de l’exécution d’une requête.
read_overflow_mode_leafDéfinit ce qui se passe lorsque le volume de données lues dépasse l’une des limites des nœuds feuille
max_rows_to_read_leafLe nombre maximal de lignes pouvant être lues dans une table locale sur un nœud feuille lors de l’exécution d’une requête distribuée
max_bytes_to_read_leafLe nombre maximal d’octets (de données non compressées) pouvant être lus dans une table locale sur un nœud feuille lors de l’exécution d’une requête distribuée.
read_overflow_mode_leafDéfinit ce qui se passe lorsque le volume de données lues dépasse l’une des limites des nœuds feuille.
max_rows_to_group_byLe nombre maximal de clés uniques issues de l’agrégation.
group_by_overflow_modeDéfinit ce qui se passe lorsque le nombre de clés uniques pour l’agrégation dépasse la limite
max_bytes_before_external_group_byActive ou désactive l’exécution des clauses GROUP BY en mémoire externe.
max_bytes_ratio_before_external_group_byLa part de mémoire disponible autorisée pour GROUP BY. Une fois ce seuil atteint, la mémoire externe est utilisée pour l’agrégation.
max_bytes_before_external_sortActive ou désactive l’exécution des clauses ORDER BY en mémoire externe.
max_bytes_ratio_before_external_sortLa part de mémoire disponible autorisée pour ORDER BY. Une fois ce seuil atteint, le tri externe est utilisé.
max_rows_to_sortLe nombre maximal de lignes avant le tri. Permet de limiter la consommation de mémoire lors du tri.
max_bytes_to_sortLe nombre maximal d’octets avant le tri.
sort_overflow_modeDéfinit ce qui se passe si le nombre de lignes reçues avant le tri dépasse l’une des limites.
max_result_rowsLimite le nombre de lignes dans le résultat.
max_result_bytesLimite la taille du résultat en octets (non compressés)
result_overflow_modeDéfinit ce qu’il faut faire si le volume du résultat dépasse l’une des limites.
max_execution_timeLe temps d’exécution maximal de la requête en secondes.
timeout_overflow_modeDéfinit ce qu’il faut faire si la requête s’exécute plus longtemps que max_execution_time ou si son temps d’exécution estimé dépasse max_estimated_execution_time.
max_execution_time_leafSemblable à max_execution_time sur le plan sémantique, mais appliqué uniquement aux nœuds feuille pour les requêtes distribuées ou distantes.
timeout_overflow_mode_leafDéfinit ce qui se passe lorsque la requête sur un nœud feuille s’exécute plus longtemps que max_execution_time_leaf.
min_execution_speedVitesse d’exécution minimale en lignes par seconde.
min_execution_speed_bytesLe nombre minimal d’octets traités par seconde lors de l’exécution.
max_execution_speedLe nombre maximal de lignes traitées par seconde lors de l’exécution.
max_execution_speed_bytesLe nombre maximal d’octets traités par seconde lors de l’exécution.
timeout_before_checking_execution_speedVérifie, une fois le délai spécifié en secondes écoulé, que la vitesse d’exécution n’est pas trop lente (c’est-à-dire qu’elle n’est pas inférieure à min_execution_speed).
max_estimated_execution_timeLe temps d’exécution estimé maximal de la requête, en secondes.
max_columns_to_readLe nombre maximal de colonnes pouvant être lues depuis une table dans une seule requête.
max_temporary_columnsLe nombre maximal de colonnes temporaires qui doivent ê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_columnsLe nombre maximal de colonnes temporaires qui doivent être conservées simultanément en RAM lors de l’exécution d’une requête, sans compter les colonnes constantes.
max_subquery_depthDéfinit ce qui se passe si une requête comporte plus de sous-requêtes imbriquées que le nombre spécifié.
max_ast_depthLa profondeur maximale d’imbrication de l’arbre syntaxique d’une requête.
max_ast_elementsLe nombre maximal d’éléments dans l’arbre syntaxique d’une requête.
max_rows_in_setLe nombre maximal de lignes pour un jeu de données dans la clause IN créé à partir d’une sous-requête.
max_bytes_in_setLe 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_modeDéfinit ce qui se passe lorsque la quantité de données dépasse l’une des limites.
max_rows_in_distinctLe nombre maximal de lignes distinctes lors de l’utilisation de DISTINCT.
max_bytes_in_distinctLe nombre maximal d’octets de l’état (en octets non compressés) en mémoire, utilisé par une table de hachage lors de l’utilisation de DISTINCT.
distinct_overflow_modeDéfinit ce qui se passe lorsque la quantité de données dépasse l’une des limites.
max_rows_to_transferLa taille maximale (en lignes) pouvant être transmise à un serveur distant ou enregistrée dans une table temporaire lors de l’exécution de la clause GLOBAL IN/JOIN.
max_bytes_to_transferLe nombre maximal d’octets (de 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 clause GLOBAL IN/JOIN.
transfer_overflow_modeDéfinit ce qui se passe lorsque la quantité de données dépasse l’une des limites.
max_rows_in_joinLimite le nombre de lignes dans la table de hachage utilisée lors de la jointure de tables.
max_bytes_in_joinLa taille maximale, en octets, de la table de hachage utilisée lors de la jointure de tables.
join_overflow_modeDéfinit l’action effectuée par ClickHouse lorsque l’une des limites de jointure suivantes est atteinte.
max_partitions_per_insert_blockLimite 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_blockPermet de contrôler le comportement lorsque max_partitions_per_insert_block est atteint.
max_temporary_data_on_disk_size_for_userLa quantité maximale de données consommée par les fichiers temporaires sur disque, en octets, pour toutes les requêtes utilisateur exécutées simultanément.
max_temporary_data_on_disk_size_for_queryLa quantité maximale de données consommée par les fichiers temporaires sur disque, en octets, pour toutes les requêtes exécutées simultanément.
max_sessions_for_userNombre maximal de sessions simultanées par utilisateur authentifié sur le serveur ClickHouse.
max_partitions_to_readLimite le nombre maximal de partitions auxquelles il est possible d’accéder dans une seule requête.

Paramètres obsolètes

Les paramètres suivants sont obsolètes.

max_pipeline_depth

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.
Dernière modification le 25 juin 2026