enable_adaptive_aggregator
Active l’algorithmeGROUP BY adaptatif : chaque thread agrège dans sa table de hachage locale jusqu’à ce qu’elle atteigne adaptive_aggregator_freeze_threshold clés (ou adaptive_aggregator_freeze_threshold_bytes de mémoire), puis celle-ci est figée. Les lignes associées aux clés déjà rencontrées (fréquentes) continuent alors de la mettre à jour sur place, tandis que les nouvelles clés (rares) sont routées selon leur hash vers des files d’attente par bucket et agrégées exactement une fois lors de la fusion parallèle des buckets. Les clés fréquentes restent dans de petites tables tenant en cache, tandis que les clés rares ne sont stockées et traitées qu’une seule fois, au lieu d’une fois par thread.
Les paramètres d’agrégation externe (max_bytes_before_external_group_by, max_bytes_ratio_before_external_group_by) sont respectés : au-delà du seuil, les files d’attente sont vidées de manière anticipée dans la table partagée et, si cela ne suffit pas à repasser sous ce seuil, la table partagée est déversée sur disque via l’agrégation externe ordinaire.
enable_adaptive_memory_spill_scheduler
Déclenche le processeur pour déverser de manière adaptative les données vers un stockage externe. Les jointures de hachage capables de déverser sont actuellement prises en charge, aussi biengrace_hash que le chemin adaptatif hash / parallel_hash.
enable_add_distinct_to_in_subqueries
ActiveDISTINCT dans les sous-requêtes IN. Ce paramètre implique un compromis : son activation peut réduire considérablement la taille des tables temporaires transférées pour les sous-requêtes IN distribuées et accélérer nettement le transfert de données entre les shards, en garantissant que seules des valeurs uniques sont envoyées.
Cependant, l’activation de ce paramètre ajoute des opérations de fusion supplémentaires sur chaque nœud, car la déduplication (DISTINCT) doit être effectuée. Utilisez ce paramètre lorsque le transfert réseau constitue un goulot d’étranglement et que le coût supplémentaire de fusion est acceptable.
enable_alp_codec
Active le codec de compressionALP.
enable_automatic_decision_for_merging_across_partitions_for_final
Si ce paramètre est activé, ClickHouse activera automatiquement cette optimisation lorsque l’expression de la clé de partition est déterministe et que toutes les colonnes utilisées dans cette expression sont incluses dans la clé primaire. Cette déduction automatique garantit que les lignes ayant les mêmes valeurs de clé primaire appartiendront toujours à la même partition, ce qui permet d’éviter en toute sécurité les fusions entre partitions. Les colonnes de clé à virgule flottante sont exclues de cette déduction. Le comparateurFINAL est moins fin que
l’identité de valeur pour Float32, Float64 et BFloat16 : -0.0 est considéré comme égal à 0.0, et tout motif binaire NaN
est considéré comme égal à n’importe quel autre. Une expression de partition, elle, distingue précisément ces valeurs : des lignes que le comparateur traite comme
une seule et même clé peuvent donc se retrouver dans des partitions différentes, et ignorer la fusion entre partitions les renverrait toutes.
Cette exclusion s’applique également lorsqu’un flottant est imbriqué dans une colonne de clé, par exemple Tuple(Float64, UInt8)
ou Array(Float64).
enable_cascades_optimizer
Active l’optimiseur Cascades basé sur les coûts pour les plans de requêtes distribuées. Ne prend effet qu’avecmake_distributed_plan = 1 : ce paramètre n’a à lui seul aucun effet sur la planification des requêtes sur un seul nœud.
enable_early_constant_folding
Active une optimisation de requête qui analyse les résultats des fonctions et des sous-requêtes, puis réécrit la requête si elle contient des constantesenable_extended_results_for_datetime_functions
Active ou désactive le renvoi de résultats de typeDate32 avec une plage étendue (par rapport au type Date)
ou de type DateTime64 avec une plage étendue (par rapport au type DateTime).
Valeurs possibles :
0— Les fonctions renvoientDateouDateTimepour tous les types d’arguments.1— Les fonctions renvoientDate32ouDateTime64pour les argumentsDate32ouDateTime64, etDateouDateTimedans les autres cas.
enable_full_text_index
Alias :allow_experimental_full_text_index
Si cette option est définie sur true, l’utilisation de l’index de texte est autorisée.
enable_function_early_short_circuit
Active le repliement anticipé des constantes avec évaluation en court-circuit pourand et or lors de l’analyse des requêtes.
Lorsqu’elle est activée, les branches inaccessibles admissibles des sous-requêtes scalaires sont analysées afin de préserver leurs types et de valider la sémantique des requêtes, mais elles ne sont pas exécutées. L’optimisation revient à une analyse ordinaire lorsque la cardinalité scalaire ou des valeurs d’exécution sont requises.
enable_funnel_functions
Aliases :allow_experimental_funnel_functions
Active les fonctions d’analyse de funnel.
enable_global_with_statement
Propage les instructions WITH aux requêtes UNION et à toutes les sous-requêtesenable_group_by_top_k_optimization
Active l’optimisation du filtrage TopK lors de l’agrégation dans les requêtesGROUP BY keys ORDER BY <prefix of keys> LIMIT K, ainsi que dans les requêtes GROUP BY keys LIMIT K sans ORDER BY (dans ce cas, n’importe quels K groupes constituent un résultat valide, un tri sur toutes les clés est donc généré).
Lorsqu’elle est activée, l’agrégateur maintient un tas de taille limitée contenant les K clés les mieux classées rencontrées jusqu’à présent et n’insère pas de nouvelles lignes dans la table de hachage lorsque leur clé de regroupement ne peut pas figurer dans le résultat final. Cela évite d’agréger des lignes qui seraient écartées par le ORDER BY ... LIMIT ultérieur et, lorsque le tas classe la clé GROUP BY complète, supprime également les groupes évincés de la table de hachage intermédiaire, dont la taille est alors limitée par le LIMIT plutôt que par le nombre de clés distinctes. Lorsque le ORDER BY ne couvre qu’un préfixe strict des clés GROUP BY, le classement ne peut pas identifier un groupe complet ; seules des lignes sont donc ignorées : la table de hachage conserve chaque groupe admis et peut toujours croître en fonction de la cardinalité des colonnes de clés restantes.
L’optimisation est désactivée lorsque le LIMIT demandé est supérieur à query_plan_max_limit_for_top_k_optimization ou au plafond fixe de 100000, car le coût du tas en mémoire et en CPU augmente avec le LIMIT demandé.
L’optimisation est ignorée pour les formes de requêtes où la suppression de groupes pourrait modifier le résultat, notamment avec WITH TOTALS, HAVING, QUALIFY, les fonctions de fenêtre, ROLLUP/CUBE/GROUPING SETS, LIMIT WITH TIES, un COLLATE sur l’une des clés GROUP BY correspondantes (un COLLATE sur une colonne ORDER BY située après le préfixe de clé complet ne peut pas affecter les groupes retenus et ne désactive donc pas l’optimisation), un ORDER BY sur un agrégat ou sur tout élément qui n’est pas un préfixe initial des clés GROUP BY, ainsi que lorsque max_rows_to_group_by ou exact_rows_before_limit est défini.
Valeurs possibles :
- 0 — Désactivé.
- 1 — Activé.
enable_hash_join_row_store
Active la transformation de la charge utile d’une jointure de hachage en stockage par lignes.enable_hdfs_pread
Active ou désactivepread pour les fichiers HDFS. Par défaut, hdfsPread est utilisé. S’il est désactivé, hdfsRead et hdfsSeek sont utilisés pour lire les fichiers HDFS.
enable_http_compression
Active ou désactive la compression des données dans la réponse à une requête HTTP. Pour plus d’informations, consultez la description de l’interface HTTP. Valeurs possibles :- 0 — Désactivé.
- 1 — Activé.
enable_identifier_resolve_cache
Active le cache de résolution des identifiants dans l’analyseur de requêtes. Le cache partage les nœuds d’alias résolus afin d’éviter une explosion de l’AST lorsque le même alias est utilisé plusieurs fois. Définissez-la sur false pour désactiver la mise en cache si vous suspectez des résultats incorrects.enable_job_stack_trace
Affiche la trace de pile du créateur du job lorsque celui-ci entraîne une exception. Désactivé par défaut afin d’éviter toute surcharge de performances.enable_json_ast_dialect
Active la valeurclickhouse_json du paramètre dialect.
Lorsque dialect est défini sur clickhouse_json, les requêtes sont interprétées comme des AST JSON
(la sortie de parseQueryToJSON) plutôt que comme du texte SQL. La requête SET est toujours
analysée comme du SQL standard afin de pouvoir revenir au dialecte précédent.
Exemple :
enable_json_lazy_type_hints
Aliases :allow_experimental_json_lazy_type_hints
Active les indications de type différées pour le type JSON.
Lorsque ce paramètre est activé, une requête ALTER TABLE ... MODIFY COLUMN json JSON(path TypeName) qui se contente d’ajouter ou de modifier
des indications de type constitue une opération limitée aux métadonnées : les indications de type sont appliquées au moment de la requête pour les parts existantes et
matérialisés lors des insertions et des fusions en arrière-plan, plutôt que de réécrire les données historiques.
enable_lazy_columns_replication
Active la réplication différée des colonnes dansJOIN, ARRAY JOIN, ainsi que dans les captures lambda de fonctions d’ordre supérieur (p. ex. arrayMap). Cela permet d’éviter de copier inutilement plusieurs fois les mêmes lignes en mémoire.
enable_materialized_cte
Active les expressions de table communes matérialisées (WITH <name> AS MATERIALIZED (<subquery>)).
Lorsque ce paramètre est activé, une CTE déclarée comme MATERIALIZED et référencée plusieurs fois n’est exécutée qu’une seule fois, son résultat est stocké dans une table temporaire, et toutes les références lisent depuis cette table. Une CTE référencée une seule fois est intégrée comme une CTE ordinaire afin d’éviter ce surcoût.
Lorsque ce paramètre est désactivé, le mot-clé MATERIALIZED est ignoré : la CTE est intégrée à chaque référence comme une CTE ordinaire, et un avertissement est journalisé.
enable_materialized_postgresql_table
Aliases :allow_experimental_materialized_postgresql_table
Permet d’utiliser le table engine MaterializedPostgreSQL.
enable_memory_bound_merging_of_aggregation_results
Active la stratégie de fusion des résultats d’agrégation limitée par la mémoire.enable_multiple_prewhere_read_steps
Déplace davantage de conditions de WHERE vers PREWHERE, et effectue les lectures sur disque ainsi que le filtrage en plusieurs étapes s’il y a plusieurs conditions combinées avec ANDenable_named_columns_in_function_tuple
Génère des tuples nommés dans la fonction tuple() lorsque tous les noms sont uniques et peuvent être considérés comme des identifiants non quotés.enable_nullable_tuple_type
Aliases :allow_experimental_nullable_tuple_type
Autorise la création de colonnes Nullable Tuple dans les tables.
Ce paramètre ne détermine pas si les sous-colonnes de type tuple extraites peuvent être Nullable (par exemple, depuis des colonnes Dynamic, Variant, JSON ou Tuple).
Utilisez allow_nullable_tuple_in_extracted_subcolumns pour définir si les sous-colonnes de type tuple extraites peuvent être Nullable.
enable_order_by_all
Active ou désactive le tri à l’aide de la syntaxeORDER BY ALL, voir ORDER BY.
Valeurs possibles :
- 0 — Désactive
ORDER BY ALL. - 1 — Active
ORDER BY ALL.
enable_packed_string_keys_in_aggregation
Utilise une table de hachage indexée par des références de chaînes compactes de 16 octets (PackedStringRef) pour les GROUP BY comportant une seule clé String non nullable. Les clés d’au plus 11 octets sont stockées directement dans la référence compacte ; les clés plus longues sont référencées dans une arène.
Cette méthode est plus rapide pour la plupart des workloads, mais peut être plus lente que la méthode legacy pour les GROUP BY avec très peu de clés distinctes de plus de 11 octets (en particulier de 12 à 24 octets), car la table de hachage legacy conserve les clés directement dans la cellule, tandis que la table compacte déréférence le pointeur vers l’arène à chaque recherche.
Lorsqu’elle est désactivée, la méthode legacy basée sur StringHashTable (celle utilisée par défaut avant la version 26.8) est employée.
Tous les serveurs participant à une requête distribuée doivent utiliser la même valeur : avec distributed_aggregation_memory_efficient, les numéros de buckets à deux niveaux dépendent du hash de la clé, qui diffère selon la méthode. Des serveurs utilisant des valeurs différentes pour ce paramètre peuvent donc répartir une même clé dans différents buckets et produire un résultat fusionné incorrect. Pour garantir cette cohérence, l’initiateur transmet toujours sa valeur effective avec les requêtes secondaires (même lorsqu’elle provient uniquement des valeurs par défaut du serveur ou du profil), en remplaçant les valeurs par défaut des serveurs distants.
enable_parsing_to_custom_serialization
Si la valeur est true, les données peuvent être analysées directement dans des colonnes avec une sérialisation personnalisée (par ex. Sparse), selon les indications de sérialisation obtenues depuis la table.enable_producing_buckets_out_of_order_in_aggregation
Permet à l’agrégation économe en mémoire (voirdistributed_aggregation_memory_efficient) de produire des buckets dans le désordre.
Cela peut améliorer les performances lorsque la taille des buckets d’agrégation est inégale, en permettant à une réplique d’envoyer à l’initiateur des buckets dont les ID sont plus élevés alors qu’elle traite encore des buckets volumineux avec des ID plus faibles.
L’inconvénient est une consommation de mémoire potentiellement plus élevée.
enable_quantized_codec
Active le codec de compressionQuantized.
enable_reads_from_query_cache
Si cette option est activée, les résultats des requêtesSELECT sont lus depuis le cache de requêtes.
Valeurs possibles :
- 0 - Désactivé
- 1 - Activé
enable_s3_requests_logging
Active une journalisation très détaillée des requêtes S3. À utiliser uniquement pour le débogage.enable_scalar_subquery_optimization
Si ce paramètre est défini sur true, il empêche les sous-requêtes scalaires de (dé)sérialiser de grandes valeurs scalaires et peut éviter d’exécuter la même sous-requête plusieurs fois.enable_scopes_for_with_statement
Si cette option est désactivée, les déclarations dans les clauses WITH parentes auront la même portée que si elles étaient déclarées dans la portée actuelle. Notez qu’il s’agit d’un paramètre de compatibilité de l’analyseur permettant d’exécuter certaines requêtes non valides que l’ancien analyseur pouvait exécuter.enable_shared_storage_snapshot_in_query
Si cette option est activée, toutes les sous-requêtes d’une même requête partageront le même StorageSnapshot pour chaque table. Cela garantit une vue cohérente des données dans l’ensemble de la requête, même si la même table est accédée plusieurs fois. Ce paramètre est nécessaire pour les requêtes où la cohérence interne des data parts est importante. Exemple :- 0 - Désactivé
- 1 - Activé
enable_sharing_sets_for_mutations
Autorise le partage des objets Set créés pour les sous-requêtes IN entre différentes tâches d’une même mutation. Cela réduit l’utilisation de la mémoire et la consommation de CPUenable_streaming_queries
Autorise les requêtes en continuSELECT ... FROM t STREAM [CURSOR '{...}'].
Lorsqu’il est désactivé, toute expression de table utilisant le modificateur STREAM est rejetée
lors de la construction du plan. Il s’agit du paramètre de contrôle global de la
fonctionnalité de requêtes en continu ; des capacités supplémentaires peuvent être régies par leurs propres paramètres.
enable_sz3_codec
Active le codec de compressionSZ3.
enable_time_series_aggregate_functions
Aliases :allow_experimental_ts_to_grid_aggregate_function, allow_experimental_time_series_aggregate_functions
Active les fonctions d’agrégation timeSeries* permettant le rééchantillonnage de time series à la manière de Prometheus, ainsi que le calcul du rate et du delta.
enable_time_series_table
Aliases :allow_experimental_time_series_table
Autorise la création de tables utilisant le table engine TimeSeries. Valeurs possibles :
- 0 — le table engine TimeSeries est désactivé.
- 1 — le table engine TimeSeries est activé.
enable_time_time64_type
Alias :allow_experimental_time_time64_type
Permet de créer les types de données Time et Time64.
enable_trino_dialect
Active la valeurtrino du paramètre dialect.
Lorsque dialect vaut trino, les requêtes sont écrites en SQL Trino : la
syntaxe propre à Trino (littéraux ARRAY[...], TRY_CAST, UNNEST, types ROW, OFFSET avant LIMIT)
est traduite en ClickHouse SQL, et les noms de fonctions Trino sont mis en correspondance avec leurs
équivalents ClickHouse. La requête SET reste analysée comme du SQL ordinaire, ce qui permet de
revenir au dialecte précédent.
Le dialecte aligne également la sémantique des requêtes sur celle de Trino : join_use_nulls est activé,
use_variant_as_common_type est désactivé et l’analyseur de requêtes est activé.
Une clause SETTINGS explicite dans la requête conserve la préséance.
enable_unaligned_array_join
Autorise ARRAY JOIN sur plusieurs tableaux de tailles différentes. Lorsque ce paramètre est activé, les tableaux sont redimensionnés à la longueur du plus long.enable_unique_key
Aliases :allow_experimental_unique_key
Autorise la création de tables comportant la clause UNIQUE KEY sur les moteurs de la famille MergeTree.
enable_url_encoding
Permet d’activer ou de désactiver le décodage/l’encodage du chemin dans l’URI des tables utilisant le moteur URL. Désactivé par défaut.enable_vertical_final
Si cette option est activée, les lignes dupliquées sont supprimées pendant FINAL en marquant les lignes comme supprimées, puis en les filtrant ultérieurement au lieu de les fusionnerenable_writes_to_query_cache
Lorsqu’il est activé, les résultats des requêtesSELECT sont stockés dans le cache de requêtes.
Valeurs possibles :
- 0 - Désactivé
- 1 - Activé
enable_zxc_codec
Active le codec de compressionZXC.