enable_adaptive_aggregator
GROUP 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
enable_add_distinct_to_in_subqueries
DISTINCT 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
ALP.
enable_automatic_decision_for_merging_across_partitions_for_final
enable_cascades_optimizer
make_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
enable_extended_results_for_datetime_functions
Date32 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
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
and 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_global_with_statement
enable_group_by_top_k_optimization
GROUP 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
enable_hdfs_pread
pread 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
- 0 — Désactivé.
- 1 — Activé.
enable_identifier_resolve_cache
enable_job_stack_trace
enable_json_ast_dialect
clickhouse_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_lazy_columns_replication
JOIN, 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
enable_memory_bound_merging_of_aggregation_results
enable_multiple_prewhere_read_steps
enable_named_columns_in_function_tuple
enable_order_by_all
ORDER BY ALL, voir ORDER BY.
Valeurs possibles :
- 0 — Désactive
ORDER BY ALL. - 1 — Active
ORDER BY ALL.
enable_packed_string_keys_in_aggregation
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
enable_producing_buckets_out_of_order_in_aggregation
distributed_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
Quantized.
enable_reads_from_query_cache
SELECT sont lus depuis le cache de requêtes.
Valeurs possibles :
- 0 - Désactivé
- 1 - Activé
enable_s3_requests_logging
enable_scalar_subquery_optimization
enable_scopes_for_with_statement
enable_sharding_aggregator
GROUP BY partitionnée, qui répartit les lignes entre les threads en hachant la clé de regroupement, de sorte que chaque thread agrège un sous-ensemble distinct de clés sans phase de fusion.
Cette approche est efficace pour les clés à forte cardinalité lorsque les données sont réparties uniformément, mais peut être moins performante en cas de distribution très déséquilibrée des clés ou de requêtes comportant très peu de clés distinctes.
Valeurs possibles :
- 0 — L’optimisation d’agrégation partitionnée est désactivée.
- 1 — L’optimisation d’agrégation partitionnée est activée.
- 0 - Désactivé
- 1 - Activé
enable_sharing_sets_for_mutations
enable_streaming_queries
SELECT ... 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
SZ3.
enable_time_time64_type
allow_experimental_time_time64_type
Permet de créer les types de données Time et Time64.
enable_unaligned_array_join
enable_url_encoding
enable_vertical_final
enable_writes_to_query_cache
SELECT sont stockés dans le cache de requêtes.
Valeurs possibles :
- 0 - Désactivé
- 1 - Activé
enable_zxc_codec
ZXC.