max_streams_for_files_processing_in_cluster_functions
S’il est différent de zéro, limite le nombre de threads qui lisent les données des fichiers dans les fonctions de table Cluster.max_streams_for_merge_tree_reading
Si cette valeur n’est pas nulle, limite le nombre de flux de lecture pour la table MergeTree.max_streams_for_union_step
Limite le nombre de flux de données actifs simultanément dans une étapeUNION (s’applique à UNION ALL, à UNION DISTINCT, car celui-ci est implémenté par une étape UNION ALL suivie d’une étape DISTINCT, ainsi qu’à la lecture d’une table Merge avec des répliques parallèles basées sur le plan, qui est développée en une union des lectures de ses tables sous-jacentes). Lorsqu’une requête UNION comporte de nombreuses sous-requêtes, elles ouvrent toutes leurs tampons de lecture en même temps, ce qui entraîne une utilisation mémoire proportionnelle au nombre de sous-requêtes. Ce paramètre insère des processeurs Concat pour resserrer le pipeline afin qu’il n’y ait pas plus de ce nombre de flux actifs à la fois, ce qui réduit considérablement le pic de mémoire. La limite réelle correspond au minimum entre cette valeur et max_threads * max_streams_for_union_step_to_max_threads_ratio (si l’une ou l’autre vaut 0, elle est ignorée). Lorsque les deux valent 0, aucun resserrement n’est appliqué. La limite n’est pas non plus appliquée lorsque le plan de requête exige que chaque flux de sortie du UNION reste trié individuellement (par exemple lorsque l’optimisation de lecture dans l’ordre est appliquée sur le UNION) ; dans ce cas, le respect de l’ordre est prioritaire et le resserrement est ignoré.
max_streams_for_union_step_to_max_threads_ratio
Ce ratio, multiplié parmax_threads, détermine la limite du nombre de flux simultanément actifs dans une étape UNION (s’applique à la fois à UNION ALL et à UNION DISTINCT). La limite réelle est la plus petite des deux valeurs suivantes : cette valeur calculée et max_streams_for_union_step (si l’une ou l’autre vaut 0, elle est ignorée). Par exemple, avec max_threads = 8 et ce ratio défini sur 1, il y aura au plus 8 flux actifs. Définissez cette valeur sur 0 pour désactiver cette limite basée sur le ratio. Comme pour max_streams_for_union_step, la limite n’est pas appliquée lorsque le plan de requête exige que chaque flux de sortie du UNION reste trié individuellement.
max_streams_multiplier_for_merge_tables
Demande davantage de flux lors de la lecture à partir d’une table Merge. Les flux seront répartis entre les tables utilisées par la table Merge. Cela permet de mieux répartir la charge entre les threads et s’avère particulièrement utile lorsque les tables fusionnées n’ont pas la même taille. Le nombre de flux lus simultanément est lui aussi plafonné par ce multiplicateur — sauf dans le cas d’une lecture de tableMerge avec des répliques parallèles basées sur le plan (parallel_replicas_allow_merge_tables), qui est développée en une union des lectures de ses tables sous-jacentes et se trouve donc plafonnée par max_streams_for_union_step, comme toute autre union.