> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-detect-table-modification.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

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

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

export const VersionHistory = ({rows = []}) => {
  if (rows.length === 0) {
    return null;
  }
  const headers = ["الإصدار", "القيمة الافتراضية", "التعليق"];
  const border = "1px solid rgba(128, 128, 128, 0.3)";
  const cell = {
    border,
    padding: "0.25rem 0.5rem",
    textAlign: "start",
    verticalAlign: "top"
  };
  return <details className="not-prose" style={{
    border,
    borderRadius: "0.5rem",
    margin: "0.5rem 0",
    padding: "0.5rem 0.75rem",
    fontSize: "0.8125rem",
    lineHeight: "1.125rem"
  }}>
      <summary style={{
    cursor: "pointer",
    fontWeight: 600,
    opacity: 0.72
  }}>
        سجل الإصدارات
      </summary>
      <table style={{
    borderCollapse: "collapse",
    width: "100%",
    margin: "0.5rem 0 0"
  }}>
        <thead>
          <tr>
            {headers.map(header => <th key={header} style={{
    ...cell,
    fontWeight: 600,
    opacity: 0.72
  }}>
                {header}
              </th>)}
          </tr>
        </thead>
        <tbody>
          {rows.map((row, row_index) => <tr key={row.id ?? row_index}>
              {(row.items ?? []).map((item, item_index) => <td key={item_index} style={{
    ...cell,
    overflowWrap: "anywhere"
  }}>
                  {item?.label}
                </td>)}
            </tr>)}
        </tbody>
      </table>
    </details>;
};

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](/ar/reference/system-tables/settings)، وهي مُولَّدة تلقائيًا من [المصدر](https://github.com/ClickHouse/ClickHouse/blob/master/src/Core/Settings.cpp).

<div id="max_insert_block_size">
  ## max\_insert\_block\_size
</div>

**الأسماء البديلة**: `max_insert_block_size_rows`

<SettingsInfoBlock type="NonZeroUInt64" default_value="1048449" />

الحد الأقصى لحجم الكتل (من حيث عدد الصفوف) التي يجري تكوينها للإدراج في جدول.

يتحكم هذا الإعداد في تكوين الكتل في سياقين:

1. تحليل التنسيق: عندما يُحلِّل الخادم تنسيقات الإدخال المعتمدة على الصفوف (CSV وTSV وJSONEachRow وغيرها) من أي واجهة (HTTP، وclickhouse-client مع بيانات inline، وgRPC، وبروتوكول PostgreSQL wire)، تُخرَج الكتل عندما:

   * يتم بلوغ كلٍّ من min\_insert\_block\_size\_rows وmin\_insert\_block\_size\_bytes، OR
   * يتم بلوغ أحد max\_insert\_block\_size\_rows أو max\_insert\_block\_size\_bytes

   ملاحظة: عند استخدام clickhouse-client أو clickhouse-local للقراءة من ملف، يتولى العميل نفسه تحليل البيانات، ويُطبَّق هذا الإعداد على جهة العميل.

2. عمليات INSERT: أثناء استعلامات INSERT وعندما تتدفق البيانات عبر materialized views، يعتمد سلوك هذا الإعداد على `use_strict_insert_block_limits`:

   * عند التمكين: تُخرَج الكتل عندما:
     * الحدود الدنيا (AND): يتم بلوغ كلٍّ من min\_insert\_block\_size\_rows وmin\_insert\_block\_size\_bytes
     * الحدود القصوى (OR): يتم بلوغ أحد max\_insert\_block\_size\_rows أو max\_insert\_block\_size\_bytes

   * عند التعطيل: تُخرَج الكتل عند بلوغ min\_insert\_block\_size\_rows OR min\_insert\_block\_size\_bytes. ولا يتم فرض إعدادات max\_insert\_block\_size.

القيم الممكنة:

* عدد صحيح موجب.

<div id="max_insert_block_size_bytes">
  ## max\_insert\_block\_size\_bytes
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.1"},{"label": "0"},{"label": "إعداد جديد يتيح التحكم في حجم الكتل بالبايت أثناء تحليل البيانات في تنسيق الإدخال Row."}]}]} />

الحد الأقصى لحجم الكتل (بالبايت) التي تُكوَّن لإدراجها في جدول.

يعمل هذا الإعداد مع max\_insert\_block\_size\_rows ويتحكم في تكوين الكتل ضمن السياق نفسه. راجع max\_insert\_block\_size\_rows للحصول على معلومات تفصيلية حول متى وكيفية تطبيق هذه الإعدادات.

القيم الممكنة:

* عدد صحيح موجب.
* 0 — لا يشارك الإعداد في تكوين الكتل.

<div id="max_insert_delayed_streams_for_parallel_write">
  ## max\_insert\_delayed\_streams\_for\_parallel\_write
</div>

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

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

القيمة الافتراضية في Cloud: `50`.

<div id="max_insert_threads">
  ## max\_insert\_threads
</div>

<SettingsInfoBlock type="MaxThreads" default_value="auto(N)" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.8"},{"label": "0"},{"label": "تغيّرت القيمة الافتراضية من 1 (من دون تنفيذ متوازٍ) إلى auto (0)، والتي تُحوَّل إلى عدد أنوية CPU المتاحة للخادم، وتُخفَّض عند وجود ضغط على الذاكرة عبر `max_insert_threads_min_free_memory_per_thread`. يؤدي ذلك إلى تنفيذ `INSERT SELECT` بالتوازي افتراضيًا. اضبطها على 1 لاستعادة السلوك السابق أحادي الخيط."}]}]} />

الحد الأقصى لعدد الخيوط لتنفيذ استعلام `INSERT`.

ينطبق ذلك على كل من `INSERT SELECT` وعمليات `INSERT` العادية التي تُرسل بياناتها من
`clickhouse-client` أو عبر واجهة HTTP. ويُنفَّذ جانب الكتابة في المسار
(دمج الكتل وكتابتها في الجدول الوجهة) بالتوازي
باستخدام ما يصل إلى هذا العدد من الخيوط.

القيم الممكنة:

* 0 — تلقائي. يستخدم عدد أنوية CPU المتاحة للخادم (وهي نفس القيمة التلقائية لـ [`max_threads`](/ar/reference/settings/session-settings/max-threads#max_threads))، ويُخفَّض عند وجود ضغط على الذاكرة بواسطة [`max_insert_threads_min_free_memory_per_thread`](/ar/reference/settings/session-settings/max-insert#max_insert_threads_min_free_memory_per_thread).
* 1 — يُنفَّذ `INSERT` في خيط واحد (من دون تنفيذ متوازٍ). استخدم هذا للحفاظ على ترتيب الإدراج في `INSERT ... SELECT`.
* عدد صحيح موجب أكبر من 1 — تنفيذ متوازٍ بعدد الخيوط المحدد.

قبل الإصدار 26.8، كانت القيمة الافتراضية هي `1` (من دون تنفيذ متوازٍ). ومنذ الإصدار 26.8، تُحوَّل القيمة الافتراضية (`0`) إلى عدد أنوية CPU، لذا يُنفَّذ `INSERT` بالتوازي افتراضيًا. اضبط `max_insert_threads` على `1` (أو استخدم إعداد `compatibility`) لاستعادة السلوك السابق.

القيمة الافتراضية في Cloud:

* `1` للعُقد ذات ذاكرة 8 GiB
* `2` للعُقد ذات ذاكرة 16 GiB
* `4` للعُقد الأكبر

لا يسري التنفيذ المتوازي لـ `INSERT SELECT` إلا إذا كان جزء `SELECT` يُنفَّذ بالتوازي؛ راجع إعداد [`max_threads`](/ar/reference/settings/session-settings/max-threads#max_threads).
بالنسبة إلى `INSERT` العادي، تُقرأ بيانات الإدخال وتُحلَّل كتدفق واحد، ثم يُعاد تحجيم المسار إلى هذا العدد من التدفقات للكتابة.
لا ينطبق التوازي في جانب الكتابة إلا على عمليات `INSERT` العادية المتزامنة: إذ تُخزَّن عمليات الإدراج غير المتزامنة ([`async_insert`](/ar/reference/settings/session-settings/async-insert#async_insert) `= 1`) في قائمة انتظار وتُفرَّغ في الخلفية، لذا لا تتأثر بهذا الإعداد وتظل دائمًا ذات تدفق واحد.
لا يُنفَّذ جانب الكتابة بالتوازي إلا عندما يكون ذلك آمنًا؛ وإلا فإنه يبقى ذا تدفق واحد ولا يكون لهذا الإعداد تأثير فيه. وبالأخص، تبقى الكتابة ذات تدفق واحد عند تمكين [`use_strict_insert_block_limits`](/ar/reference/settings/session-settings/use#use_strict_insert_block_limits)، أو عندما يلغي جدول الوجهة (أو جدول يعيد التوجيه إليه) تكرار الكتل المُدرجة ويكون إلغاء تكرار الإدراج مُمكّنًا للاستعلام (راجع [`deduplicate_insert`](/ar/reference/settings/session-settings/deduplicate-insert#deduplicate_insert))، أو عندما تكون للوجهة materialized views تابعة — بما في ذلك عروض جدول تعيد الوجهة التوجيه إليه، مثلًا خلف `Alias` — (ما لم يكن [`parallel_view_processing`](/ar/reference/settings/session-settings/parallel#parallel_view_processing) مُمكّنًا وكانت سلاسل العروض التابعة خالية من مخاطر إلغاء التكرار؛ أي إن إلغاء التكرار في العروض معطّل ([`deduplicate_blocks_in_dependent_materialized_views`](/ar/reference/settings/session-settings/other#deduplicate_blocks_in_dependent_materialized_views)) أو لا يمكن لأي مسار من العروض التابعة إلغاء التكرار)، وكذلك دائمًا للوجهات `Buffer` و`Distributed`. يُفرِّغ `Buffer` بياناته في سياقه الخاص، بينما يعيد `Distributed` توجيه الكتابة إلى جزء بعيد (قد يخزّن البيانات مؤقتًا بنفسه)، لذا لا تتحكم إعدادات إلغاء التكرار الخاصة بهذا الاستعلام في الكتابة النهائية، وتبقى ذات تدفق واحد بغض النظر عنها. كما يبقى إدراج النصاب غير المتوازي ([`insert_quorum`](/ar/reference/settings/session-settings/insert-quorum#insert_quorum) يساوي `2` أو أكبر، أو `'auto'`، و[`insert_quorum_parallel`](/ar/reference/settings/session-settings/insert-quorum#insert_quorum_parallel) معطّل) ذا تدفق واحد، لأنه لا يسمح إلا بجزء نصاب واحد قيد التنفيذ لكل جدول.
تؤدي القيم الأعلى إلى زيادة استخدام الذاكرة.

<div id="max_insert_threads_min_free_memory_per_thread">
  ## max\_insert\_threads\_min\_free\_memory\_per\_thread
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "4294967296"},{"label": "إعداد جديد لتقييد عدد خيوط الإدراج استنادًا إلى مقدار الذاكرة الحرة المتاحة"}]}]} />

مماثل لـ `max_threads_min_free_memory_per_thread`، لكنه يُطبَّق على `max_insert_threads` بدلًا من `max_threads`. والقيمة الافتراضية هنا أعلى لأن مسارات الإدراج تحتفظ عادةً بمخازن مؤقتة أكبر لكل خيط (مثل أجزاء MergeTree وكتل الضغط) مقارنةً بمسارات القراءة.

إذا كان مقدار الذاكرة الحرة أقل من `max_insert_threads` مضروبًا في هذه القيمة، فسيُخفَّض `max_insert_threads` بما يتناسب مع ذلك، حتى حد أدنى يبلغ `1`.

اضبطه على `0` لتعطيل هذا القيد.
