max_streams_for_files_processing_in_cluster_functions
max_streams_for_merge_tree_reading
max_streams_for_union_step
UNION (s’applique à la fois à UNION ALL et à UNION DISTINCT, car UNION DISTINCT est implémenté par une étape UNION ALL suivie d’une étape DISTINCT). 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
max_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.