Skip to main content

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

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è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 14 août 2026