> ## 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.

# إعدادات الجلسة load_balancing_*

> إعدادات جلسة ClickHouse ضمن المجموعة المُنشأة تلقائيًا load_balancing_*.

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="load_balancing">
  ## load\_balancing
</div>

<SettingsInfoBlock type="LoadBalancing" default_value="random" />

يحدّد خوارزمية اختيار النسخ المتماثلة المستخدمة في معالجة الاستعلامات الموزعة.

يدعم ClickHouse خوارزميات اختيار النسخ المتماثلة التالية:

* [عشوائي](/docs/ar/reference/settings/session-settings/load-balancing#load_balancing-random) (افتراضيًا)
* [أقرب اسم مضيف](/docs/ar/reference/settings/session-settings/load-balancing#load_balancing-nearest_hostname)
* [مسافة ليفنشتاين لاسم المضيف](/docs/ar/reference/settings/session-settings/load-balancing#load_balancing-hostname_levenshtein_distance)
* [أطول بادئة مشتركة لاسم المضيف](/docs/ar/reference/settings/session-settings/load-balancing#load_balancing-hostname_longest_common_prefix)
* [أطول لاحقة مشتركة لاسم المضيف](/docs/ar/reference/settings/session-settings/load-balancing#load_balancing-hostname_longest_common_suffix)
* [بالترتيب](/docs/ar/reference/settings/session-settings/load-balancing#load_balancing-in_order)
* [الأول أو عشوائي](/docs/ar/reference/settings/session-settings/load-balancing#load_balancing-first_or_random)
* [التناوب الدوري](/docs/ar/reference/settings/session-settings/load-balancing#load_balancing-round_robin)

انظر أيضًا:

* [distributed\_replica\_max\_ignored\_errors](/docs/ar/reference/settings/session-settings/distributed-replica#distributed_replica_max_ignored_errors)

<div id="load_balancing-random">
  ### عشوائي (الخيار الافتراضي)
</div>

```sql theme={null}
load_balancing = random
```

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

<div id="load_balancing-nearest_hostname">
  ### أقرب اسم مضيف
</div>

```sql theme={null}
load_balancing = nearest_hostname
```

يُحصى عدد الأخطاء لكل نسخة متماثلة. وكل 5 دقائق، يُقسَم عدد الأخطاء قسمةً صحيحة على 2. وبذلك، يُحسَب عدد الأخطاء للفترة الأخيرة باستخدام التنعيم الأسي. إذا كانت هناك نسخة متماثلة واحدة لديها أقل عدد من الأخطاء (أي إن الأخطاء حدثت مؤخرًا على النسخ المتماثلة الأخرى)، فيُرسَل الاستعلام إليها. وإذا كانت هناك عدة نسخ متماثلة لها أقل عدد من الأخطاء، فيُرسَل الاستعلام إلى النسخة المتماثلة التي يكون اسم مضيفها الأكثر تشابهًا مع اسم مضيف الخادم في ملف الإعدادات (أي وفقًا لعدد الأحرف المختلفة في المواضع نفسها، حتى الحد الأدنى لطول اسمي المضيفين).

على سبيل المثال، يختلف example01-01-1 و example01-01-2 في موضع واحد، بينما يختلف example01-01-1 و example01-02-2 في موضعين.
قد تبدو هذه الطريقة بدائية، لكنها لا تتطلب بيانات خارجية عن طوبولوجيا الشبكة، كما أنها لا تقارن عناوين IP، وهو ما سيكون معقدًا في حالة عناوين IPv6 لدينا.

وهكذا، إذا كانت هناك نسخ متماثلة متكافئة، فتُفضَّل الأقرب اسمًا.
ويمكننا أيضًا افتراض أنه عند إرسال استعلام إلى الخادم نفسه، وفي غياب حالات الفشل، فإن الاستعلام الموزع سيتجه أيضًا إلى الخوادم نفسها. لذلك، حتى إذا وُضعت بيانات مختلفة على النسخ المتماثلة، فسيُرجِع الاستعلام في الغالب النتائج نفسها.

<div id="load_balancing-hostname_levenshtein_distance">
  ### مسافة ليفنشتاين لاسم المضيف
</div>

```sql theme={null}
load_balancing = hostname_levenshtein_distance
```

تمامًا مثل `nearest_hostname`، لكنه يُجري المقارنة بين أسماء المضيفين باستخدام [مسافة ليفنشتاين](https://en.wikipedia.org/wiki/Levenshtein_distance). على سبيل المثال:

```text theme={null}
example-clickhouse-0-0 ample-clickhouse-0-0
1

example-clickhouse-0-0 example-clickhouse-1-10
2

example-clickhouse-0-0 example-clickhouse-12-0
3
```

<div id="load_balancing-hostname_longest_common_prefix">
  ### أطول بادئة مشتركة لاسم المضيف
</div>

```sql theme={null}
load_balancing = hostname_longest_common_prefix
```

تمامًا مثل `nearest_hostname`، لكن تُفضَّل النسخة المتماثلة التي يشترك اسم المضيف الخاص بها مع اسم المضيف المحلي في أطول بادئة مشتركة (وكلما كانت البادئة المشتركة أطول، ارتفعت الأولوية). وعلى خلاف `nearest_hostname`، الذي يحسب الأحرف المختلفة موضعًا بموضع، لا تلتبس هذه الاستراتيجية بأسماء المضيفين التي تختلف أطوال مقاطعها الرقمية. على سبيل المثال، بالنسبة إلى اسم المضيف المحلي `sfe301`:

```text theme={null}
sfe301 sde301
1

sfe301 sfe10101
3

sfe301 sde505
1
```

هنا يُفضَّل `sfe10101` لأنه يملك أطول بادئة مشتركة مع `sfe301` (`sfe`، بطول 3).

تُختار النسخ المتماثلة ذات أطوال البادئات المشتركة المتساوية عشوائيًا. وعلى وجه الخصوص، عندما لا تشترك أي نسخة متماثلة في أي بادئة مع اسم المضيف المحلي (أي عندما تكون جميع أطوال البادئات المشتركة صفرًا)، تعمل هذه الاستراتيجية تمامًا مثل `random`.

<div id="load_balancing-hostname_longest_common_suffix">
  ### أطول لاحقة مشتركة لاسم المضيف
</div>

```sql theme={null}
load_balancing = hostname_longest_common_suffix
```

تمامًا مثل `hostname_longest_common_prefix`، ولكن تُقارَن أطول *لاحقة* مشتركة بدلًا من البادئة. ويكون هذا مفيدًا عندما تكون هوية مركز البيانات مُرمَّزة في لاحقة اسم المضيف. على سبيل المثال، بالنسبة إلى اسم المضيف المحلي `et46gtghn.qc.localdomain`:

```text theme={null}
et46gtghn.qc.localdomain tr676ddgh.td.localdomain
12

et46gtghn.qc.localdomain ab999.qc.localdomain
15
```

هنا يُفضَّل `ab999.qc.localdomain` لأنه يشارك `et46gtghn.qc.localdomain` أطول لاحقة مشتركة (`.qc.localdomain`، بطول 15).

تُختار النسخ المتماثلة ذات أطوال اللواحق المشتركة المتساوية عشوائيًا. وعلى وجه الخصوص، عندما لا تشترك أي نسخة متماثلة مع اسم المضيف المحلي في أي لاحقة (أي تكون جميع أطوال اللواحق المشتركة صفرًا)، فإن هذه الاستراتيجية تعمل تمامًا مثل `random`.

<div id="load_balancing-in_order">
  ### بالترتيب
</div>

```sql theme={null}
load_balancing = in_order
```

يُجرى الوصول إلى النُسخ المتماثلة التي لديها العدد نفسه من الأخطاء بالترتيب نفسه الذي حُدِّدت به في التهيئة.
تكون هذه الطريقة مناسبة عندما تعرف بدقة أي نسخة متماثلة هي المفضلة.

<div id="load_balancing-first_or_random">
  ### الأول أو عشوائي
</div>

```sql theme={null}
load_balancing = first_or_random
```

تختار هذه الخوارزمية النسخة المتماثلة الأولى في المجموعة، أو نسخة متماثلة عشوائية إذا كانت الأولى غير متاحة. وهي فعّالة في إعدادات البنية ذات النسخ المتماثلة المتقاطعة، لكنها غير مفيدة في التكوينات الأخرى.

تحل خوارزمية `first_or_random` مشكلة خوارزمية `in_order`. فمع `in_order`، إذا تعطلت إحدى النسخ المتماثلة، تتحمل النسخة التالية عبئًا مضاعفًا، بينما تتعامل النسخ المتماثلة المتبقية مع المقدار المعتاد من الحركة. وعند استخدام خوارزمية `first_or_random`، يُوزَّع الحمل بالتساوي بين النسخ المتماثلة التي لا تزال متاحة.

يمكن تحديد النسخة المتماثلة الأولى صراحةً باستخدام الإعداد `load_balancing_first_offset`. ويمنح ذلك تحكمًا أكبر في إعادة موازنة أعباء عمل الاستعلامات بين النسخ المتماثلة.

<div id="load_balancing-round_robin">
  ### التناوب الدوري
</div>

```sql theme={null}
load_balancing = round_robin
```

تستخدم هذه الخوارزمية سياسة التناوب الدوري بين النسخ المتماثلة التي لها العدد نفسه من الأخطاء (ولا تُحتسب إلا الاستعلامات التي تتبع سياسة `round_robin`).

<div id="load_balancing_first_offset">
  ## load\_balancing\_first\_offset
</div>

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

أي نسخة متماثلة يُفضَّل إرسال query إليها عند استخدام استراتيجية load balancing ‏FIRST\_OR\_RANDOM.
