Skip to main content
Ces paramètres sont disponibles dans system.settings et sont auto-générés à partir de la source.

min_chunk_bytes_for_parallel_parsing

  • Type : entier non signé
  • Valeur par défaut : 1 MiB
La taille minimale, en octets, du fragment que chaque thread analysera en parallèle.

min_compress_block_size

Pour les tables MergeTree. Afin de réduire la latence lors du traitement des requêtes, un bloc est compressé à l’écriture de la mark suivante si sa taille est au moins égale à min_compress_block_size. Par défaut, 65 536. La taille réelle du bloc, si les données non compressées sont inférieures à max_compress_block_size, n’est pas inférieure à cette valeur ni au volume de données d’une mark. Prenons un exemple. Supposons que index_granularity ait été défini sur 8192 lors de la création de la table. Nous écrivons une colonne de type UInt32 (4 octets par valeur). Lors de l’écriture de 8192 lignes, cela représente 32 Ko de données. Comme min_compress_block_size = 65 536, un bloc compressé sera formé toutes les deux marks. Nous écrivons une colonne URL de type String (taille moyenne de 60 octets par valeur). Lors de l’écriture de 8192 lignes, cela représente en moyenne un peu moins de 500 Ko de données. Comme c’est supérieur à 65 536, un bloc compressé sera formé pour chaque mark. Dans ce cas, lors de la lecture des données sur le disque dans la plage d’une seule mark, aucune donnée supplémentaire ne sera décompressée.
Il s’agit d’un paramètre réservé aux experts, et vous ne devriez pas le modifier si vous débutez avec ClickHouse.

min_filtered_ratio_for_lazy_final

Ratio minimal de marks filtrés par l’analyse des index pour l’optimisation lazy de FINAL. Si la proportion de marks filtrés est inférieure à ce seuil, le système revient à FINAL ordinaire. La valeur 0 désactive cette vérification.

min_hit_rate_to_use_consecutive_keys_optimization

Taux de réussite minimal d’un cache utilisé pour l’optimisation des clés consécutives dans l’agrégation, afin qu’elle reste activée

min_os_cpu_wait_time_ratio_to_throw

Rapport minimal entre les temps d’attente du CPU au niveau de l’OS (métrique OSCPUWaitMicroseconds) et les temps d’activité (métrique OSCPUVirtualTimeMicroseconds) à partir duquel le rejet de requêtes est envisagé. Une interpolation linéaire entre le rapport minimal et le rapport maximal est utilisée pour calculer la probabilité ; à ce niveau, cette probabilité est de 0.

min_outstreams_per_resize_after_split

Définit le nombre minimal de flux de sortie d’un processeur Resize ou StrictResize après l’exécution de la division lors de la génération du pipeline. Si le nombre de flux résultant est inférieur à cette valeur, l’opération de division n’est pas effectuée.

Qu’est-ce qu’un nœud Resize

Un nœud Resize est un processeur du pipeline de requête qui ajuste le nombre de flux de données qui y circulent. Il peut augmenter ou diminuer le nombre de flux afin d’équilibrer la charge de travail entre plusieurs threads ou processeurs. Par exemple, si une requête nécessite davantage de parallélisme, le nœud Resize peut diviser un seul flux en plusieurs flux. À l’inverse, il peut fusionner plusieurs flux en un plus petit nombre de flux afin de regrouper le traitement des données. Le nœud Resize garantit une répartition homogène des données entre les flux, tout en préservant la structure des blocs de données. Cela permet d’optimiser l’utilisation des ressources et d’améliorer les performances des requêtes.

Pourquoi le nœud Resize doit être divisé

Lors de l’exécution du pipeline, ExecutingGraph::Node::status_mutex du nœud Resize, au centre du regroupement, est fortement sujet à la contention, en particulier dans les environnements comportant un grand nombre de cœurs, et cette contention entraîne :
  1. Une augmentation de la latence de ExecutingGraph::updateNode, ce qui affecte directement les performances des requêtes.
  2. Un nombre excessif de cycles CPU est gaspillé dans la contention sur le spin-lock (native_queued_spin_lock_slowpath), ce qui réduit l’efficacité.
  3. Une baisse de l’utilisation du CPU, ce qui limite le parallélisme et le débit.

Comment le nœud Resize est divisé

  1. Le nombre de flux de sortie est vérifié afin de s’assurer que la division peut être effectuée : les flux de sortie de chaque processeur issu de la division atteignent ou dépassent le seuil min_outstreams_per_resize_after_split.
  2. Le nœud Resize est divisé en nœuds Resize plus petits, avec un nombre égal de ports, chacun gérant un sous-ensemble de flux d’entrée et de sortie.
  3. Chaque groupe est traité indépendamment, ce qui réduit la contention sur les verrous.

Division d’un nœud Resize avec des entrées/sorties quelconques

Dans certains cas, lorsque le nombre d’entrées/sorties n’est pas divisible par le nombre de nœuds Resize après division, certaines entrées sont reliées à des NullSource et certaines sorties à des NullSink. Cela permet d’effectuer la division sans perturber le flux global des données.

Rôle du paramètre

Le paramètre min_outstreams_per_resize_after_split garantit que la division des nœuds Resize est judicieuse et évite de créer un nombre trop faible de flux, ce qui pourrait entraîner un traitement parallèle inefficace. En imposant un nombre minimal de flux de sortie, ce paramètre aide à maintenir un équilibre entre parallélisme et surcoût, optimisant ainsi l’exécution des requêtes dans les scénarios impliquant la division et la fusion de flux.

Désactivation du paramètre

Pour désactiver la division des nœuds Resize, définissez ce paramètre sur 0. Cela empêche la division des nœuds Resize lors de la génération du pipeline, ce qui leur permet de conserver leur structure d’origine sans être divisés en nœuds plus petits.

min_table_rows_to_use_projection_index

Si le nombre estimé de lignes à lire dans la table est supérieur ou égal à ce seuil, ClickHouse essaiera d’utiliser l’index de projection lors de l’exécution de la requête.
Dernière modification le 23 juillet 2026