max_streams_for_files_processing_in_cluster_functions
max_streams_for_merge_tree_reading
max_streams_for_union_step
UNION (وينطبق ذلك على كلٍّ من UNION ALL وUNION DISTINCT، لأن UNION DISTINCT يُنفَّذ عبر خطوة UNION ALL تليها خطوة DISTINCT). عندما يحتوي استعلام UNION على عدد كبير من الاستعلامات الفرعية، فإنها تفتح جميعًا مخازن القراءة المؤقتة الخاصة بها في الوقت نفسه، مما يؤدي إلى استهلاك ذاكرة يتناسب مع عدد الاستعلامات الفرعية. يُدرج هذا الإعداد معالجات Concat لتضييق خط الأنابيب بحيث لا يكون هناك أكثر من هذا العدد من التدفقات النشطة في الوقت نفسه، مما يقلل ذروة الذاكرة بشكل كبير. والحد الفعلي هو القيمة الصغرى بين هذه القيمة وmax_threads * max_streams_for_union_step_to_max_threads_ratio (إذا كانت أيٌّ منهما تساوي 0 فهذا يعني تجاهلها). وعندما تكون كلتاهما 0، لا يُطبَّق أي تضييق. كذلك لا يُطبَّق هذا الحد عندما تتطلب خطة الاستعلام أن يظل كل تدفق خرج من UNION مرتَّبًا بصورة مستقلة (على سبيل المثال، عند تطبيق تحسين read-in-order عبر UNION)؛ ففي هذه الحالة تكون صحة الترتيب هي الأولوية ويُتجاوز التضييق.
max_streams_for_union_step_to_max_threads_ratio
max_threads، حدًا أقصى لعدد التدفقات النشطة بالتزامن في خطوة UNION (وينطبق ذلك على كلٍّ من UNION ALL وUNION DISTINCT). والحد الفعلي هو أصغر قيمة بين هذه القيمة المحسوبة وmax_streams_for_union_step (وإذا كانت قيمة أيٍّ منهما 0، فسيتم تجاهلها). على سبيل المثال، إذا كان max_threads = 8 وتم ضبط هذه النسبة على 1، فسيكون الحد الأقصى لعدد التدفقات النشطة 8. اضبطها على 0 لتعطيل هذا الحد المستند إلى النسبة. وكما هو الحال مع max_streams_for_union_step، لا يُطبَّق هذا الحد عندما تتطلب خطة الاستعلام أن يظل كل تدفق خرج من UNION مرتبًا على حدة.