> ## Documentation Index
> Fetch the complete documentation index at: https://clickhouse.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# إعدادات الجلسة لـ max_streams_*

> إعدادات الجلسة في ClickHouse ضمن مجموعة max_streams_* المُولَّدة.

export const SettingsInfoBlock = ({type, default_value, changeable_without_restart}) => {
  return <div className="not-prose" style={{
    display: "flex",
    flexWrap: "wrap",
    alignItems: "baseline",
    columnGap: "0.5rem",
    rowGap: "0.125rem",
    margin: "0.375rem 0",
    fontSize: "0.8125rem",
    lineHeight: "1.125rem"
  }}>
      <div style={{
    fontWeight: 600,
    opacity: 0.72
  }}>النوع</div>
      <div style={{
    overflowWrap: "anywhere"
  }}>{type}</div>
      <div style={{
    fontWeight: 600,
    opacity: 0.72,
    marginInlineStart: "0.5rem"
  }}>القيمة الافتراضية</div>
      <div style={{
    overflowWrap: "anywhere"
  }}>{default_value}</div>
      {changeable_without_restart && <div style={{
    fontWeight: 600,
    opacity: 0.72,
    marginInlineStart: "0.5rem"
  }}>
          يمكن تغييره دون إعادة التشغيل
        </div>}
      {changeable_without_restart && <div style={{
    overflowWrap: "anywhere"
  }}>
          {changeable_without_restart}
        </div>}
    </div>;
};

هذه الإعدادات متاحة في [system.settings](/docs/ar/reference/system-tables/settings)، ويجري توليدها تلقائيًا من [الشفرة المصدرية](https://github.com/ClickHouse/ClickHouse/blob/master/src/Core/Settings.cpp).

<div id="max_streams_for_files_processing_in_cluster_functions">
  ## max\_streams\_for\_files\_processing\_in\_cluster\_functions
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "0"},{"label": "إضافة إعداد جديد يتيح تقييد عدد التدفقات لمعالجة الملفات في *دوال الجدول Cluster*"}]}]} />

إذا لم تكن القيمة صفراً، فسيتم تقييد عدد خيوط التنفيذ التي تقرأ البيانات من الملفات في *دوال الجدول Cluster*.

<div id="max_streams_for_merge_tree_reading">
  ## max\_streams\_for\_merge\_tree\_reading
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

إذا لم تكن القيمة صفراً، فسيُحدَّد عدد تدفقات القراءة لجدول MergeTree.

<div id="max_streams_for_union_step">
  ## max\_streams\_for\_union\_step
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "0"},{"label": "إعداد جديد لتقييد عدد تدفقات البيانات النشطة بالتزامن في خطوة UNION لتقليل ذروة استخدام الذاكرة."}]}]} />

يقيّد عدد تدفقات البيانات النشطة بالتزامن في خطوة `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`)؛ ففي هذه الحالة تكون صحة الترتيب هي الأولوية ويُتجاوز التضييق.

<div id="max_streams_for_union_step_to_max_threads_ratio">
  ## max\_streams\_for\_union\_step\_to\_max\_threads\_ratio
</div>

<SettingsInfoBlock type="Float" default_value="8" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "8"},{"label": "إعداد جديد: يُحتسب الحد الأقصى للتدفقات النشطة بالتزامن في خطوة UNION على أنه min(max_streams_for_union_step, max_threads * max_streams_for_union_step_to_max_threads_ratio)، ويؤدي ضبط أيٍّ منهما على 0 إلى تعطيل هذا القيد."}]}]} />

تحدّد هذه النسبة، عند ضربها في `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` مرتبًا على حدة.

<div id="max_streams_multiplier_for_merge_tables">
  ## max\_streams\_multiplier\_for\_merge\_tables
</div>

<SettingsInfoBlock type="Float" default_value="5" />

اطلب عددًا أكبر من التدفقات عند القراءة من Merge table. ستُوزَّع التدفقات عبر الجداول التي يستخدمها Merge table. يتيح ذلك توزيع العمل بشكل أكثر توازنًا عبر خيوط التنفيذ، ويكون مفيدًا بشكل خاص عندما تختلف هذه الجداول في الحجم.

<div id="max_streams_to_max_threads_ratio">
  ## max\_streams\_to\_max\_threads\_ratio
</div>

<SettingsInfoBlock type="Float" default_value="1" />

يسمح لك باستخدام عدد من المصادر يفوق عدد خيوط التنفيذ، لتوزيع العمل بينها بصورة أكثر توازنًا. ويُفترض أن هذا حل مؤقت، إذ سيكون من الممكن مستقبلًا جعل عدد المصادر مساويًا لعدد خيوط التنفيذ، على أن يختار كل مصدر العمل المتاح له ديناميكيًا.
