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

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

> الإعدادات الموجودة في جدول ``system.settings``.

export const SettingsInfoBlock = ({type, default_value, changeable_without_restart}) => {
  const cells = [["النوع", <Badge color="surface">{type}</Badge>], ["القيمة الافتراضية", <Badge color="surface">{default_value}</Badge>]];
  if (changeable_without_restart) {
    const isYes = String(changeable_without_restart).trim().toLowerCase() === "yes";
    const badge = isYes ? <Badge icon="check" stroke color="green" size="sm">نعم</Badge> : <Badge icon="x" stroke color="red" size="sm">لا</Badge>;
    cells.push(["يمكن تغييره دون إعادة التشغيل", badge]);
  }
  return <table>
      <thead>
        <tr>
          {cells.map(([h]) => <th key={h}>{h}</th>)}
        </tr>
      </thead>
      <tbody>
        <tr>
          {cells.map(([h, v]) => <td key={h}>{v}</td>)}
        </tr>
      </tbody>
    </table>;
};

export const CloudOnlyBadge = () => {
  return <div className="cloudBadge">
            <div className="cloudIcon">
            <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
                <path fillRule="evenodd" clipRule="evenodd" d="M5.33395 12.6667H12.3739C13.6593 12.6667 14.7073 11.6187 14.7073 10.3334C14.7073 9.04804 13.6593 8.00004 12.3739 8.00004H12.0839V7.33337C12.0839 5.12671 10.2906 3.33337 8.08395 3.33337C6.09928 3.33337 4.45395 4.78537 4.14195 6.68204C2.55728 6.76271 1.29395 8.06204 1.29395 9.66671C1.29395 11.3234 2.63728 12.6667 4.29395 12.6667H5.33395Z" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round" />
            </svg>
        </div>
            {'متاح فقط في ClickHouse Cloud'}
        </div>;
};

export const galaxyOnClick = eventName => () => {
  try {
    if (typeof window !== "undefined" && window.galaxy && eventName) {
      window.galaxy.track(eventName, {
        interaction: "click"
      });
    }
  } catch (e) {}
};

export const BetaBadge = ({link, galaxyTrack, galaxyEvent}) => {
  if (link) {
    return <a href={link} target="_blank" rel="noopener noreferrer" className="betaBadge" onClick={galaxyTrack && galaxyEvent ? galaxyOnClick(galaxyEvent) : undefined}>
                <Icon />
                <span>Beta</span>
            </a>;
  }
  return <div className="betaBadge">
            <Icon />
            <span>
                ميزة Beta. 
                <u>
                    <a href="/docs/beta-and-experimental-features#beta-features">
                        مزيد من المعلومات.
                    </a>
                </u>
            </span>
        </div>;
};

export const ExperimentalBadge = () => {
  return <div className="experimentalBadge">
            <div className="experimentalIcon">
            <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
                <path strokeWidth="1.25" d="M5.5 2H10.5" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path strokeWidth="1.25" d="M9.50015 2V6.19625L13.4283 12.7425C13.4738 12.8183 13.4985 12.9049 13.4996 12.9934C13.5008 13.0818 13.4785 13.169 13.435 13.246C13.3914 13.323 13.3283 13.3871 13.2519 13.4317C13.1755 13.4764 13.0886 13.4999 13.0002 13.5H3.00015C2.91164 13.5 2.8247 13.4766 2.74822 13.432C2.67174 13.3874 2.60847 13.3233 2.56487 13.2463C2.52126 13.1693 2.49889 13.082 2.50004 12.9935C2.50119 12.905 2.52582 12.8184 2.5714 12.7425L6.50015 6.19625V2" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path strokeWidth="1.25" d="M4.47656 9.56754C5.30344 9.41254 6.47656 9.47942 7.99969 10.25C10.0153 11.2707 11.4216 11.0569 12.2184 10.7282" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
            </svg>
        </div>
            ميزة تجريبية. <u><a href="/docs/beta-and-experimental-features#experimental-features">تعرّف على المزيد.</a></u>
        </div>;
};

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

<div id="add_http_cors_header">
  ## add\_http\_cors\_header
</div>

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

إضافة ترويسة CORS الخاصة بـ HTTP.

<div id="additional_result_filter">
  ## additional\_result\_filter
</div>

تعبير تصفية إضافي يُطبَّق على نتيجة استعلام `SELECT`.
لا يُطبَّق هذا الإعداد على أي استعلام فرعي.

**مثال**

```sql theme={null}
INSERT INTO table_1 VALUES (1, 'a'), (2, 'bb'), (3, 'ccc'), (4, 'dddd');
SElECT * FROM table_1;
```

```response theme={null}
┌─x─┬─y────┐
│ 1 │ a    │
│ 2 │ bb   │
│ 3 │ ccc  │
│ 4 │ dddd │
└───┴──────┘
```

```sql theme={null}
SELECT *
FROM table_1
SETTINGS additional_result_filter = 'x != 2'
```

```response theme={null}
┌─x─┬─y────┐
│ 1 │ a    │
│ 3 │ ccc  │
│ 4 │ dddd │
└───┴──────┘
```

<div id="additional_table_filters">
  ## additional\_table\_filters
</div>

<SettingsInfoBlock type="Map" default_value="{}" />

تعبير تصفية إضافي يُطبَّق بعد قراءة البيانات
من الجدول المحدد.

**مثال**

```sql theme={null}
INSERT INTO table_1 VALUES (1, 'a'), (2, 'bb'), (3, 'ccc'), (4, 'dddd');
SELECT * FROM table_1;
```

```response theme={null}
┌─x─┬─y────┐
│ 1 │ a    │
│ 2 │ bb   │
│ 3 │ ccc  │
│ 4 │ dddd │
└───┴──────┘
```

```sql theme={null}
SELECT *
FROM table_1
SETTINGS additional_table_filters = {'table_1': 'x != 2'}
```

```response theme={null}
┌─x─┬─y────┐
│ 1 │ a    │
│ 3 │ ccc  │
│ 4 │ dddd │
└───┴──────┘
```

<div id="aggregate_function_input_format">
  ## aggregate\_function\_input\_format
</div>

<SettingsInfoBlock type="AggregateFunctionInputFormat" default_value="state" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "state"},{"label": "إعداد جديد للتحكم في تنسيق إدخال AggregateFunction أثناء عمليات INSERT. تُضبط قيمة الإعداد على state افتراضيًا"}]}]} />

تنسيق إدخال AggregateFunction أثناء عمليات INSERT.

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

* `state` — سلسلة ثنائية تحتوي على الحالة المُسلسلة (الافتراضي). وهذا هو السلوك الافتراضي، حيث يُتوقع أن تكون قيم AggregateFunction بيانات ثنائية.
* `value` — يتوقع التنسيق قيمة واحدة لوسيطة الدالة التجميعية، أو في حال وجود عدة وسائط، Tuple منها. سيُفك تسلسلها باستخدام IDataType أو DataTypeTuple المقابل، ثم تُجمَّع لتكوين الحالة.
* `array` — يتوقع التنسيق Array من القيم، كما هو موضح في الخيار `value` أعلاه. وستُجمَّع جميع عناصر Array لتكوين الحالة.

**أمثلة**

لجدول ذي البنية التالية:

```sql theme={null}
CREATE TABLE example (
    user_id UInt64,
    avg_session_length AggregateFunction(avg, UInt32)
);
```

عند استخدام `aggregate_function_input_format = 'value'`:

```sql theme={null}
INSERT INTO example FORMAT CSV
123,456
```

عند استخدام `aggregate_function_input_format = 'array'`:

```sql theme={null}
INSERT INTO example FORMAT CSV
123,"[456,789,101]"
```

ملاحظة: تنسيقا `value` و`array` أبطأ من تنسيق `state` الافتراضي، لأنهما يتطلبان إنشاء القيم وتجميعها أثناء عملية الإدراج.

<div id="aggregate_functions_null_for_empty">
  ## aggregate\_functions\_null\_for\_empty
</div>

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

يُتيح تمكين أو تعطيل إعادة كتابة جميع aggregate functions في الاستعلام، مع إضافة اللاحقة [-OrNull](/ar/reference/functions/aggregate-functions/combinators#-ornull) إليها. فعِّله لتحقيق التوافق مع معيار SQL.
يُنفَّذ ذلك من خلال query rewrite (على غرار الإعداد [count\_distinct\_implementation](#count_distinct_implementation)) للحصول على نتائج متسقة في distributed queries.

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

* 0 — معطّل.
* 1 — مفعّل.

**مثال**

انظر إلى الاستعلام التالي الذي يتضمن aggregate functions:

```sql theme={null}
SELECT SUM(-1), MAX(0) FROM system.one WHERE 0;
```

مع `aggregate_functions_null_for_empty = 0` ستكون النتيجة:

```text theme={null}
┌─SUM(-1)─┬─MAX(0)─┐
│       0 │      0 │
└─────────┴────────┘
```

مع `aggregate_functions_null_for_empty = 1` فستكون النتيجة:

```text theme={null}
┌─SUMOrNull(-1)─┬─MAXOrNull(0)─┐
│          NULL │         NULL │
└───────────────┴──────────────┘
```

<div id="aggregation_in_order_max_block_bytes">
  ## aggregation\_in\_order\_max\_block\_bytes
</div>

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

الحد الأقصى لحجم الكتلة بالبايتات التي تتراكم أثناء التجميع وفق ترتيب المفتاح الأساسي. يتيح تقليل حجم الكتلة زيادة التوازي في المرحلة النهائية من دمج التجميع.

<div id="aggregation_memory_efficient_merge_threads">
  ## aggregation\_memory\_efficient\_merge\_threads
</div>

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

عدد الخيوط المستخدمة لدمج نتائج التجميع الوسيطة في الوضع الموفّر للذاكرة. كلما زاد هذا العدد، زاد استهلاك الذاكرة. وتعني القيمة 0 — نفس قيمة `max_threads`.

<div id="ai_function_credentials">
  ## ai\_function\_credentials
</div>

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.6"},{"label": ""},{"label": "إعداد جديد"}]}]} />

اسم المجموعة المسماة التي تستخدمها دوال الذكاء الاصطناعي لبيانات اعتماد المزوّد والتهيئة (`provider` و`endpoint` و`model` و`api_key` الاختياري وغيرها). عند تركها فارغة، يُرفَع استثناء.

<div id="ai_function_embedding_max_batch_size">
  ## ai\_function\_embedding\_max\_batch\_size
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.6"},{"label": "100"},{"label": "إعداد جديد"}]}]} />

الحد الأقصى لعدد النصوص التي يمكن تضمينها في طلب HTTP واحد يُرسله `aiEmbed`. تُجمَّع النصوص في دفعات بهذا الحجم لتقليل العبء الزائد الناتج عن استدعاءات واجهة برمجة تطبيقات. على سبيل المثال، ينتج عن 500 نصًا فريدًا مع حجم دفعة قدره 100 عدد 5 طلبات HTTP.

<div id="ai_function_max_api_calls_per_query">
  ## ai\_function\_max\_api\_calls\_per\_query
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "0"},{"label": "إعداد جديد"}]}]} />

الحد الأقصى لعدد طلبات HTTP التي يمكن لدوال الذكاء الاصطناعي إرسالها لكل استعلام. اضبطه على 0 للتعطيل.

<div id="ai_function_max_input_tokens_per_query">
  ## ai\_function\_max\_input\_tokens\_per\_query
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "1000000"},{"label": "إعداد جديد"}]}]} />

الحد الأقصى لإجمالي رموز الإدخال (prompt) عبر جميع استدعاءات واجهة برمجة تطبيقات دالة الذكاء الاصطناعي ضمن استعلام واحد. ويُتتبَّع هذا الإجمالي تراكميًا من استجابات المزوّد. لاحظ أن هذا الحد قد يُتجاوَز بمقدار رموز الإدخال الخاصة باستدعاء واحد، لأن عدد رموز الإدخال لذلك الاستدعاء لا يكون معروفًا مسبقًا. اضبط القيمة على 0 للتعطيل.

لا يُطبَّق هذا الحد إلا على المزوّدين الذين يرسلون كائن `usage` في استجابتهم (OpenAI وAnthropic وvLLM). أمّا المزوّدون الذين لا يرسلون معلومات استخدام الرموز (وأبرزهم HuggingFace TEI)، فيجعلون العداد يبقى عند 0 — استخدم `ai_function_max_api_calls_per_query` بدلًا من ذلك لتقييد مثل هذه الاستدعاءات.

<div id="ai_function_max_output_tokens_per_query">
  ## ai\_function\_max\_output\_tokens\_per\_query
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "500000"},{"label": "إعداد جديد"}]}]} />

الحد الأقصى لإجمالي رموز الإخراج (completion) عبر جميع استدعاءات واجهة برمجة تطبيقات الخاصة بدالة الذكاء الاصطناعي ضمن استعلام واحد. ويُحتسب ذلك تراكميًا من استجابات المزوّد. لاحظ أن هذا الحد قد يُتجاوز بمقدار رموز الإخراج الخاصة باستدعاء واحد، لأن عدد رموز الإخراج لذلك الاستدعاء لا يكون معروفًا مسبقًا. اضبط القيمة على 0 للتعطيل.

لا يُطبَّق هذا الحد إلا على المزوّدين الذين يرسلون كائن `usage` في استجابتهم (OpenAI وAnthropic وvLLM). ولا ينطبق على دوال embedding (وخاصة aiEmbed)، لأنها لا تُنتج أي رموز إخراج مطلقًا.

<div id="ai_function_max_retries">
  ## ai\_function\_max\_retries
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "0"},{"label": "إعداد جديد"}]}]} />

الحد الأقصى لعدد مرات إعادة المحاولة عند حدوث أخطاء عابرة لكل طلب فردي إلى واجهة برمجة تطبيقات. تستخدم كل محاولة إعادة آلية تراجع أسي تبدأ من `ai_function_retry_initial_delay_ms`.

<div id="ai_function_request_timeout_sec">
  ## ai\_function\_request\_timeout\_sec
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "60"},{"label": "إعداد جديد"}]}]} />

المهلة الزمنية، بالثواني، لكل طلب HTTP فردي تُجريه دوال الذكاء الاصطناعي (عمليات الإكمال في AI Chat واستدعاءات واجهة برمجة تطبيقات التضمين). إذا لم يكتمل الطلب خلال هذه المدة، فسيُعتبر فاشلًا وقد تُعاد محاولته وفقًا لـ `ai_function_max_retries`.

<div id="ai_function_retry_initial_delay_ms">
  ## ai\_function\_retry\_initial\_delay\_ms
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "1000"},{"label": "إعداد جديد"}]}]} />

التأخير الأولي، بالملي ثانية، قبل أول إعادة محاولة لطلب واجهة برمجة تطبيقات لدالة الذكاء الاصطناعي بعد فشله. ويتضاعف التأخير مع كل محاولة لاحقة (تراجع أُسّي). على سبيل المثال، مع الإعدادات الافتراضية: 1000ms، 2000ms، 4000ms.

<div id="ai_function_throw_on_error">
  ## ai\_function\_throw\_on\_error
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "1"},{"label": "إعداد جديد"}]}]} />

إذا كانت القيمة true (وهي القيمة الافتراضية)، فإن استدعاء دالة الذكاء الاصطناعي الذي يفشل نهائيًا بعد استنفاد جميع retries يُجهض الاستعلام برفع Exception. وإذا كانت false، يتلقى الصف الذي فشل القيمة الافتراضية لنوع العمود (سلسلة فارغة لنوع String)، وتستمر المعالجة.

<div id="ai_function_throw_on_quota_exceeded">
  ## ai\_function\_throw\_on\_quota\_exceeded
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "1"},{"label": "إعداد جديد"}]}]} />

إذا كانت القيمة true (افتراضيًا)، فإن تجاوز حد الحصة لدالة الذكاء الاصطناعي (`ai_function_max_input_tokens_per_query` أو `ai_function_max_output_tokens_per_query` أو `ai_function_max_api_calls_per_query`) يُجهِض الاستعلام مع إطلاق استثناء. وإذا كانت القيمة false، فستتلقى الصفوف المتبقية القيمة الافتراضية لنوع العمود (سلسلة فارغة لنوع String).

<div id="allow_aggregate_partitions_independently">
  ## allow\_aggregate\_partitions\_independently
</div>

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

تمكين التجميع المستقل للأقسام على خيوط منفصلة عندما يكون مفتاح القسم ملائمًا لمفتاح group by. ويكون ذلك مفيدًا عندما يكون عدد الأقسام قريبًا من عدد الأنوية وتكون الأقسام متقاربة في الحجم

<div id="allow_archive_path_syntax">
  ## allow\_archive\_path\_syntax
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.8"},{"label": "1"},{"label": "تمت إضافة إعداد جديد لإتاحة تعطيل صياغة مسار الأرشيف."}]}, {"id": "row-2","items": [{"label": "24.5"},{"label": "1"},{"label": "تمت إضافة إعداد جديد لإتاحة تعطيل صياغة مسار الأرشيف."}]}]} />

ستفسّر محركات File وS3 ودالة الجدول المسارات التي تحتوي على '::' على أنها `<archive> :: <file>` إذا كان للأرشيف الامتداد الصحيح.

<div id="allow_asynchronous_read_from_io_pool_for_merge_tree">
  ## allow\_asynchronous\_read\_from\_io\_pool\_for\_merge\_tree
</div>

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

استخدم مجمّع I/O في الخلفية للقراءة من جداول MergeTree. قد يزيد هذا الإعداد من الأداء في الاستعلامات المقيّدة بعمليات I/O

<div id="allow_calculating_subcolumns_sizes_for_merge_tree_reading">
  ## allow\_calculating\_subcolumns\_sizes\_for\_merge\_tree\_reading
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": "1"},{"label": "السماح بحساب أحجام الأعمدة الفرعية عند القراءة من MergeTree لتحسين تقسيم مهام القراءة"}]}]} />

عند التمكين، سيحسب ClickHouse أحجام الملفات المطلوبة لقراءة كل عمود فرعي، بما يحسّن حساب أحجام المهام وكتل البيانات.

<div id="allow_changing_replica_until_first_data_packet">
  ## allow\_changing\_replica\_until\_first\_data\_packet
</div>

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

إذا كان هذا الإعداد مُمكّنًا، ففي الطلبات التحوطية يمكننا بدء اتصال جديد إلى أن نتلقى أول حزمة بيانات، حتى إذا كنا قد أحرزنا بعض التقدم بالفعل
(لكن `Progress` لم يتم تحديثه خلال مهلة `receive_data_timeout`)؛ وإلا فإننا نعطّل تغيير النسخة المتماثلة بعد أول مرة نحرز فيها تقدمًا.

<div id="allow_create_index_without_type">
  ## allow\_create\_index\_without\_type
</div>

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

يسمح بتنفيذ استعلام CREATE INDEX بدون TYPE. سيتم تجاهل الاستعلام. هذا مخصص لاختبارات التوافق مع SQL.

<div id="allow_custom_error_code_in_throwif">
  ## allow\_custom\_error\_code\_in\_throwif
</div>

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

يتيح استخدام رمز خطأ مخصص في الدالة throwIf(). إذا كانت القيمة true، فقد تحمل الاستثناءات المُطلَقة رموز الخطأ غير متوقعة.

<div id="allow_ddl">
  ## allow\_ddl
</div>

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

إذا ضُبطت هذه القيمة على true، فسيُسمح للمستخدم بتنفيذ استعلامات DDL.

<div id="allow_deprecated_database_ordinary">
  ## allow\_deprecated\_database\_ordinary
</div>

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

يسمح بإنشاء قواعد بيانات باستخدام محرك Ordinary المُهمَل

<div id="allow_deprecated_error_prone_window_functions">
  ## allow\_deprecated\_error\_prone\_window\_functions
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.5"},{"label": "0"},{"label": "السماح باستخدام دوال النوافذ المُهملة والمُعرَّضة للأخطاء (neighbor, runningAccumulate, runningDifferenceStartingWithFirstValue, runningDifference)"}]}]} />

السماح باستخدام دوال النوافذ المُهملة والمُعرَّضة للأخطاء (neighbor, runningAccumulate, runningDifferenceStartingWithFirstValue, runningDifference)

<div id="allow_deprecated_snowflake_conversion_functions">
  ## allow\_deprecated\_snowflake\_conversion\_functions
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.6"},{"label": "0"},{"label": "تم تعطيل الدوال المهجورة snowflakeToDateTime[64] و dateTime[64]ToSnowflake."}]}]} />

الدوال `snowflakeToDateTime` و `snowflakeToDateTime64` و `dateTimeToSnowflake` و `dateTime64ToSnowflake` مهجورة ومُعطَّلة افتراضيًا.
يُرجى استخدام الدوال `snowflakeIDToDateTime` و `snowflakeIDToDateTime64` و `dateTimeToSnowflakeID` و `dateTime64ToSnowflakeID` بدلًا منها.

لإعادة تفعيل الدوال المهجورة (على سبيل المثال، خلال فترة انتقالية)، يُرجى ضبط هذا الإعداد على `true`.

<div id="allow_deprecated_syntax_for_merge_tree">
  ## allow\_deprecated\_syntax\_for\_merge\_tree
</div>

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

السماح بإنشاء جداول \*MergeTree باستخدام صياغة قديمة لتعريف المحرّك

<div id="allow_distributed_ddl">
  ## allow\_distributed\_ddl
</div>

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

إذا ضُبطت هذه القيمة على true، فسيُسمح للمستخدم بتنفيذ استعلامات DDL الموزعة.

<div id="allow_drop_detached">
  ## allow\_drop\_detached
</div>

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

السماح بتنفيذ استعلامات ALTER TABLE ... DROP DETACHED PART\[ITION] ...

<div id="allow_dynamic_type_in_join_keys">
  ## allow\_dynamic\_type\_in\_join\_keys
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.10"},{"label": "0"},{"label": "عدم السماح باستخدام النوع Dynamic في مفاتيح JOIN افتراضيًا"}]}]} />

يسمح باستخدام النوع Dynamic في مفاتيح JOIN. أُضيف هذا الإعداد للتوافق. لا يُنصح باستخدام النوع Dynamic في مفاتيح JOIN لأن المقارنة مع الأنواع الأخرى قد تؤدي إلى نتائج غير متوقعة.

<div id="allow_execute_multiif_columnar">
  ## allow\_execute\_multiif\_columnar
</div>

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

السماح بتنفيذ الدالة multiIf بصورة عمودية

<div id="allow_experimental_ai_functions">
  ## allow\_experimental\_ai\_functions
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "0"},{"label": "إعداد جديد"}]}]} />

فعِّل دوال الذكاء الاصطناعي التجريبية (مثل `aiGenerateContent`). تُجري هذه الوظائف استدعاءات HTTP خارجية إلى مزوّدي خدمات الذكاء الاصطناعي.

<div id="allow_experimental_analyzer">
  ## allow\_experimental\_analyzer
</div>

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

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "1"},{"label": "تمكين محلل الاستعلامات والمخطط افتراضيًا."}]}]} />

السماح باستخدام محلل الاستعلامات الجديد.

<div id="allow_experimental_cleanup_old_data_files_compaction">
  ## allow\_experimental\_cleanup\_old\_data\_files\_compaction
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "0"},{"label": "إعداد جديد"}]}]} />

السماح بتنظيف ملفات البيانات القديمة أثناء عملية دمج Iceberg.

<div id="allow_experimental_codecs">
  ## allow\_experimental\_codecs
</div>

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

إذا ضُبط على true، فسيُسمح بتحديد برامج ترميز ضغط تجريبية (لكن لا توجد لدينا أيٌّ منها بعد، لذا لا يفعل هذا الخيار شيئًا).

<div id="allow_experimental_correlated_subqueries">
  ## allow\_experimental\_correlated\_subqueries
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "1"},{"label": "اعتبار دعم الاستعلامات الفرعية المترابطة ضمن حالة بيتا."}]}, {"id": "row-2","items": [{"label": "25.4"},{"label": "0"},{"label": "أُضيف إعداد جديد للسماح بتنفيذ الاستعلامات الفرعية المترابطة."}]}]} />

يسمح بتنفيذ الاستعلامات الفرعية المترابطة.

<div id="allow_experimental_database_glue_catalog">
  ## allow\_experimental\_database\_glue\_catalog
</div>

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

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.3"},{"label": "0"},{"label": "السماح باستخدام محرك قاعدة البيانات التجريبي DataLakeCatalog مع catalog_type = 'glue'"}]}]} />

السماح باستخدام محرك قاعدة البيانات التجريبي DataLakeCatalog مع catalog\_type = 'glue'

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

<div id="allow_experimental_database_hms_catalog">
  ## allow\_experimental\_database\_hms\_catalog
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "0"},{"label": "السماح باستخدام محرك قاعدة البيانات التجريبي DataLakeCatalog مع catalog_type = 'hive'"}]}]} />

السماح باستخدام محرك قاعدة البيانات التجريبي DataLakeCatalog مع catalog\_type = 'hms'

<div id="allow_experimental_database_iceberg">
  ## allow\_experimental\_database\_iceberg
</div>

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

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.12"},{"label": "0"},{"label": "إعداد جديد."}]}]} />

السماح باستخدام محرك قاعدة البيانات التجريبي DataLakeCatalog مع catalog\_type = 'iceberg'

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

<div id="allow_experimental_database_materialized_postgresql">
  ## allow\_experimental\_database\_materialized\_postgresql
</div>

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

السماح بإنشاء قاعدة بيانات باستخدام Engine=MaterializedPostgreSQL(...).

<div id="allow_experimental_database_paimon_rest_catalog">
  ## allow\_experimental\_database\_paimon\_rest\_catalog
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.1"},{"label": "0"},{"label": "إعداد جديد"}]}]} />

تمكين محرك قاعدة البيانات التجريبي DataLakeCatalog مع `catalog_type = 'paimon_rest'`

<div id="allow_experimental_database_unity_catalog">
  ## allow\_experimental\_database\_unity\_catalog
</div>

**اسم بديل**: `allow_database_unity_catalog`

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.3"},{"label": "0"},{"label": "السماح باستخدام محرك قاعدة البيانات التجريبي DataLakeCatalog مع catalog_type = 'unity'"}]}]} />

السماح باستخدام محرك قاعدة البيانات التجريبي DataLakeCatalog مع catalog\_type = 'unity'

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

<div id="allow_experimental_delta_kernel_rs">
  ## allow\_experimental\_delta\_kernel\_rs
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "1"},{"label": "إعداد جديد"}]}]} />

يسمح بالتنفيذ التجريبي لـ delta-kernel-rs.

<div id="allow_experimental_delta_lake_writes">
  ## allow\_experimental\_delta\_lake\_writes
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.9"},{"label": "0"},{"label": "إعداد جديد."}]}]} />

يُفعّل ميزة الكتابة عبر delta-kernel.

<div id="allow_experimental_expire_snapshots">
  ## allow\_experimental\_expire\_snapshots
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": "0"},{"label": "إعداد جديد."}]}]} />

يسمح بتنفيذ أمر Iceberg التجريبي `ALTER TABLE ... EXECUTE expire_snapshots`.

<div id="allow_experimental_funnel_functions">
  ## allow\_experimental\_funnel\_functions
</div>

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

يُمكّن الوظائف التجريبية لتحليل مسار التحويل.

<div id="allow_experimental_geo_types_in_iceberg">
  ## allow\_experimental\_geo\_types\_in\_iceberg
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "0"},{"label": "إعداد جديد يسمح بتحليل حقول Iceberg من النوعين geometry/geography على أنها من النوع Geometry."}]}]} />

يسمح بتحليل حقول Iceberg من النوعين `geometry` و`geography` على أنها من النوع `Geometry` ‏(Variant) في ClickHouse.

<div id="allow_experimental_hash_functions">
  ## allow\_experimental\_hash\_functions
</div>

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

تفعيل دوال التجزئة التجريبية

<div id="allow_experimental_iceberg_compaction">
  ## allow\_experimental\_iceberg\_compaction
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "0"},{"label": "إعداد جديد"}]}]} />

يسمح باستخدام 'OPTIMIZE' صراحةً مع جداول Iceberg.

<div id="allow_experimental_join_right_table_sorting">
  ## allow\_experimental\_join\_right\_table\_sorting
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.9"},{"label": "0"},{"label": "إذا ضُبطت على true، ومع استيفاء شرطي `join_to_sort_minimum_perkey_rows` و`join_to_sort_maximum_table_rows`، يُعاد ترتيب الجدول الأيمن حسب المفتاح لتحسين الأداء في عمليات ربط تجزئة من نوع left أو inner"}]}]} />

إذا ضُبطت على true، ومع استيفاء شرطي `join_to_sort_minimum_perkey_rows` و`join_to_sort_maximum_table_rows`، يُعاد ترتيب الجدول الأيمن حسب المفتاح لتحسين الأداء في عمليات ربط تجزئة من نوع left أو inner.

<div id="allow_experimental_json_lazy_type_hints">
  ## allow\_experimental\_json\_lazy\_type\_hints
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": "0"},{"label": "إعداد تجريبي جديد لتلميحات الأنواع المؤجَّلة في نوع JSON"}]}]} />

يُفعِّل تلميحات الأنواع المؤجَّلة التجريبية لنوع JSON. تتيح هذه الميزة تحسين تحويلات نوع JSON عبر تأجيل تقييم تلميحات الأنواع.

<div id="allow_experimental_kafka_offsets_storage_in_keeper">
  ## allow\_experimental\_kafka\_offsets\_storage\_in\_keeper
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.8"},{"label": "0"},{"label": "السماح باستخدام محرك تخزين Kafka تجريبي يخزّن الإزاحات المُثبتة في ClickHouse Keeper"}]}]} />

يتيح هذا الخيار استخدام ميزة تجريبية لتخزين الإزاحات المرتبطة بـ Kafka في ClickHouse Keeper. عند التمكين، يمكن تحديد مسار ClickHouse Keeper واسم النسخة المتماثلة لمحرك جدول Kafka. ونتيجة لذلك، بدلًا من محرك Kafka المعتاد، سيُستخدم نوع جديد من محركات التخزين يخزّن الإزاحات المُثبتة بشكل أساسي في ClickHouse Keeper

<div id="allow_experimental_kusto_dialect">
  ## allow\_experimental\_kusto\_dialect
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "0"},{"label": "إعداد جديد"}]}]} />

فعّل لغة استعلام Kusto ‏(KQL) — وهي بديل لـ SQL.

<div id="allow_experimental_materialized_postgresql_table">
  ## allow\_experimental\_materialized\_postgresql\_table
</div>

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

يسمح باستخدام محرك جدول MaterializedPostgreSQL. يكون معطّلًا افتراضيًا لأن هذه الميزة تجريبية

<div id="allow_experimental_nlp_functions">
  ## allow\_experimental\_nlp\_functions
</div>

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

تمكين الوظائف التجريبية لمعالجة اللغة الطبيعية.

<div id="allow_experimental_nullable_tuple_type">
  ## allow\_experimental\_nullable\_tuple\_type
</div>

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

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.1"},{"label": "0"},{"label": "إعداد تجريبي جديد"}]}]} />

يسمح بإنشاء أعمدة [Nullable](/ar/reference/data-types/nullable) من النوع [Tuple](/ar/reference/data-types/tuple) في الجداول.

لا يتحكم هذا الإعداد في ما إذا كان يمكن أن تكون الأعمدة الفرعية المستخرجة من Tuple من النوع `Nullable` (على سبيل المثال، من أعمدة Dynamic أو Variant أو JSON أو Tuple).
استخدم `allow_nullable_tuple_in_extracted_subcolumns` للتحكم في ما إذا كان يمكن أن تكون الأعمدة الفرعية المستخرجة من Tuple من النوع `Nullable`.

<div id="allow_experimental_object_storage_queue_hive_partitioning">
  ## allow\_experimental\_object\_storage\_queue\_hive\_partitioning
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.1"},{"label": "0"},{"label": "إعداد جديد."}]}]} />

يسمح باستخدام تقسيم Hive مع محركي S3Queue/AzureQueue

<div id="allow_experimental_paimon_storage_engine">
  ## allow\_experimental\_paimon\_storage\_engine
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "0"},{"label": "إعداد جديد."}]}]} />

يسمح بإنشاء جداول باستخدام محركات الجداول Paimon\*.

<div id="allow_experimental_parallel_reading_from_replicas">
  ## allow\_experimental\_parallel\_reading\_from\_replicas
</div>

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

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

استخدم ما يصل إلى `max_parallel_replicas` من النسخ المتماثلة من كل شريحة لتنفيذ استعلام SELECT. تُنفَّذ القراءة بالتوازي ويُنسَّق ذلك ديناميكيًا. 0 - معطّل، 1 - مفعّل، ويُعطَّل بصمت في حال الفشل، 2 - مفعّل، مع طرح استثناء في حال الفشل

<div id="allow_experimental_polyglot_dialect">
  ## allow\_experimental\_polyglot\_dialect
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": "0"},{"label": "إعداد جديد لتمكين مُحوِّل SQL متعدد اللهجات."}]}]} />

تمكين مُحوِّل SQL متعدد اللهجات — يحوّل SQL من أكثر من 30 لهجة (MySQL وPostgreSQL وSQLite وSnowflake وDuckDB وغيرها) إلى ClickHouse SQL.

<div id="allow_experimental_prql_dialect">
  ## allow\_experimental\_prql\_dialect
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "0"},{"label": "إعداد جديد"}]}]} />

فعّل PRQL، وهو بديل لـ SQL.

<div id="allow_experimental_text_index_lazy_apply">
  ## allow\_experimental\_text\_index\_lazy\_apply
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.6"},{"label": "0"},{"label": "إعداد جديد للتحكم في وضع التطبيق الكسول التجريبي لـ posting list"}]}]} />

إذا ضُبط هذا الإعداد على true، فسيُسمح باستخدام وضع التطبيق الكسول لـ posting list في استعلامات الفهرس النصي.

<div id="allow_experimental_time_series_aggregate_functions">
  ## allow\_experimental\_time\_series\_aggregate\_functions
</div>

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

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.6"},{"label": "0"},{"label": "إعداد جديد لتمكين دوال timeSeries* التجميعية التجريبية."}]}]} />

دوال timeSeries\* التجميعية التجريبية لإعادة أخذ عينات السلاسل الزمنية على غرار Prometheus، وحساب المعدل، وdelta.

<div id="allow_experimental_time_series_table">
  ## allow\_experimental\_time\_series\_table
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.8"},{"label": "0"},{"label": "تمت إضافة إعداد جديد للسماح باستخدام محرك الجدول TimeSeries"}]}]} />

يسمح بإنشاء جداول باستخدام محرك الجدول [TimeSeries](/ar/reference/engines/table-engines/integrations/time-series). القيم الممكنة:

* 0 — محرك الجدول [TimeSeries](/ar/reference/engines/table-engines/integrations/time-series) معطّل.
* 1 — محرك الجدول [TimeSeries](/ar/reference/engines/table-engines/integrations/time-series) مفعّل.

<div id="allow_experimental_unique_key">
  ## allow\_experimental\_unique\_key
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "0"},{"label": "إعداد جديد لتفعيل عبارة UNIQUE KEY التجريبية في جداول عائلة MergeTree"}]}]} />

يسمح بإنشاء جداول باستخدام العبارة `UNIQUE KEY` في محركات عائلة MergeTree.

<div id="allow_experimental_window_view">
  ## allow\_experimental\_window\_view
</div>

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

تمكين WINDOW VIEW. هذه الميزة غير ناضجة بما يكفي.

<div id="allow_experimental_ytsaurus_dictionary_source">
  ## allow\_experimental\_ytsaurus\_dictionary\_source
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "0"},{"label": "إعداد جديد."}]}]} />

مصدر قاموس تجريبي للتكامل مع YTsaurus.

<div id="allow_experimental_ytsaurus_table_engine">
  ## allow\_experimental\_ytsaurus\_table\_engine
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "0"},{"label": "إعداد جديد."}]}]} />

محرك جدول تجريبي للتكامل مع YTsaurus.

<div id="allow_experimental_ytsaurus_table_function">
  ## allow\_experimental\_ytsaurus\_table\_function
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "0"},{"label": "إعداد جديد."}]}]} />

محرك جدول تجريبي للتكامل مع YTsaurus.

<div id="allow_fuzz_query_functions">
  ## allow\_fuzz\_query\_functions
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "0"},{"label": "إعداد جديد لتمكين الدالة fuzzQuery."}]}]} />

يُمكّن الدالة `fuzzQuery` التي تُجري تعديلات عشوائية على AST الخاصة بسلسلة الاستعلام.

<div id="allow_general_join_planning">
  ## allow\_general\_join\_planning
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "1"},{"label": "يسمح باستخدام خوارزمية أكثر عمومية لتخطيط الربط عند تمكين خوارزمية ربط التجزئة."}]}]} />

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

<div id="allow_get_client_http_header">
  ## allow\_get\_client\_http\_header
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "0"},{"label": "تمت إضافة دالة جديدة."}]}]} />

يسمح باستخدام الدالة `getClientHTTPHeader` التي تتيح الحصول على قيمة ترويسة من ترويسات طلب HTTP الحالي. وهي غير مُمكّنة افتراضيًا لأسباب أمنية، لأن بعض الترويسات، مثل `Cookie`، قد تحتوي على معلومات حساسة. لاحظ أن الترويسات `X-ClickHouse-*` و`Authentication` تكون مقيّدة دائمًا، ولا يمكن الحصول عليها باستخدام هذه الدالة.

<div id="allow_hyperscan">
  ## allow\_hyperscan
</div>

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

يسمح بالدوال التي تستخدم مكتبة Hyperscan. عطِّله لتجنّب أوقات التجميع الطويلة المحتملة والاستهلاك المفرط للموارد.

<div id="allow_iceberg_remove_orphan_files">
  ## allow\_iceberg\_remove\_orphan\_files
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "0"},{"label": "إعداد جديد للتحكم في إزالة الملفات اليتيمة من جداول Iceberg"}]}]} />

يسمح باستخدام `ALTER TABLE ... EXECUTE remove_orphan_files()` لجداول Iceberg.

<div id="allow_insert_into_iceberg">
  ## allow\_insert\_into\_iceberg
</div>

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

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "0"},{"label": "نُقلت عملية الإدراج في Iceberg إلى مرحلة Beta"}]}, {"id": "row-2","items": [{"label": "25.7"},{"label": "0"},{"label": "إعداد جديد."}]}]} />

يسمح بتنفيذ استعلامات `insert` في Iceberg.

<div id="allow_introspection_functions">
  ## allow\_introspection\_functions
</div>

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

يُفعِّل أو يعطِّل [دوال فحص البنية الداخلية](/ar/reference/functions/regular-functions/introspection) لتحليل أداء الاستعلامات.

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

* 1 — دوال فحص البنية الداخلية مفعّلة.
* 0 — دوال فحص البنية الداخلية معطّلة.

**انظر أيضًا**

* [أداة أخذ العينات لتحليل أداء الاستعلامات](/ar/concepts/features/performance/troubleshoot/sampling-query-profiler)
* جدول النظام [trace\_log](/ar/reference/system-tables/trace_log)

<div id="allow_key_condition_coalesce_rewrite">
  ## allow\_key\_condition\_coalesce\_rewrite
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "1"},{"label": "إعداد جديد لإعادة كتابة الشروط المرشِّحة من الشكل `coalesce(a_1, ..., a_N) <op> const` (وكذلك `ifNull`، أو عندما يكون الثابت على اليسار) إلى فصل منطقي قبل تحليل الفهرس، بحيث يمكن استخدام المفتاح الأساسي لكل عمود وskip indexes على كل `a_i`. كما تُعالَج أيضًا الأشكال التي تحتوي على ثابت جزئي مثل `coalesce(a, 42, b)` و`coalesce(a, b, 42)`."}]}]} />

يسمح للمفتاح الأساسي في MergeTree وskip indexes بتقليص granules لشروط `WHERE`/`PREWHERE` التي تتضمن `coalesce` أو `ifNull`. من دون هذا الإعداد، تكون هذه الشروط غير قابلة للتحليل من ناحية الفهرس ولا تؤدي إلى التقليص، لذلك تظل granules التي لا يمكن أن تطابق مقروءة. يؤثر ذلك فقط في granules التي تُقرأ؛ أما نتيجة الاستعلام فتبقى بلا تغيير، لأن الصفوف تظل تُرشَّح بواسطة الشرط الأصلي.

يُعاد كتابة شكلين من الشروط المرشِّحة قبل تحليل الفهرس:

* تتحول المقارنة مع `coalesce`/`ifNull`، مثل `coalesce(a, b) = 5`، إلى فصل منطقي بحيث يتمكن الفهرس على كل argument من التقليص: `a = 5 OR (a IS NULL AND b = 5)`، مع التوسعة لتشمل المزيد من المُعامِلات.
* إذا استُخدم `coalesce`/`ifNull` مع ثابت افتراضي ذي قيمة كاذبة (صفر) مباشرةً كشرط، مثل `ifNull(a = 5, 0)` أو `coalesce(a = 5, 0)`، فيُكشف إلى شرطه الداخلي `a = 5`. وتؤدي مثل هذه wrappers إلى اختزال النتيجة ثلاثية القيم للشرط الداخلي إلى قيمة منطقية محددة (أي تحويل `NULL` إلى `false`).

<div id="allow_limit_by_partitions_independently">
  ## allow\_limit\_by\_partitions\_independently
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.6"},{"label": "1"},{"label": "إعداد جديد لتمكين التقييم المستقل لـ `LIMIT BY` لكل قسم عندما يكون تعبير القسم دالة حتمية لأعمدة `LIMIT BY`."}]}]} />

يُمكّن التقييم المستقل لـ `LIMIT BY` لكل قسم باستخدام خيوط تنفيذ منفصلة عندما يكون تعبير القسم دالة حتمية لأعمدة `LIMIT BY`.

<div id="allow_materialized_view_with_bad_select">
  ## allow\_materialized\_view\_with\_bad\_select
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.4"},{"label": "0"},{"label": "عدم السماح بإنشاء MVs تشير إلى أعمدة أو جداول غير موجودة"}]}, {"id": "row-2","items": [{"label": "24.9"},{"label": "1"},{"label": "دعم تحقق أكثر صرامة (من دون تفعيله بعد) في CREATE MATERIALIZED VIEW"}]}]} />

السماح بـ CREATE MATERIALIZED VIEW مع استعلام SELECT يشير إلى جداول أو أعمدة غير موجودة. يجب أن يظل الاستعلام صحيحًا نحويًا. لا ينطبق ذلك على MVs القابلة للتحديث. ولا ينطبق أيضًا إذا كان مخطط MV يحتاج إلى أن يُستنتج من استعلام SELECT (أي إذا كان CREATE لا يتضمن قائمة أعمدة ولا جدول TO). يمكن استخدامه لإنشاء MV قبل جدول المصدر الخاص بها.

<div id="allow_named_collection_override_by_default">
  ## allow\_named\_collection\_override\_by\_default
</div>

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

السماح بتجاوز حقول المجموعات المسماة افتراضيًا.

<div id="allow_non_metadata_alters">
  ## allow\_non\_metadata\_alters
</div>

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

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

<div id="allow_nonconst_timezone_arguments">
  ## allow\_nonconst\_timezone\_arguments
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "23.4"},{"label": "0"},{"label": "السماح بوسائط المنطقة الزمنية غير الثابتة في بعض الدوال المرتبطة بالوقت مثل toTimeZone() وfromUnixTimestamp*() وsnowflakeToDateTime*()."}]}]} />

السماح بوسائط المنطقة الزمنية غير الثابتة في بعض الدوال المرتبطة بالوقت مثل toTimeZone() وfromUnixTimestamp\*() وsnowflakeToDateTime\*().
هذا الإعداد موجود فقط لأسباب تتعلق بالتوافق. في ClickHouse، تكون المنطقة الزمنية خاصيةً من خصائص نوع البيانات، وبالتالي من خصائص العمود.
يؤدي تمكين هذا الإعداد إلى إعطاء انطباع خاطئ بأن القيم المختلفة داخل العمود يمكن أن تكون لها مناطق زمنية مختلفة.
لذلك، يُرجى عدم تمكين هذا الإعداد.

<div id="allow_nondeterministic_mutations">
  ## allow\_nondeterministic\_mutations
</div>

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

إعداد على مستوى المستخدم يتيح تنفيذ mutations على الجداول المكررة باستخدام دوال غير حتمية مثل `dictGet`.

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

**مثال**

```xml theme={null}
<profiles>
    <default>
        <allow_nondeterministic_mutations>1</allow_nondeterministic_mutations>

        <!-- ... -->
    </default>

    <!-- ... -->

</profiles>
```

<div id="allow_nondeterministic_optimize_skip_unused_shards">
  ## allow\_nondeterministic\_optimize\_skip\_unused\_shards
</div>

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

يسمح باستخدام الدوال غير الحتمية (مثل `rand` أو `dictGet`، إذ إن الأخيرة لها بعض القيود المتعلقة بالتحديثات) في مفتاح التجزئة.

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

* 0 — غير مسموح.
* 1 — مسموح.

<div id="allow_nullable_tuple_in_extracted_subcolumns">
  ## allow\_nullable\_tuple\_in\_extracted\_subcolumns
</div>

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

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

يتحكم هذا الإعداد في ما إذا كان يمكن تحديد نوع الأعمدة الفرعية المستخرجة من النوع `Tuple(...)` على أنه `Nullable(Tuple(...))`.

* `false`: يُرجع `Tuple(...)` ويستخدم قيم tuple الافتراضية للصفوف التي يكون فيها العمود الفرعي مفقودًا.
* `true`: يُرجع `Nullable(Tuple(...))` ويستخدم `NULL` للصفوف التي يكون فيها العمود الفرعي مفقودًا.

يتحكم هذا الإعداد فقط في سلوك الأعمدة الفرعية المستخرجة.
ولا يتحكم في ما إذا كان يمكن إنشاء أعمدة `Nullable(Tuple(...))` في الجداول؛ إذ يتحكم في ذلك `enable_nullable_tuple_type`.

يستخدم ClickHouse القيمة الخاصة بهذا الإعداد التي تُحمَّل عند بدء تشغيل الخادم.
لا تؤدي التغييرات التي تُجرى باستخدام `SET` أو `SETTINGS` على مستوى query إلى تغيير سلوك الأعمدة الفرعية المستخرجة.
لتغيير سلوك الأعمدة الفرعية المستخرجة، حدّث `allow_nullable_tuple_in_extracted_subcolumns` في إعدادات profile عند بدء التشغيل (على سبيل المثال، users.xml) ثم أعد تشغيل الخادم.

<div id="allow_prefetched_read_pool_for_local_filesystem">
  ## allow\_prefetched\_read\_pool\_for\_local\_filesystem
</div>

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

يفضّل استخدام تجمّع مؤشرات الترابط للجلب المسبق إذا كانت جميع الأجزاء موجودة على نظام الملفات المحلي"

<div id="allow_prefetched_read_pool_for_remote_filesystem">
  ## allow\_prefetched\_read\_pool\_for\_remote\_filesystem
</div>

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

يُفضَّل استخدام تجمّع مؤشرات الترابط للجلب المسبق إذا كانت جميع الأجزاء على نظام ملفات بعيد

<div id="allow_push_predicate_ast_for_distributed_subqueries">
  ## allow\_push\_predicate\_ast\_for\_distributed\_subqueries
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "1"},{"label": "إعداد جديد"}]}]} />

يسمح بدفع شرط التصفية على مستوى AST إلى الاستعلامات الفرعية الموزعة عند تمكين المُحلِّل

<div id="allow_push_predicate_when_subquery_contains_with">
  ## allow\_push\_predicate\_when\_subquery\_contains\_with
</div>

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

يسمح بدفع شرط التصفية عندما يحتوي الاستعلام الفرعي على عبارة WITH

<div id="allow_rank_dense_rank_arguments">
  ## allow\_rank\_dense\_rank\_arguments
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "0"},{"label": "إعداد جديد. قبل 26.5، كانت دالتا النافذة `RANK` و`DENSE_RANK` تتجاهلان بصمت أي وسائط مُمرَّرة (وهو ما يعادل `allow_rank_dense_rank_arguments = 1`). واعتبارًا من 26.5، ترفضان الوسائط افتراضيًا مع `NUMBER_OF_ARGUMENTS_DOESNT_MATCH` لأن هاتين الدالتين، وفقًا لمعيار SQL، لا تقبلان أي وسائط. اضبط هذا على `1` لاستعادة السلوك القديم."}]}]} />

يسمح بتمرير وسائط إلى دالتي النافذة `RANK` و`DENSE_RANK` للحفاظ على التوافق مع الإصدارات السابقة.

وفقًا لمعيار SQL، فإن `RANK` و`DENSE_RANK` لا تقبلان أي وسائط — إذ ترتّبان الصفوف استنادًا فقط إلى النافذة
`OVER (ORDER BY ...)`. وفي إصدارات ClickHouse السابقة لـ 26.5، كانت الاستعلامات مثل
`RANK(x) OVER (...)` تُقبل بصمت مع تجاهل الوسيط، مما كان يسبّب التباسًا لدى المستخدمين
(إذ كان الوسيط الظاهر يوحي بأنه يؤثر في الترتيب، لكنه في الواقع لا يفعل ذلك).

عندما يكون هذا الإعداد `false` (وهو الإعداد الافتراضي)، فإن `RANK` و`DENSE_RANK` ترفضان أي وسائط
وتُطلقان `NUMBER_OF_ARGUMENTS_DOESNT_MATCH`. وعند ضبطه على `true`، يُستعاد السلوك القديم المتساهل
— إذ تُتجاهل الوسائط بصمت، بما يتوافق مع السلوك المتّبع قبل 26.5.

<div id="allow_reorder_prewhere_conditions">
  ## allow\_reorder\_prewhere\_conditions
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.10"},{"label": "1"},{"label": "إعداد جديد"}]}]} />

عند نقل الشروط من WHERE إلى PREWHERE، اسمح بإعادة ترتيب هذه الشروط لتحسين التصفية

<div id="allow_settings_after_format_in_insert">
  ## allow\_settings\_after\_format\_in\_insert
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "22.4"},{"label": "0"},{"label": "عدم السماح بوضع SETTINGS بعد FORMAT في استعلامات INSERT لأن ClickHouse قد يفسّر SETTINGS على أنها بعض القيم، مما قد يكون مضلّلًا"}]}]} />

يحدّد ما إذا كان يُسمح باستخدام `SETTINGS` بعد `FORMAT` في استعلامات `INSERT` أم لا. لا يُنصح باستخدام هذا الإعداد، لأن ذلك قد يؤدي إلى تفسير جزء من `SETTINGS` على أنه قيم.

مثال:

```sql theme={null}
INSERT INTO FUNCTION null('foo String') SETTINGS max_threads=1 VALUES ('bar');
```

لكن الاستعلام التالي سيعمل فقط عند استخدام `allow_settings_after_format_in_insert`:

```sql theme={null}
SET allow_settings_after_format_in_insert=1;
INSERT INTO FUNCTION null('foo String') VALUES ('bar') SETTINGS max_threads=1;
```

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

* 0 — ممنوع.
* 1 — مسموح.

<Note>
  استخدم هذا الإعداد فقط للحفاظ على التوافق مع الإصدارات السابقة إذا كانت حالات الاستخدام لديك تعتمد على الصياغة القديمة.
</Note>

<div id="allow_simdjson">
  ## allow\_simdjson
</div>

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

يتيح استخدام مكتبة simdjson في دوال 'JSON\*' إذا كانت تعليمات AVX2 متاحة. وإذا كان هذا الخيار معطّلًا، فستُستخدم rapidjson.

<div id="allow_special_serialization_kinds_in_output_formats">
  ## allow\_special\_serialization\_kinds\_in\_output\_formats
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.11"},{"label": "1"},{"label": "تمكين الإخراج المباشر لتمثيلات الأعمدة الخاصة مثل Sparse/Replicated في بعض تنسيقات الإخراج"}]}, {"id": "row-2","items": [{"label": "25.10"},{"label": "0"},{"label": "إضافة إعداد للسماح بإخراج تمثيلات الأعمدة الخاصة مثل Sparse/Replicated دون تحويلها إلى تمثيل عمود كامل"}]}]} />

يسمح بإخراج الأعمدة ذات أنواع التسلسل الخاصة مثل Sparse وReplicated دون تحويلها إلى تمثيل عمود كامل.
يساعد ذلك على تجنب النسخ غير الضروري للبيانات أثناء التنسيق.

<div id="allow_statistics">
  ## allow\_statistics
</div>

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

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": "1"},{"label": "أصبحت إحصاءات الأعمدة متاحة الآن بشكل عام (GA)"}]}]} />

يسمح بتعريف [إحصاءات للأعمدة](/ar/reference/engines/table-engines/mergetree-family/mergetree#table_engine-mergetree-creating-a-table) و[إدارة الإحصاءات](/ar/reference/engines/table-engines/mergetree-family/mergetree#column-statistics).

<div id="allow_statistics_optimize">
  ## allow\_statistics\_optimize
</div>

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

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "1"},{"label": "يتم تفعيل هذا التحسين افتراضيًا."}]}, {"id": "row-2","items": [{"label": "24.6"},{"label": "0"},{"label": "تمت إعادة تسمية هذا الإعداد. كان الاسم السابق هو `allow_statistic_optimize`."}]}]} />

يسمح باستخدام الإحصاءات لتحسين الاستعلامات

<div id="allow_suspicious_codecs">
  ## allow\_suspicious\_codecs
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "20.5"},{"label": "0"},{"label": "عدم السماح بتحديد ترميزات ضغط غير ذات معنى"}]}]} />

إذا ضُبطت قيمته على true، يُسمح بتحديد ترميزات ضغط غير ذات معنى.

<div id="allow_suspicious_fixed_string_types">
  ## allow\_suspicious\_fixed\_string\_types
</div>

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

تسمح عبارة CREATE TABLE بإنشاء أعمدة من النوع FixedString(n) عندما تكون n > 256. ويُعد استخدام FixedString بطول >= 256 أمرًا مريبًا، وغالبًا ما يشير إلى استخدام غير صحيح

<div id="allow_suspicious_indices">
  ## allow\_suspicious\_indices
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "23.4"},{"label": "0"},{"label": "إذا كانت القيمة true، يمكن تعريف الفهرس بتعبيرات متطابقة"}]}]} />

رفض الفهارس الأساسية/الثانوية ومفاتيح الفرز ذات التعبيرات المتطابقة

<div id="allow_suspicious_low_cardinality_types">
  ## allow\_suspicious\_low\_cardinality\_types
</div>

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

يسمح هذا الإعداد باستخدام [LowCardinality](/ar/reference/data-types/lowcardinality) مع أنواع البيانات ذات الحجم الثابت البالغ 8 بايتات أو أقل، أو يقيّد ذلك: أي أنواع البيانات الرقمية و`FixedString(8_bytes_or_less)`.

يكون استخدام `LowCardinality` مع القيم الثابتة الصغيرة غير فعّال عادةً، لأن ClickHouse يخزّن فهرسًا رقميًا لكل صف. ونتيجة لذلك:

* قد يزداد استخدام مساحة القرص.
* قد يرتفع استهلاك RAM، بحسب حجم القاموس.
* قد تعمل بعض الدوال ببطء أكبر بسبب عمليات الترميز وفك الترميز الإضافية.

قد تزداد أوقات الدمج في الجداول التي تستخدم محرك [MergeTree](/ar/reference/engines/table-engines/mergetree-family/mergetree) بسبب جميع الأسباب المذكورة أعلاه.

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

* 1 — لا يكون استخدام `LowCardinality` مقيّدًا.
* 0 — يكون استخدام `LowCardinality` مقيّدًا.

<div id="allow_suspicious_primary_key">
  ## allow\_suspicious\_primary\_key
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "0"},{"label": "حظر PRIMARY KEY/ORDER BY المريبَين في MergeTree (أي SimpleAggregateFunction)"}]}]} />

السماح باستخدام `PRIMARY KEY`/`ORDER BY` المريبَين في MergeTree (أي SimpleAggregateFunction).

<div id="allow_suspicious_ttl_expressions">
  ## allow\_suspicious\_ttl\_expressions
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "23.12"},{"label": "0"},{"label": "هذا إعداد جديد، وفي الإصدارات السابقة كان السلوك مكافئًا للسماح."}]}]} />

ارفض تعبيرات TTL التي لا تعتمد على أي عمود من أعمدة الجدول. وهذا يشير في معظم الحالات إلى خطأ من المستخدم.

<div id="allow_suspicious_types_in_group_by">
  ## allow\_suspicious\_types\_in\_group\_by
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.11"},{"label": "0"},{"label": "عدم السماح افتراضيًا باستخدام النوعين Variant/Dynamic في GROUP BY"}]}]} />

يسمح باستخدام النوعين [Variant](/ar/reference/data-types/variant) و[Dynamic](/ar/reference/data-types/dynamic) في مفاتيح GROUP BY أو يقيّده.

<div id="allow_suspicious_types_in_order_by">
  ## allow\_suspicious\_types\_in\_order\_by
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.11"},{"label": "0"},{"label": "عدم السماح افتراضيًا بنوعي Variant/Dynamic في مفاتيح ORDER BY"}]}]} />

يتيح أو يقيّد استخدام النوعين [Variant](/ar/reference/data-types/variant) و[Dynamic](/ar/reference/data-types/dynamic) في مفاتيح ORDER BY.

<div id="allow_suspicious_variant_types">
  ## allow\_suspicious\_variant\_types
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.2"},{"label": "0"},{"label": "عدم السماح افتراضيًا بإنشاء النوع Variant بمتغيرات مريبة"}]}]} />

في عبارة CREATE TABLE، يسمح هذا بتحديد النوع Variant مع أنواع متغيرات متشابهة (على سبيل المثال، أنواع رقمية مختلفة أو أنواع Date مختلفة). قد يؤدي تمكين هذا الإعداد إلى حدوث بعض الالتباس عند العمل مع قيم ذات أنواع متشابهة.

<div id="allow_unrestricted_reads_from_keeper">
  ## allow\_unrestricted\_reads\_from\_keeper
</div>

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

يسمح بعمليات قراءة غير مقيّدة (من دون شرط على المسار) من جدول system.zookeeper، وقد يكون ذلك مفيدًا، لكنه غير آمن لـ ZooKeeper

<div id="alter_move_to_space_execute_async">
  ## alter\_move\_to\_space\_execute\_async
</div>

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

تنفيذ ALTER TABLE MOVE ... TO \[DISK|VOLUME] بشكل غير متزامن

<div id="alter_partition_verbose_result">
  ## alter\_partition\_verbose\_result
</div>

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

يُفعّل أو يعطّل عرض معلومات عن الأجزاء التي طُبِّقت عليها بنجاح عمليات المعالجة الخاصة بالتقسيمات والأجزاء.
ينطبق على [ATTACH PARTITION|PART](/ar/reference/statements/alter/partition#attach-partitionpart) وعلى [FREEZE PARTITION](/ar/reference/statements/alter/partition#freeze-partition).

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

* 0 — تعطيل العرض التفصيلي.
* 1 — تفعيل العرض التفصيلي.

**مثال**

```sql theme={null}
CREATE TABLE test(a Int64, d Date, s String) ENGINE = MergeTree PARTITION BY toYYYYMDECLARE(d) ORDER BY a;
INSERT INTO test VALUES(1, '2021-01-01', '');
INSERT INTO test VALUES(1, '2021-01-01', '');
ALTER TABLE test DETACH PARTITION ID '202101';

ALTER TABLE test ATTACH PARTITION ID '202101' SETTINGS alter_partition_verbose_result = 1;

┌─command_type─────┬─partition_id─┬─part_name────┬─old_part_name─┐
│ ATTACH PARTITION │ 202101       │ 202101_7_7_0 │ 202101_5_5_0  │
│ ATTACH PARTITION │ 202101       │ 202101_8_8_0 │ 202101_6_6_0  │
└──────────────────┴──────────────┴──────────────┴───────────────┘

ALTER TABLE test FREEZE SETTINGS alter_partition_verbose_result = 1;

┌─command_type─┬─partition_id─┬─part_name────┬─backup_name─┬─backup_path───────────────────┬─part_backup_path────────────────────────────────────────────┐
│ FREEZE ALL   │ 202101       │ 202101_7_7_0 │ 8           │ /var/lib/clickhouse/shadow/8/ │ /var/lib/clickhouse/shadow/8/data/default/test/202101_7_7_0 │
│ FREEZE ALL   │ 202101       │ 202101_8_8_0 │ 8           │ /var/lib/clickhouse/shadow/8/ │ /var/lib/clickhouse/shadow/8/data/default/test/202101_8_8_0 │
└──────────────┴──────────────┴──────────────┴─────────────┴───────────────────────────────┴─────────────────────────────────────────────────────────────┘
```

<div id="alter_sync">
  ## alter\_sync
</div>

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

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

يتيح لك تحديد سلوك الانتظار للعمليات التي ستُنفَّذ على النسخ المتماثلة بواسطة استعلامات [`ALTER`](/ar/reference/statements/alter/index) أو [`OPTIMIZE`](/ar/reference/statements/optimize) أو [`TRUNCATE`](/ar/reference/statements/truncate).

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

* `0` — لا تنتظر.
* `1` — انتظر التنفيذ على النسخة الحالية.
* `2` — انتظر جميع النسخ المتماثلة.
* `3` - انتظر النسخ المتماثلة النشطة فقط.

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

<Note>
  ينطبق `alter_sync` على جداول `Replicated` و`SharedMergeTree` فقط، ولا يكون له أي تأثير عند تعديل الجداول غير `Replicated` أو `Shared`.
</Note>

<div id="alter_update_mode">
  ## alter\_update\_mode
</div>

<SettingsInfoBlock type="AlterUpdateMode" default_value="heavy" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "heavy"},{"label": "إعداد جديد"}]}]} />

نمط لاستعلامات `ALTER` التي تحتوي على أوامر `UPDATE`.

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

* `heavy` - نفّذ mutation عادية.
* `lightweight` - نفّذ lightweight update إذا أمكن، وإلا فنفّذ mutation عادية.
* `lightweight_force` - نفّذ lightweight update إذا أمكن، وإلا فاستخدم `throw`.

<div id="analyze_index_with_space_filling_curves">
  ## analyze\_index\_with\_space\_filling\_curves
</div>

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

إذا كان الجدول يحتوي على منحنى ملء الفراغ في فهرسه، مثل `ORDER BY mortonEncode(x, y)` أو `ORDER BY hilbertEncode(x, y)`، وكان الاستعلام يتضمن شروطًا على وسائطه، مثل `x >= 10 AND x <= 20 AND y >= 20 AND y <= 30`، فاستخدم منحنى ملء الفراغ لتحليل الفهرس.

<div id="analyzer_compatibility_allow_compound_identifiers_in_unflatten_nested">
  ## analyzer\_compatibility\_allow\_compound\_identifiers\_in\_unflatten\_nested
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "1"},{"label": "إعداد جديد."}]}]} />

يسمح بإضافة المعرّفات المركّبة إلى Nested. هذا إعداد توافق لأنه يغيّر نتيجة الاستعلام. عند تعطيله، لا يعمل `SELECT a.b.c FROM table ARRAY JOIN a`، ولا يُدرج `SELECT a FROM table` العمود `a.b.c` في ناتج `Nested a`.

<div id="analyzer_compatibility_join_using_top_level_identifier">
  ## analyzer\_compatibility\_join\_using\_top\_level\_identifier
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "0"},{"label": "فرض حلّ المعرّف في JOIN USING انطلاقًا من الإسقاط"}]}]} />

فرض حلّ المعرّف في JOIN USING انطلاقًا من الإسقاط (على سبيل المثال، في `SELECT a + 1 AS b FROM t1 JOIN t2 USING (b)` سيتم تنفيذ عملية join وفقًا لـ `t1.a + 1 = t2.b` بدلًا من `t1.b = t2.b`).

<div id="analyzer_compatibility_prefer_alias_over_subcolumn">
  ## analyzer\_compatibility\_prefer\_alias\_over\_subcolumn
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.6"},{"label": "0"},{"label": "إعداد توافق جديد"}]}]} />

عندما يمكن أن يشير معرّف متعدد الأجزاء مثل `b.id` إما إلى العمود `id` في جدول يحمل الاسم المستعار `b` أو إلى عمود فرعي `b.id` من نوع Tuple تابع لعمود آخر، فامنح الأفضلية لتفسير بادئة الاسم المستعار (أي العمود `id` في `b`). افتراضيًا، يفضّل analyzer الجديد العمود الفرعي. فعِّل هذا الإعداد لمطابقة آلية التحليل في analyzer القديم.

<div id="analyzer_inline_views">
  ## analyzer\_inline\_views
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "0"},{"label": "إعداد جديد"}]}]} />

عند تفعيله، يستبدل المُحلِّل طرق العرض العادية (غير المُجسَّدة وغير المُعلَّمة بمعلمات) بالاستعلامات الفرعية التي تعرّفها، مما يتيح تحسينات عبر الحدود مثل دفع الشروط وتشذيب الأعمدة.

<div id="any_join_distinct_right_table_keys">
  ## any\_join\_distinct\_right\_table\_keys
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "19.14"},{"label": "0"},{"label": "تعطيل ANY RIGHT وANY FULL JOIN افتراضيًا لتجنب عدم الاتساق"}]}]} />

يُفعّل السلوك القديم لخادم ClickHouse في عمليات `ANY INNER|LEFT JOIN`.

<Note>
  استخدم هذا الإعداد فقط للحفاظ على التوافق مع الإصدارات السابقة إذا كانت حالات الاستخدام لديك تعتمد على سلوك `JOIN` القديم.
</Note>

عند تفعيل السلوك القديم:

* لا تكون نتائج العمليتين `t1 ANY LEFT JOIN t2` و`t2 ANY RIGHT JOIN t1` متساوية، لأن ClickHouse يستخدم منطق تعيين مفاتيح الجداول من اليسار إلى اليمين بعلاقة متعدد إلى واحد.
* تحتوي نتائج عمليات `ANY INNER JOIN` على جميع الصفوف من الجدول الأيسر، كما هو الحال في عمليات `SEMI LEFT JOIN`.

عند تعطيل السلوك القديم:

* تكون نتائج العمليتين `t1 ANY LEFT JOIN t2` و`t2 ANY RIGHT JOIN t1` متساوية، لأن ClickHouse يستخدم منطقًا يوفّر تعيينًا للمفاتيح بعلاقة واحد إلى متعدد في عمليات `ANY RIGHT JOIN`.
* تحتوي نتائج عمليات `ANY INNER JOIN` على صف واحد لكل مفتاح من الجدولين الأيسر والأيمن.

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

* 0 — السلوك القديم معطّل.
* 1 — السلوك القديم مفعّل.

انظر أيضًا:

* [صرامة JOIN](/ar/reference/statements/select/join#settings)

<div id="apply_deleted_mask">
  ## apply\_deleted\_mask
</div>

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

يُمكّن من استبعاد الصفوف المحذوفة باستخدام lightweight DELETE. وإذا كان معطّلًا، فسيتمكّن الاستعلام من قراءة تلك الصفوف. وهذا مفيد في سيناريوهات تصحيح الأخطاء و"التراجع عن الحذف"

<div id="apply_mutations_on_fly">
  ## apply\_mutations\_on\_fly
</div>

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

إذا كانت القيمة true، فستُطبَّق عمليات mutation ‏(UPDATE وDELETE) التي لم تُطبَّق ماديًا في جزء البيانات عند تنفيذ عمليات SELECT.

<div id="apply_patch_parts">
  ## apply\_patch\_parts
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "1"},{"label": "إعداد جديد"}]}]} />

إذا كانت القيمة true، فسيتم تطبيق أجزاء التصحيح (التي تمثل lightweight updates) عند تنفيذ استعلامات SELECT.

<div id="apply_patch_parts_join_cache_buckets">
  ## apply\_patch\_parts\_join\_cache\_buckets
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "8"},{"label": "إعداد جديد"}]}]} />

عدد الحاويات في ذاكرة التخزين المؤقتة المستخدمة لتطبيق أجزاء التصحيح في وضع Join.

<div id="apply_prewhere_after_final">
  ## apply\_prewhere\_after\_final
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "0"},{"label": "إعداد جديد. عند التمكين، تُطبَّق شروط PREWHERE بعد معالجة FINAL."}]}]} />

عند التمكين، تُطبَّق شروط PREWHERE بعد معالجة FINAL في ReplacingMergeTree والمحركات المشابهة.
قد يكون ذلك مفيدًا عندما يشير PREWHERE إلى أعمدة قد تختلف قيمها بين الصفوف المكررة،
وتريد أن يحدد FINAL الصف المعتمد قبل التصفية. عند التعطيل، يُطبَّق PREWHERE أثناء القراءة.
ملاحظة: إذا كان apply\_row\_level\_security\_after\_final مُمكّنًا وكانت سياسة الصفوف تستخدم أعمدة ليست من مفتاح الفرز، فسيُؤجَّل أيضًا
تطبيق PREWHERE للحفاظ على ترتيب التنفيذ الصحيح (يجب تطبيق سياسة الصفوف قبل PREWHERE).

<div id="apply_row_policy_after_final">
  ## apply\_row\_policy\_after\_final
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.10"},{"label": "1"},{"label": "أُضيف هذا الإعداد كإصلاح للتراجع الذي ظهر بعد #87303، حيث كانت سياسات الصفوف وPREWHERE تُطبَّق قبل FINAL. وقدَّم PR #91065 هذا الإعداد، ثم جعل PR #97279 القيمة true الآمنة من حيث الصحة هي القيمة الافتراضية. وسُجِّل على هيئة {true, true} حتى لا يعود التوافق أبدًا إلى السلوك السابق للإصلاح ذي القيمة false."}]}]} />

عند تمكين هذا الإعداد، تُطبَّق سياسات الصفوف وPREWHERE بعد معالجة FINAL في جداول \*MergeTree. (وخاصةً ReplacingMergeTree)
وعند تعطيله، تُطبَّق سياسات الصفوف قبل FINAL، ما قد يؤدي إلى نتائج مختلفة عندما
تستبعد السياسة صفوفًا ينبغي استخدامها لإزالة التكرار في ReplacingMergeTree أو المحركات المشابهة.

إذا كان تعبير سياسة الصفوف يعتمد فقط على الأعمدة الموجودة في ORDER BY، فسيظل يُطبَّق قبل FINAL كتحسين،
لأن مثل هذه التصفية لا يمكن أن تؤثر في نتيجة إزالة التكرار.

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

* 0 — تُطبَّق سياسة الصفوف وPREWHERE قبل FINAL (افتراضيًا).
* 1 — تُطبَّق سياسة الصفوف وPREWHERE بعد FINAL.

<div id="apply_settings_from_server">
  ## apply\_settings\_from\_server
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.2"},{"label": "1"},{"label": "سيستخدم الرمز البرمجي على جهة العميل (مثل parsing لبيانات إدخال INSERT وformatting لمخرجات الاستعلام) الإعدادات نفسها المستخدمة على الخادم، بما في ذلك الإعدادات من config الخادم."}]}]} />

ما إذا كان ينبغي للعميل قبول الإعدادات من الخادم.

لا يؤثر هذا إلا في العمليات التي تُنفَّذ على جهة العميل، وبخاصة parsing لبيانات إدخال INSERT وformatting لنتيجة الاستعلام. يحدث معظم تنفيذ الاستعلام على الخادم، ولا يتأثر بهذا الإعداد.

عادةً، يجب ضبط هذا الإعداد في profile المستخدم (`users.xml` أو استعلامات مثل `ALTER USER`)، وليس من خلال العميل (وسيطات سطر أوامر العميل، أو استعلام `SET`، أو قسم `SETTINGS` في استعلام `SELECT`). ويمكن تغييره من خلال العميل إلى false، لكن لا يمكن تغييره إلى true (لأن الخادم لن يرسل الإعدادات إذا كان profile المستخدم يحتوي على `apply_settings_from_server = false`).

لاحظ أنه في البداية (24.12) كان هناك إعداد على مستوى الخادم (`send_settings_to_client`)، لكنه استُبدل لاحقًا بهذا الإعداد على جهة العميل لتحسين سهولة الاستخدام.

<div id="archive_adaptive_buffer_max_size_bytes">
  ## archive\_adaptive\_buffer\_max\_size\_bytes
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.1"},{"label": "8388608"},{"label": "إعداد جديد"}]}]} />

يحدّد الحجم الأقصى للمخزن المؤقت المتكيف المستخدم عند الكتابة إلى ملفات الأرشيف (على سبيل المثال، أرشيفات tar

<div id="arrow_flight_request_descriptor_type">
  ## arrow\_flight\_request\_descriptor\_type
</div>

<SettingsInfoBlock type="ArrowFlightDescriptorType" default_value="path" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.11"},{"label": "path"},{"label": "إعداد جديد. نوع الواصف المستخدم لطلبات Arrow Flight: ‏'path' أو ‏'command'. يتطلب Dremio الخيار ‏'command'."}]}]} />

نوع الواصف المستخدم لطلبات Arrow Flight. يرسل `'path'` اسم مجموعة البيانات كواصف من نوع path. ويرسل `'command'` استعلام SQL كواصف من نوع command (وهو مطلوب لـ Dremio).

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

* 'path' — استخدم FlightDescriptor::Path (الافتراضي، ويعمل مع معظم خوادم Arrow Flight)
* 'command' — استخدم FlightDescriptor::Command مع استعلام SELECT (مطلوب لـ Dremio)

<div id="ast_fuzzer_any_query">
  ## ast\_fuzzer\_any\_query
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "0"},{"label": "إعداد جديد للسماح بتشويش جميع أنواع الاستعلامات، وليس استعلامات القراءة فقط."}]}]} />

عندما تكون القيمة false (الافتراضية)، تقتصر أداة تشويش AST على جهة الخادم (التي يتحكم فيها `ast_fuzzer_runs`) على تشويش استعلامات القراءة فقط (SELECT, EXPLAIN, SHOW, DESCRIBE, EXISTS). وعندما تكون القيمة true، يتم تشويش جميع أنواع الاستعلامات، بما في ذلك DDL و INSERT.

<div id="ast_fuzzer_runs">
  ## ast\_fuzzer\_runs
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "0"},{"label": "إعداد جديد لتمكين أداة تشويش AST من جهة الخادم."}]}]} />

يُفعّل أداة تشويش AST من جهة الخادم، والتي تُشغّل استعلامات عشوائية بعد كل استعلام عادي مع تجاهل نتائجها.

* 0: معطّل (افتراضي).
* قيمة بين 0 و1 (على نحو حصري): احتمال تشغيل استعلام عشوائي واحد.
* قيمة >= 1: عدد الاستعلامات العشوائية التي تُشغَّل لكل استعلام عادي.

تُراكِم أداة الاختبار مقاطع AST من جميع الاستعلامات عبر كل الجلسات، مما ينتج طفرات تزداد إثارةً للاهتمام بمرور الوقت. وتُهمَل الاستعلامات العشوائية التي تفشل بصمت؛ ولا تُعاد النتائج مطلقًا إلى العميل.

<div id="asterisk_include_alias_columns">
  ## asterisk\_include\_alias\_columns
</div>

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

تضمين أعمدة [ALIAS](/ar/reference/statements/create/table#alias) في استعلام أحرف البدل (`SELECT *`).

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

* 0 - معطّل
* 1 - مُمكّن

<div id="asterisk_include_materialized_columns">
  ## asterisk\_include\_materialized\_columns
</div>

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

تضمين الأعمدة [MATERIALIZED](/ar/reference/statements/create/view#materialized-view) في استعلام أحرف البدل (`SELECT *`).

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

* 0 - معطّل
* 1 - مُمكّن

<div id="asterisk_include_virtual_columns">
  ## asterisk\_include\_virtual\_columns
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "0"},{"label": "إعداد جديد"}]}]} />

تضمين الأعمدة الظاهرية في استعلام أحرف البدل (`SELECT *`).

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

* 0 - معطّل
* 1 - مُمكّن

<div id="async_insert">
  ## async\_insert
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "1"},{"label": "تمكين async inserts بشكل افتراضي."}]}]} />

إذا كانت القيمة true، فستُخزَّن البيانات الناتجة عن استعلام INSERT في قائمة انتظار، ثم تُكتب لاحقًا إلى الجدول في الخلفية. وإذا كانت قيمة wait\_for\_async\_insert هي false، فستُعالَج عملية INSERT بشكل شبه فوري، وإلا فسوف ينتظر العميل حتى تُكتب البيانات إلى الجدول

<div id="async_insert_busy_timeout_decrease_rate">
  ## async\_insert\_busy\_timeout\_decrease\_rate
</div>

<SettingsInfoBlock type="Double" default_value="0.2" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.2"},{"label": "0.2"},{"label": "معدل النمو الأُسّي الذي تنخفض وفقه مهلة الإدراج غير المتزامن التكيفية"}]}]} />

معدل النمو الأُسّي الذي تنخفض وفقه مهلة الإدراج غير المتزامن التكيفية

<div id="async_insert_busy_timeout_increase_rate">
  ## async\_insert\_busy\_timeout\_increase\_rate
</div>

<SettingsInfoBlock type="Double" default_value="0.2" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.2"},{"label": "0.2"},{"label": "معدل النمو الأُسِّي الذي تزداد وفقه مهلة الإدراج غير المتزامن التكيفية"}]}]} />

معدل النمو الأُسِّي الذي تزداد وفقه مهلة الإدراج غير المتزامن التكيفية

<div id="async_insert_busy_timeout_max_ms">
  ## async\_insert\_busy\_timeout\_max\_ms
</div>

**الأسماء المستعارة**: `async_insert_busy_timeout_ms`

<SettingsInfoBlock type="مللي ثانية" default_value="200" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.2"},{"label": "200"},{"label": "الحد الأدنى لمهلة الإدراج غير المتزامن بالمللي ثانية؛ async_insert_busy_timeout_ms هو اسم مستعار لـ async_insert_busy_timeout_max_ms"}]}]} />

الحد الأقصى للوقت الذي يجب انتظاره قبل تفريغ البيانات المجمّعة لكل query، وذلك منذ وصول أول البيانات.

قيمة Cloud الافتراضية: `1000` (1s).

<div id="async_insert_busy_timeout_min_ms">
  ## async\_insert\_busy\_timeout\_min\_ms
</div>

<SettingsInfoBlock type="مللي ثانية" default_value="50" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.2"},{"label": "50"},{"label": "الحد الأدنى لقيمة مهلة الإدراج غير المتزامن بالمللي ثانية؛ كما تُستخدم أيضًا كقيمة أولية، ويمكن زيادتها لاحقًا بواسطة الخوارزمية التكيفية"}]}]} />

إذا كان الضبط التلقائي مُمكّنًا عبر async\_insert\_use\_adaptive\_busy\_timeout، فهذا هو الحد الأدنى للوقت الواجب انتظاره قبل تفريغ البيانات المجمّعة لكل استعلام منذ ظهور أول البيانات. كما يُستخدم أيضًا كقيمة أولية للخوارزمية التكيفية

<div id="async_insert_deduplicate">
  ## async\_insert\_deduplicate
</div>

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

بالنسبة إلى استعلامات INSERT غير المتزامنة في الجدول المُكرَّر، يحدّد ما إذا كان ينبغي إجراء إزالة تكرار الكتل المُدرجة

<div id="async_insert_max_data_size">
  ## async\_insert\_max\_data\_size
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.2"},{"label": "10485760"},{"label": "بدا أن القيمة السابقة كانت صغيرة جدًا."}]}]} />

الحد الأقصى لحجم البيانات غير المُحلَّلة المجمَّعة لكل استعلام، بالبايت، قبل إدراجها

القيمة الافتراضية في Cloud: `104857600` (100 MiB).

<div id="async_insert_max_query_number">
  ## async\_insert\_max\_query\_number
</div>

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

الحد الأقصى لعدد استعلامات الإدراج قبل إدراجها.
يُطبَّق فقط إذا كانت قيمة الإعداد [`async_insert_deduplicate`](#async_insert_deduplicate) هي 1.

<div id="async_insert_poll_timeout_ms">
  ## async\_insert\_poll\_timeout\_ms
</div>

<SettingsInfoBlock type="مللي ثانية" default_value="10" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.2"},{"label": "10"},{"label": "مهلة بالمللي ثانية لاستطلاع البيانات من قائمة انتظار الإدراج غير المتزامن"}]}]} />

مهلة لاستطلاع البيانات من قائمة انتظار الإدراج غير المتزامن

<div id="async_insert_use_adaptive_busy_timeout">
  ## async\_insert\_use\_adaptive\_busy\_timeout
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.2"},{"label": "1"},{"label": "استخدام مهلة انشغال تكيّفية لعمليات الإدراج غير المتزامنة"}]}]} />

إذا ضُبط على true، فستُستخدم مهلة انشغال تكيّفية لعمليات الإدراج غير المتزامنة

<div id="async_query_sending_for_remote">
  ## async\_query\_sending\_for\_remote
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "23.3"},{"label": "1"},{"label": "إنشاء الاتصالات وإرسال الاستعلام بشكل غير متزامن عبر الأجزاء"}]}]} />

يُفعّل إنشاء الاتصالات وإرسال الاستعلامات بشكل غير متزامن أثناء تنفيذ استعلام عن بُعد.

مفعّل افتراضيًا.

<div id="async_socket_for_remote">
  ## async\_socket\_for\_remote
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "21.5"},{"label": "1"},{"label": "إصلاح جميع المشكلات وإعادة تفعيل القراءة غير المتزامنة من المقبس للاستعلامات البعيدة افتراضيًا"}]}, {"id": "row-2","items": [{"label": "21.3"},{"label": "0"},{"label": "إيقاف القراءة غير المتزامنة من المقبس للاستعلامات البعيدة بسبب بعض المشكلات"}]}]} />

يُفعّل القراءة غير المتزامنة من المقبس أثناء تنفيذ استعلام عن بُعد.

مُفعّل افتراضيًا.

<div id="automatic_parallel_replicas_min_bytes_per_replica">
  ## automatic\_parallel\_replicas\_min\_bytes\_per\_replica
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.1"},{"label": "1048576"},{"label": "قيمة افتراضية أفضل مستمدة من نتائج الاختبارات"}]}, {"id": "row-2","items": [{"label": "25.12"},{"label": "0"},{"label": "إعداد جديد"}]}]} />

عتبة عدد البايتات المطلوب قراءتها لكل نسخة متماثلة لتمكين النسخ المتماثلة المتوازية تلقائيًا (ينطبق ذلك فقط عندما تكون `automatic_parallel_replicas_mode`=1). وتعني القيمة 0 عدم وجود عتبة.
يُقدَّر العدد الإجمالي للبايتات المطلوب قراءتها استنادًا إلى الإحصاءات المُجمَّعة.

<div id="automatic_parallel_replicas_mode">
  ## automatic\_parallel\_replicas\_mode
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "0"},{"label": "إعداد جديد"}]}]} />

يُمكّن من التبديل تلقائيًا إلى التنفيذ باستخدام النسخ المتماثلة المتوازية استنادًا إلى الإحصاءات المُجمَّعة. يتطلب `enable_analyzer = 1` و`enable_parallel_replicas != 0` و`parallel_replicas_local_plan = 1` مع تحديد `cluster_for_parallel_replicas`.
0 - معطّل، 1 - مفعّل، 2 - يكون جمع الإحصاءات فقط مفعّلًا (ويكون التبديل إلى التنفيذ باستخدام النسخ المتماثلة المتوازية معطّلًا).

<div id="azure_allow_parallel_part_upload">
  ## azure\_allow\_parallel\_part\_upload
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.4"},{"label": "true"},{"label": "استخدم سلاسل تنفيذ متعددة للرفع متعدد الأجزاء في Azure."}]}]} />

استخدم سلاسل تنفيذ متعددة للرفع متعدد الأجزاء في Azure.

<div id="azure_check_objects_after_upload">
  ## azure\_check\_objects\_after\_upload
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.11"},{"label": "0"},{"label": "تحقّق من كل كائن تم رفعه إلى Azure blob storage للتأكد من نجاح عملية الرفع"}]}, {"id": "row-2","items": [{"label": "24.10"},{"label": "0"},{"label": "تحقّق من كل كائن تم رفعه إلى Azure blob storage للتأكد من نجاح عملية الرفع"}]}]} />

تحقّق من كل كائن تم رفعه إلى Azure blob storage للتأكد من نجاح عملية الرفع

<div id="azure_connect_timeout_ms">
  ## azure\_connect\_timeout\_ms
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "1000"},{"label": "إعداد جديد"}]}]} />

مهلة الاتصال بالمضيف لأقراص Azure.

<div id="azure_create_new_file_on_insert">
  ## azure\_create\_new\_file\_on\_insert
</div>

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

يتيح تمكين أو تعطيل إنشاء ملف جديد مع كل عملية إدراج في جداول محرك Azure

<div id="azure_ignore_file_doesnt_exist">
  ## azure\_ignore\_file\_doesnt\_exist
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.6"},{"label": "0"},{"label": "السماح بإرجاع 0 صفوف عندما لا تكون الملفات المطلوبة موجودة، بدلًا من إثارة استثناء في محرك جدول AzureBlobStorage"}]}]} />

تجاهل عدم وجود الملف عند قراءة مفاتيح معيّنة إذا لم يكن موجودًا.

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

* 1 — يعيد `SELECT` نتيجة فارغة.
* 0 — يثير `SELECT` استثناءً.

<div id="azure_list_object_keys_size">
  ## azure\_list\_object\_keys\_size
</div>

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

الحد الأقصى لعدد الملفات التي يمكن أن يُرجعها طلب ListObject دفعةً واحدة

<div id="azure_max_blocks_in_multipart_upload">
  ## azure\_max\_blocks\_in\_multipart\_upload
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.5"},{"label": "50000"},{"label": "الحد الأقصى لعدد الكتل في الرفع متعدد الأجزاء في Azure."}]}]} />

الحد الأقصى لعدد الكتل في الرفع متعدد الأجزاء في Azure.

<div id="azure_max_get_burst">
  ## azure\_max\_get\_burst
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "0"},{"label": "إعداد جديد"}]}]} />

الحد الأقصى لعدد الطلبات التي يمكن إرسالها بالتزامن قبل بلوغ حدّ الطلبات في الثانية. افتراضيًا، تكون القيمة (0) مساوية لـ `azure_max_get_rps`

<div id="azure_max_get_rps">
  ## azure\_max\_get\_rps
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "0"},{"label": "إعداد جديد"}]}]} />

الحد الأقصى لمعدل طلبات GET إلى Azure في الثانية قبل تطبيق تقييد المعدل. تعني القيمة 0 عدم وجود حد.

<div id="azure_max_inflight_parts_for_one_file">
  ## azure\_max\_inflight\_parts\_for\_one\_file
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "20"},{"label": "الحد الأقصى لعدد الأجزاء التي يتم تحميلها بالتوازي في طلب الرفع متعدد الأجزاء. 0 يعني عدم وجود حد."}]}]} />

الحد الأقصى لعدد الأجزاء التي يتم تحميلها بالتوازي في طلب الرفع متعدد الأجزاء. 0 يعني عدم وجود حد.

<div id="azure_max_put_burst">
  ## azure\_max\_put\_burst
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "0"},{"label": "إعداد جديد"}]}]} />

الحد الأقصى لعدد الطلبات التي يمكن إرسالها في الوقت نفسه قبل بلوغ حد الطلبات في الثانية. افتراضيًا، تكون القيمة (0) مساوية لـ `azure_max_put_rps`

<div id="azure_max_put_rps">
  ## azure\_max\_put\_rps
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "0"},{"label": "إعداد جديد"}]}]} />

الحد الأقصى لمعدل طلبات PUT على Azure في الثانية قبل تطبيق تقييد المعدل. تعني القيمة 0 عدم وجود حد.

<div id="azure_max_redirects">
  ## azure\_max\_redirects
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "10"},{"label": "إعداد جديد"}]}]} />

الحد الأقصى المسموح به لعدد مرات إعادة التوجيه في Azure.

<div id="azure_max_single_part_copy_size">
  ## azure\_max\_single\_part\_copy\_size
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.2"},{"label": "268435456"},{"label": "الحد الأقصى لحجم الكائن الذي يمكن نسخه إلى Azure blob storage باستخدام نسخ من جزء واحد."}]}]} />

الحد الأقصى لحجم الكائن الذي يمكن نسخه إلى Azure blob storage باستخدام نسخ من جزء واحد.

<div id="azure_max_single_part_upload_size">
  ## azure\_max\_single\_part\_upload\_size
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "33554432"},{"label": "متوافق مع S3"}]}]} />

الحد الأقصى لحجم الكائن الذي يمكن رفعه باستخدام رفع أحادي الجزء إلى Azure blob storage.

<div id="azure_max_single_read_retries">
  ## azure\_max\_single\_read\_retries
</div>

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

الحد الأقصى لعدد مرات إعادة المحاولة أثناء قراءة واحدة من Azure blob storage.

<div id="azure_max_unexpected_write_error_retries">
  ## azure\_max\_unexpected\_write\_error\_retries
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.1"},{"label": "4"},{"label": "الحد الأقصى لعدد محاولات إعادة المحاولة عند حدوث أخطاء غير متوقعة أثناء الكتابة إلى Azure blob storage"}]}]} />

الحد الأقصى لعدد محاولات إعادة المحاولة عند حدوث أخطاء غير متوقعة أثناء الكتابة إلى Azure blob storage

<div id="azure_max_upload_part_size">
  ## azure\_max\_upload\_part\_size
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "5368709120"},{"label": "الحد الأقصى لحجم الجزء الذي سيتم رفعه أثناء الرفع متعدد الأجزاء إلى Azure blob storage."}]}]} />

الحد الأقصى لحجم الجزء الذي سيتم رفعه أثناء الرفع متعدد الأجزاء إلى Azure blob storage.

<div id="azure_min_upload_part_size">
  ## azure\_min\_upload\_part\_size
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "16777216"},{"label": "الحد الأدنى لحجم الجزء المراد رفعه عند استخدام الرفع متعدد الأجزاء إلى Azure blob storage."}]}]} />

الحد الأدنى لحجم الجزء المراد رفعه عند استخدام الرفع متعدد الأجزاء إلى Azure blob storage.

<div id="azure_request_timeout_ms">
  ## azure\_request\_timeout\_ms
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "30000"},{"label": "إعداد جديد"}]}]} />

مهلة الخمول لإرسال البيانات إلى Azure واستقبالها منه. يفشل إذا ظلّت عملية قراءة أو كتابة واحدة عبر TCP محظورة لهذه المدة.

<div id="azure_sdk_max_retries">
  ## azure\_sdk\_max\_retries
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.7"},{"label": "10"},{"label": "الحد الأقصى لعدد مرات إعادة المحاولة في azure sdk"}]}]} />

الحد الأقصى لعدد مرات إعادة المحاولة في azure sdk

<div id="azure_sdk_retry_initial_backoff_ms">
  ## azure\_sdk\_retry\_initial\_backoff\_ms
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.7"},{"label": "10"},{"label": "الحد الأدنى لفاصل التراجع بين عمليات إعادة المحاولة في azure sdk"}]}]} />

الحد الأدنى لفاصل التراجع بين عمليات إعادة المحاولة في azure sdk

<div id="azure_sdk_retry_max_backoff_ms">
  ## azure\_sdk\_retry\_max\_backoff\_ms
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.7"},{"label": "1000"},{"label": "الحد الأقصى لفترة التراجع بين مرات إعادة المحاولة في azure sdk"}]}]} />

الحد الأقصى لفترة التراجع بين مرات إعادة المحاولة في azure sdk

<div id="azure_skip_empty_files">
  ## azure\_skip\_empty\_files
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.6"},{"label": "0"},{"label": "السماح بتجاوز الملفات الفارغة في محرك جدول azure"}]}]} />

يُفعّل أو يعطّل تجاوز الملفات الفارغة في محرك S3.

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

* 0 — يُطلق `SELECT` استثناءً إذا كان الملف الفارغ غير متوافق مع التنسيق المطلوب.
* 1 — يعيد `SELECT` نتيجة فارغة للملف الفارغ.

<div id="azure_strict_upload_part_size">
  ## azure\_strict\_upload\_part\_size
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "0"},{"label": "الحجم الدقيق للجزء المطلوب رفعه أثناء الرفع متعدد الأجزاء إلى Azure Blob Storage."}]}]} />

الحجم الدقيق للجزء المطلوب رفعه أثناء الرفع متعدد الأجزاء إلى Azure Blob Storage.

<div id="azure_throw_on_zero_files_match">
  ## azure\_throw\_on\_zero\_files\_match
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.6"},{"label": "0"},{"label": "السماح بإصدار خطأ عندما يتعذر على طلب ListObjects مطابقة أي ملفات في محرك AzureBlobStorage بدلًا من إرجاع نتيجة استعلام فارغة"}]}]} />

يتم إصدار خطأ إذا لم تتم مطابقة أي ملفات وفقًا لقواعد توسيع glob.

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

* 1 — يُطلق `SELECT` استثناءً.
* 0 — يعيد `SELECT` نتيجة فارغة.

<div id="azure_truncate_on_insert">
  ## azure\_truncate\_on\_insert
</div>

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

يُمكّن أو يعطّل تنفيذ truncate قبل insert في جداول محرك Azure.

<div id="azure_upload_part_size_multiply_factor">
  ## azure\_upload\_part\_size\_multiply\_factor
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "2"},{"label": "اضرب azure_min_upload_part_size في هذا العامل كلما تم رفع azure_multiply_parts_count_threshold من الأجزاء من عملية كتابة واحدة إلى Azure Blob Storage."}]}]} />

اضرب azure\_min\_upload\_part\_size في هذا العامل كلما تم رفع azure\_multiply\_parts\_count\_threshold من الأجزاء من عملية كتابة واحدة إلى Azure Blob Storage.

<div id="azure_upload_part_size_multiply_parts_count_threshold">
  ## azure\_upload\_part\_size\_multiply\_parts\_count\_threshold
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "500"},{"label": "في كل مرة يُرفَع فيها هذا العدد من الأجزاء إلى Azure blob storage، تُضاعَف قيمة azure_min_upload_part_size بمعامل azure_upload_part_size_multiply_factor."}]}]} />

في كل مرة يُرفَع فيها هذا العدد من الأجزاء إلى Azure blob storage، تُضاعَف قيمة azure\_min\_upload\_part\_size بمعامل azure\_upload\_part\_size\_multiply\_factor.

<div id="azure_use_adaptive_timeouts">
  ## azure\_use\_adaptive\_timeouts
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "1"},{"label": "إعداد جديد"}]}]} />

عند ضبطها على `true`، تُجرى أول محاولتين لجميع طلبات Azure باستخدام مهلات إرسال واستقبال منخفضة.
عند ضبطها على `false`، تُجرى جميع المحاولات باستخدام مهلات متطابقة.

<div id="backup_restore_batch_size_for_keeper_multi">
  ## backup\_restore\_batch\_size\_for\_keeper\_multi
</div>

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

الحد الأقصى لحجم الدفعة في طلب `multi` إلى \[Zoo]Keeper أثناء النسخ الاحتياطي أو الاستعادة

<div id="backup_restore_batch_size_for_keeper_multiread">
  ## backup\_restore\_batch\_size\_for\_keeper\_multiread
</div>

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

الحد الأقصى لحجم الدفعة في طلب القراءة المتعددة إلى \[Zoo]Keeper أثناء النسخ الاحتياطي أو الاستعادة

<div id="backup_restore_failure_after_host_disconnected_for_seconds">
  ## backup\_restore\_failure\_after\_host\_disconnected\_for\_seconds
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.11"},{"label": "3600"},{"label": "إعداد جديد."}]}, {"id": "row-2","items": [{"label": "24.10"},{"label": "3600"},{"label": "إعداد جديد."}]}]} />

إذا لم يُعِد أحد المضيفين، أثناء عملية BACKUP ON CLUSTER أو RESTORE ON CLUSTER، إنشاء عقدة 'alive' المؤقتة الخاصة به في ZooKeeper خلال هذه المدة، فستُعتبر عملية النسخ الاحتياطي أو الاستعادة بالكامل فاشلة.
يجب أن تكون هذه القيمة أكبر من أي مدة معقولة قد يحتاجها المضيف لإعادة الاتصال بـ ZooKeeper بعد حدوث عطل.
يعني الصفر عدم وجود حد.

<div id="backup_restore_finish_timeout_after_error_sec">
  ## backup\_restore\_finish\_timeout\_after\_error\_sec
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.11"},{"label": "180"},{"label": "إعداد جديد."}]}, {"id": "row-2","items": [{"label": "24.10"},{"label": "180"},{"label": "إعداد جديد."}]}]} />

المدة التي ينبغي أن ينتظرها initiator حتى تستجيب المضيفات الأخرى للعقدة 'error' وتتوقف عن العمل في عملية BACKUP ON CLUSTER أو RESTORE ON CLUSTER الحالية.

<div id="backup_restore_keeper_fault_injection_probability">
  ## backup\_restore\_keeper\_fault\_injection\_probability
</div>

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

الاحتمال التقريبي لفشل طلب Keeper أثناء إجراء النسخ الاحتياطي أو الاستعادة. تقع القيمة الصالحة ضمن النطاق \[0.0f, 1.0f]

<div id="backup_restore_keeper_fault_injection_seed">
  ## backup\_restore\_keeper\_fault\_injection\_seed
</div>

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

0 - البذرة العشوائية، وإلا فتُستخدم قيمة الإعداد

<div id="backup_restore_keeper_max_retries">
  ## backup\_restore\_keeper\_max\_retries
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.11"},{"label": "1000"},{"label": "يجب أن تكون كبيرة بما يكفي حتى لا تفشل عملية BACKUP أو RESTORE بالكامل بسبب عطل مؤقت في [Zoo]Keeper أثناء تنفيذها."}]}, {"id": "row-2","items": [{"label": "24.10"},{"label": "1000"},{"label": "يجب أن تكون كبيرة بما يكفي حتى لا تفشل عملية BACKUP أو RESTORE بالكامل بسبب عطل مؤقت في [Zoo]Keeper أثناء تنفيذها."}]}]} />

الحد الأقصى لعدد إعادة المحاولة لعمليات \[Zoo]Keeper أثناء تنفيذ عملية BACKUP أو RESTORE.
يجب أن تكون كبيرة بما يكفي حتى لا تفشل العملية بالكامل بسبب عطل مؤقت في \[Zoo]Keeper.

<div id="backup_restore_keeper_max_retries_while_handling_error">
  ## backup\_restore\_keeper\_max\_retries\_while\_handling\_error
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.11"},{"label": "20"},{"label": "إعداد جديد."}]}, {"id": "row-2","items": [{"label": "24.10"},{"label": "20"},{"label": "إعداد جديد."}]}]} />

الحد الأقصى لعدد إعادة المحاولة لعمليات \[Zoo]Keeper عند معالجة خطأ في عملية BACKUP ON CLUSTER أو RESTORE ON CLUSTER.

<div id="backup_restore_keeper_max_retries_while_initializing">
  ## backup\_restore\_keeper\_max\_retries\_while\_initializing
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.11"},{"label": "20"},{"label": "إعداد جديد."}]}, {"id": "row-2","items": [{"label": "24.10"},{"label": "20"},{"label": "إعداد جديد."}]}]} />

الحد الأقصى لمرات إعادة المحاولة لعمليات \[Zoo]Keeper أثناء تهيئة عملية BACKUP ON CLUSTER أو RESTORE ON CLUSTER.

<div id="backup_restore_keeper_retry_initial_backoff_ms">
  ## backup\_restore\_keeper\_retry\_initial\_backoff\_ms
</div>

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

مهلة التراجع الأولية لعمليات \[Zoo]Keeper أثناء النسخ الاحتياطي أو الاستعادة

<div id="backup_restore_keeper_retry_max_backoff_ms">
  ## backup\_restore\_keeper\_retry\_max\_backoff\_ms
</div>

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

الحد الأقصى لمهلة التراجع لعمليات \[Zoo]Keeper أثناء النسخ الاحتياطي أو الاستعادة

Cloud default value: `60000`.

<div id="backup_restore_keeper_value_max_size">
  ## backup\_restore\_keeper\_value\_max\_size
</div>

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

الحد الأقصى لحجم البيانات لعقدة \[Zoo]Keeper أثناء النسخ الاحتياطي

<div id="backup_restore_s3_retry_attempts">
  ## backup\_restore\_s3\_retry\_attempts
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.7"},{"label": "1000"},{"label": "إعداد خاص بـ Aws::Client::RetryStrategy، إذ يتولى Aws::Client إعادة المحاولة بنفسه، وتشير القيمة 0 إلى عدم إجراء أي محاولات إعادة. وينطبق ذلك فقط على النسخ الاحتياطي/الاستعادة."}]}]} />

إعداد خاص بـ Aws::Client::RetryStrategy، إذ يتولى Aws::Client إعادة المحاولة بنفسه، وتشير القيمة 0 إلى عدم إجراء أي محاولات إعادة. وينطبق ذلك فقط على النسخ الاحتياطي/الاستعادة.

<div id="backup_restore_s3_retry_initial_backoff_ms">
  ## backup\_restore\_s3\_retry\_initial\_backoff\_ms
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "25"},{"label": "إعداد جديد"}]}]} />

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

<div id="backup_restore_s3_retry_jitter_factor">
  ## backup\_restore\_s3\_retry\_jitter\_factor
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "0.1"},{"label": "إعداد جديد"}]}]} />

معامل التذبذب المُطبَّق على زمن تأخير التراجع لإعادة المحاولة في Aws::Client::RetryStrategy أثناء عمليات النسخ الاحتياطي والاستعادة. يُضرَب زمن تأخير التراجع المحتسَب في عامل عشوائي ضمن النطاق \[1.0, 1.0 + jitter]، حتى الحد الأقصى `backup_restore_s3_retry_max_backoff_ms`. يجب أن تكون قيمته ضمن النطاق \[0.0, 1.0]

<div id="backup_restore_s3_retry_max_backoff_ms">
  ## backup\_restore\_s3\_retry\_max\_backoff\_ms
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "5000"},{"label": "إعداد جديد"}]}]} />

الحد الأقصى للفاصل الزمني، بالمللي ثانية، بين عمليات إعادة المحاولة أثناء عمليات النسخ الاحتياطي والاستعادة.

<div id="backup_slow_all_threads_after_retryable_s3_error">
  ## backup\_slow\_all\_threads\_after\_retryable\_s3\_error
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "0"},{"label": "إعداد جديد"}]}, {"id": "row-2","items": [{"label": "25.6"},{"label": "0"},{"label": "إعداد جديد"}]}, {"id": "row-3","items": [{"label": "25.10"},{"label": "0"},{"label": "تعطيل الإعداد افتراضيًا"}]}]} />

عند ضبطه على `true`، يتم إبطاء جميع سلاسل التنفيذ التي تنفّذ طلبات S3 إلى نقطة نهاية النسخ الاحتياطي نفسها
إذا واجه أي طلب S3 واحد خطأ S3 قابلاً لإعادة المحاولة، مثل 'Slow Down'.
وعند ضبطه على `false`، تتعامل كل سلسلة تنفيذ مع آلية التراجع لطلبات S3 بشكل مستقل عن سلاسل التنفيذ الأخرى.

<div id="cache_warmer_threads">
  ## cache\_warmer\_threads
</div>

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

لا يؤثر هذا الإعداد إلا في ClickHouse Cloud. عدد الخيوط الخلفية لتنزيل أجزاء البيانات الجديدة استباقيًا إلى ذاكرة التخزين المؤقت لنظام الملفات عند تمكين [cache\_populated\_by\_fetch](/ar/reference/settings/merge-tree-settings#cache_populated_by_fetch). اضبط القيمة على صفر للتعطيل.

<div id="calculate_text_stack_trace">
  ## calculate\_text\_stack\_trace
</div>

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

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

<div id="cancel_http_readonly_queries_on_client_close">
  ## cancel\_http\_readonly\_queries\_on\_client\_close
</div>

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

يُلغي استعلامات HTTP المخصّصة للقراءة فقط (مثل `SELECT`) عند إغلاق العميل للاتصال دون انتظار الاستجابة.

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

<div id="cast_ipv4_ipv6_default_on_conversion_error">
  ## cast\_ipv4\_ipv6\_default\_on\_conversion\_error
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "22.3"},{"label": "0"},{"label": "اجعل الدالتين cast(value, 'IPv4') و cast(value, 'IPv6') تعملان بالطريقة نفسها التي تعمل بها الدالتان toIPv4 و toIPv6"}]}]} />

سيُرجع عامل CAST إلى IPv4، وعامل CAST إلى النوع IPv6، والدالتان toIPv4 و toIPv6 القيمة الافتراضية بدلًا من إطلاق استثناء عند حدوث خطأ في التحويل.

<div id="cast_keep_nullable">
  ## cast\_keep\_nullable
</div>

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

يُفعِّل أو يعطّل الاحتفاظ بنوع البيانات `Nullable` في عمليات [CAST](/ar/reference/functions/regular-functions/type-conversion-functions#CAST).

عند تمكين هذا الإعداد وكان وسيط الدالة `CAST` من النوع `Nullable`، تُحوَّل النتيجة أيضًا إلى النوع `Nullable`. وعند تعطيل هذا الإعداد، تكون النتيجة دائمًا من نوع الوجهة المحدد تمامًا.

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

* 0 — تكون نتيجة `CAST` من نوع الوجهة المحدد تمامًا.
* 1 — إذا كان نوع الوسيط هو `Nullable`، فتُحوَّل نتيجة `CAST` إلى `Nullable(DestinationDataType)`.

**أمثلة**

يعطي الاستعلام التالي نوع بيانات الوجهة المحدد تمامًا:

```sql theme={null}
SET cast_keep_nullable = 0;
SELECT CAST(toNullable(toInt32(0)) AS Int32) as x, toTypeName(x);
```

النتيجة:

```text theme={null}
┌─x─┬─toTypeName(CAST(toNullable(toInt32(0)), 'Int32'))─┐
│ 0 │ Int32                                             │
└───┴───────────────────────────────────────────────────┘
```

يؤدي الاستعلام التالي إلى تطبيق المُعدِّل `Nullable` على نوع بيانات الوجهة:

```sql theme={null}
SET cast_keep_nullable = 1;
SELECT CAST(toNullable(toInt32(0)) AS Int32) as x, toTypeName(x);
```

النتيجة:

```text theme={null}
┌─x─┬─toTypeName(CAST(toNullable(toInt32(0)), 'Int32'))─┐
│ 0 │ Nullable(Int32)                                   │
└───┴───────────────────────────────────────────────────┘
```

**انظر أيضًا**

* دالة [CAST](/ar/reference/functions/regular-functions/type-conversion-functions#CAST)

<div id="cast_string_to_date_time_mode">
  ## cast\_string\_to\_date\_time\_mode
</div>

<SettingsInfoBlock type="DateTimeInputFormat" default_value="best_effort" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "best_effort"},{"label": "سهولة استخدام أفضل"}]}, {"id": "row-2","items": [{"label": "25.6"},{"label": "basic"},{"label": "السماح باستخدام وضع مختلف لتحليل DateTime عند التحويل من String إلى DateTime"}]}]} />

يسمح باختيار محلّل للتمثيل النصي للتاريخ والوقت عند التحويل من String.

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

* `'best_effort'` — يفعّل التحليل الموسّع.

  يمكن لـ ClickHouse تحليل التنسيق الأساسي `YYYY-MM-DD HH:MM:SS` وجميع تنسيقات التاريخ والوقت وفق [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601). على سبيل المثال، `'2018-06-08T01:02:03.000Z'`.

* `'best_effort_us'` — مشابه لـ `best_effort` (راجع الفرق في [parseDateTimeBestEffortUS](/ar/reference/functions/regular-functions/type-conversion-functions#parseDateTimeBestEffortUS)

* `'basic'` — يستخدم المحلّل الأساسي.

  لا يمكن لـ ClickHouse تحليل إلا التنسيق الأساسي `YYYY-MM-DD HH:MM:SS` أو `YYYY-MM-DD`. على سبيل المثال، `2019-08-20 10:18:56` أو `2019-08-20`.

راجع أيضًا:

* [نوع البيانات DateTime.](/ar/reference/data-types/datetime)
* [دوال التعامل مع التواريخ والأوقات.](/ar/reference/functions/regular-functions/date-time-functions)

<div id="cast_string_to_dynamic_use_inference">
  ## cast\_string\_to\_dynamic\_use\_inference
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.5"},{"label": "0"},{"label": "إضافة إعداد يتيح تحويل String إلى Dynamic عبر التحليل"}]}]} />

استخدم استنتاج الأنواع أثناء تحويل String إلى Dynamic

<div id="cast_string_to_variant_use_inference">
  ## cast\_string\_to\_variant\_use\_inference
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.4"},{"label": "1"},{"label": "إعداد جديد لتمكين/تعطيل استنتاج الأنواع أثناء CAST من String إلى Variant"}]}]} />

استخدم استنتاج الأنواع عند التحويل من String إلى Variant.

<div id="check_named_collection_dependencies">
  ## check\_named\_collection\_dependencies
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "1"},{"label": "إعداد جديد للتحقق مما إذا كان حذف المجموعة المُسمّاة سيؤدي إلى تعطّل الجداول المعتمدة عليها."}]}]} />

تحقّق من أن DROP NAMED COLLECTION لن يتسبب في تعطّل الجداول التي تعتمد عليها

<div id="check_query_single_value_result">
  ## check\_query\_single\_value\_result
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "0"},{"label": "تم تغيير هذا الإعداد لجعل CHECK TABLE أكثر فائدة"}]}]} />

يحدّد مستوى التفاصيل في نتيجة استعلام [CHECK TABLE](/ar/reference/statements/check-table) لمحركات عائلة `MergeTree`.

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

* 0 — يعرض الاستعلام حالة التحقق لكل جزء بيانات على حدة في الجدول.
* 1 — يعرض الاستعلام الحالة العامة للتحقق من الجدول.

<div id="check_referential_table_dependencies">
  ## check\_referential\_table\_dependencies
</div>

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

تحقّق من أن استعلام DDL (مثل DROP TABLE أو RENAME) لن يتسبب في تعطيل التبعيات المرجعية

<div id="check_table_dependencies">
  ## check\_table\_dependencies
</div>

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

تحقّق من أن استعلام DDL (مثل DROP TABLE أو RENAME) لن يتسبب في تعطيل التبعيات

<div id="checksum_on_read">
  ## checksum\_on\_read
</div>

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

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

<div id="cloud_mode">
  ## cloud\_mode
</div>

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

وضع Cloud

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

<div id="cloud_mode_database_engine">
  ## cloud\_mode\_database\_engine
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.10"},{"label": "1"},{"label": "إعداد لـ ClickHouse Cloud"}]}]} />

محرك قاعدة البيانات المسموح به في Cloud. 1 - تُعاد كتابة DDLs لاستخدام Replicated database، 2 - تُعاد كتابة DDLs لاستخدام Shared database

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

<div id="cloud_mode_engine">
  ## cloud\_mode\_engine
</div>

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

عائلة المحركات المسموح بها في Cloud.

* 0 - السماح بكل شيء
* 1 - إعادة كتابة DDLs لاستخدام \*ReplicatedMergeTree
* 2 - إعادة كتابة DDLs لاستخدام SharedMergeTree
* 3 - إعادة كتابة DDLs لاستخدام SharedMergeTree إلا عند تحديد قرص بعيد بشكل صريح
* 4 - مثل 3، مع استخدام Alias بدلًا من Distributed أيضًا (سيشير جدول Alias إلى الجدول الوجهة لجدول Distributed، لذا سيستخدم الجدول المحلي المقابل)

UInt64 لتقليل الجزء العام

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

<div id="cluster_for_parallel_replicas">
  ## cluster\_for\_parallel\_replicas
</div>

العنقود الخاص بـ shard الذي يقع فيه الخادم الحالي

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

<div id="cluster_function_process_archive_on_multiple_nodes">
  ## cluster\_function\_process\_archive\_on\_multiple\_nodes
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.7"},{"label": "1"},{"label": "إعداد جديد"}]}]} />

إذا تم تعيينه إلى `true`، فسيؤدي ذلك إلى تحسين أداء معالجة الأرشيفات في دوال العنقود. ينبغي تعيينه إلى `false` لضمان التوافق وتجنب الأخطاء أثناء الترقية إلى 25.7+ إذا كنت تستخدم دوال العنقود مع الأرشيفات على الإصدارات الأقدم.

<div id="cluster_table_function_buckets_batch_size">
  ## cluster\_table\_function\_buckets\_batch\_size
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.11"},{"label": "0"},{"label": "إعداد جديد."}]}]} />

يحدّد الحجم التقريبي للدفعة (بالبايت) المستخدمة في المعالجة الموزعة للمهام ضمن دوال الجداول الخاصة بالعنقود عند استخدام درجة تقسيم `bucket`. ويواصل النظام تجميع البيانات حتى يصل إلى هذا الحجم على الأقل. وقد يكون الحجم الفعلي أكبر قليلًا ليتوافق مع حدود البيانات.

<div id="cluster_table_function_split_granularity">
  ## cluster\_table\_function\_split\_granularity
</div>

<SettingsInfoBlock type="ObjectStorageGranularityLevel" default_value="file" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.11"},{"label": "file"},{"label": "إعداد جديد."}]}]} />

يتحكم هذا الإعداد في كيفية تقسيم البيانات إلى مهام عند تنفيذ `CLUSTER TABLE FUNCTION`.

يحدّد هذا الإعداد مستوى تفصيل توزيع العمل عبر العنقود:

* `file` — تعالج كل مهمة ملفًا كاملًا.
* `bucket` — تُنشأ المهام لكل كتلة بيانات داخلية داخل الملف (على سبيل المثال، مجموعات الصفوف في Parquet).

يمكن أن يؤدي اختيار مستوى تفصيل أدق (مثل `bucket`) إلى تحسين التوازي عند العمل على عدد صغير من الملفات الكبيرة.
فعلى سبيل المثال، إذا كان ملف Parquet يحتوي على عدة مجموعات صفوف، فإن تفعيل مستوى `bucket` يتيح معالجة كل مجموعة بشكل مستقل بواسطة عمّال مختلفين.

<div id="collect_hash_table_stats_during_aggregation">
  ## collect\_hash\_table\_stats\_during\_aggregation
</div>

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

فعّل جمع إحصاءات جدول التجزئة لتحسين تخصيص الذاكرة

<div id="collect_hash_table_stats_during_joins">
  ## collect\_hash\_table\_stats\_during\_joins
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.7"},{"label": "1"},{"label": "إعداد جديد."}]}]} />

تفعيل جمع إحصاءات جدول التجزئة لتحسين تخصيص الذاكرة

<div id="compatibility">
  ## compatibility
</div>

يجعل الإعداد `compatibility` ClickHouse يستخدم الإعدادات الافتراضية لإصدار سابق من ClickHouse، على أن يُحدَّد ذلك الإصدار السابق من خلال هذا الإعداد.

إذا كانت بعض الإعدادات مضبوطة على قيم غير افتراضية، فستظل هذه القيم مُعتمدة (ولا يؤثر الإعداد `compatibility` إلا في الإعدادات التي لم تُعدَّل).

يأخذ هذا الإعداد رقم إصدار ClickHouse كسلسلة نصية، مثل `22.3` و`22.8`. وتعني القيمة الفارغة أن هذا الإعداد معطّل.

يكون معطّلًا افتراضيًا.

<Note>
  في ClickHouse Cloud، يجب أن يضبط فريق ClickHouse Cloud Support إعداد compatibility الافتراضي على مستوى الخدمة. يُرجى [فتح طلب دعم](https://clickhouse.cloud/support) ليتم ضبطه.
  ومع ذلك، يمكن تجاوز إعداد compatibility على مستوى المستخدم أو الدور أو profile أو query أو session باستخدام آليات إعدادات ClickHouse القياسية، مثل `SET compatibility = '22.3'` داخل session أو `SETTINGS compatibility = '22.3'` داخل query.
</Note>

<div id="compatibility_ignore_auto_increment_in_create_table">
  ## compatibility\_ignore\_auto\_increment\_in\_create\_table
</div>

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

تجاهل الكلمة المفتاحية AUTO\_INCREMENT في تعريف العمود إذا كانت القيمة true، وإلا فأعِد error. يسهّل ذلك الترحيل من MySQL

<div id="compatibility_ignore_collation_in_create_table">
  ## compatibility\_ignore\_collation\_in\_create\_table
</div>

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

التوافق: تجاهل Collation في CREATE TABLE

<div id="compatibility_s3_presigned_url_query_in_path">
  ## compatibility\_s3\_presigned\_url\_query\_in\_path
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "0"},{"label": "إعداد جديد."}]}]} />

التوافق: عند التمكين، تُضمَّن معلمات استعلام URL الموقَّعة مسبقًا (مثل X-Amz-\*) في مفتاح S3 (السلوك القديم)،
بحيث تعمل '?' كمحرف بدل في المسار. وعند التعطيل (وهو الوضع الافتراضي)، تُحفَظ معلمات استعلام URL الموقَّعة مسبقًا في جزء الاستعلام من URL
لتجنّب تفسير '?' على أنه محرف بدل.

<div id="compile_aggregate_expressions">
  ## compile\_aggregate\_expressions
</div>

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

يُفعِّل أو يُعطِّل الترجمة الفورية (JIT) للدوال التجميعية إلى شيفرة أصلية. يمكن أن يؤدي تفعيل هذا الإعداد إلى تحسين الأداء.

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

* 0 — يُجرى التجميع دون ترجمة فورية (JIT).
* 1 — يُجرى التجميع باستخدام الترجمة الفورية (JIT).

**راجع أيضًا**

* [min\_count\_to\_compile\_aggregate\_expression](#min_count_to_compile_aggregate_expression)

<div id="compile_expressions">
  ## compile\_expressions
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "1"},{"label": "نعتقد أن البنية التحتية لـ LLVM التي يستند إليها مصرّف JIT مستقرة بما يكفي لتفعيل هذا الإعداد افتراضيًا."}]}]} />

ترجمة بعض الدوال القيَمية والمعاملات إلى شيفرة أصلية.

<div id="compile_sort_description">
  ## compile\_sort\_description
</div>

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

ترجمة وصف الفرز إلى شيفرة أصلية.

<div id="connect_timeout">
  ## connect\_timeout
</div>

<SettingsInfoBlock type="ثوانٍ" default_value="10" />

مهلة الاتصال عند عدم وجود نُسخ متماثلة.

<div id="connect_timeout_with_failover_ms">
  ## connect\_timeout\_with\_failover\_ms
</div>

<SettingsInfoBlock type="ميلي ثانية" default_value="1000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "23.4"},{"label": "1000"},{"label": "زيادة مهلة الاتصال الافتراضية بسبب الاتصال غير المتزامن"}]}]} />

المهلة، بالميلي ثانية، للاتصال بخادم بعيد باستخدام محرك الجدول Distributed، إذا استُخدم القسمان 'shard' و 'replica' في تعريف العنقود.
إذا لم تنجح المحاولة، تُجرى عدة محاولات للاتصال بنسخ متماثلة مختلفة.

<div id="connect_timeout_with_failover_secure_ms">
  ## connect\_timeout\_with\_failover\_secure\_ms
</div>

<SettingsInfoBlock type="مللي ثانية" default_value="1000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "23.4"},{"label": "1000"},{"label": "زيادة المهلة الافتراضية للاتصال الآمن بسبب الاتصال غير المتزامن"}]}]} />

مهلة الاتصال لاختيار أول نسخة متماثلة سليمة في الاتصالات الآمنة.

<div id="connection_pool_max_wait_ms">
  ## connection\_pool\_max\_wait\_ms
</div>

<SettingsInfoBlock type="مللي ثانية" default_value="0" />

مدة الانتظار بالمللي ثانية للحصول على اتصال عندما يكون مجمع الاتصالات ممتلئًا.

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

* عدد صحيح موجب.
* 0 — مهلة غير محدودة.

<div id="connections_with_failover_max_tries">
  ## connections\_with\_failover\_max\_tries
</div>

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

الحد الأقصى لعدد محاولات الاتصال مع كل نسخة متماثلة في محرك الجدول Distributed.

<div id="convert_query_to_cnf">
  ## convert\_query\_to\_cnf
</div>

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

عند ضبطه على `true`، سيُحوَّل استعلام `SELECT` إلى الصيغة العادية الاقترانية (CNF). في بعض الحالات، قد يؤدّي إعادة كتابة الاستعلام بهذه الصيغة إلى تنفيذ أسرع (راجِع [issue على GitHub](https://github.com/ClickHouse/ClickHouse/issues/11749) للاطلاع على الشرح).

على سبيل المثال، لاحظ كيف لا يجري تعديل استعلام `SELECT` التالي (وهذا هو السلوك الافتراضي):

```sql theme={null}
EXPLAIN SYNTAX
SELECT *
FROM
(
    SELECT number AS x
    FROM numbers(20)
) AS a
WHERE ((x >= 1) AND (x <= 5)) OR ((x >= 10) AND (x <= 15))
SETTINGS convert_query_to_cnf = false;
```

النتيجة هي:

```response theme={null}
┌─explain────────────────────────────────────────────────────────┐
│ SELECT x                                                       │
│ FROM                                                           │
│ (                                                              │
│     SELECT number AS x                                         │
│     FROM numbers(20)                                           │
│     WHERE ((x >= 1) AND (x <= 5)) OR ((x >= 10) AND (x <= 15)) │
│ ) AS a                                                         │
│ WHERE ((x >= 1) AND (x <= 5)) OR ((x >= 10) AND (x <= 15))     │
│ SETTINGS convert_query_to_cnf = 0                              │
└────────────────────────────────────────────────────────────────┘
```

لنضبط `convert_query_to_cnf` على `true` ونرَ ما الذي سيتغيّر:

```sql theme={null}
EXPLAIN SYNTAX
SELECT *
FROM
(
    SELECT number AS x
    FROM numbers(20)
) AS a
WHERE ((x >= 1) AND (x <= 5)) OR ((x >= 10) AND (x <= 15))
SETTINGS convert_query_to_cnf = true;
```

لاحظ أن عبارة `WHERE` أُعيدت كتابتها بصيغة CNF، لكن مجموعة النتائج متطابقة تمامًا - والمنطق البولياني لم يتغير:

```response theme={null}
┌─explain───────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ SELECT x                                                                                                              │
│ FROM                                                                                                                  │
│ (                                                                                                                     │
│     SELECT number AS x                                                                                                │
│     FROM numbers(20)                                                                                                  │
│     WHERE ((x <= 15) OR (x <= 5)) AND ((x <= 15) OR (x >= 1)) AND ((x >= 10) OR (x <= 5)) AND ((x >= 10) OR (x >= 1)) │
│ ) AS a                                                                                                                │
│ WHERE ((x >= 10) OR (x >= 1)) AND ((x >= 10) OR (x <= 5)) AND ((x <= 15) OR (x >= 1)) AND ((x <= 15) OR (x <= 5))     │
│ SETTINGS convert_query_to_cnf = 1                                                                                     │
└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
```

القيم الممكنة: true, false

<div id="correlated_subqueries_default_join_kind">
  ## correlated\_subqueries\_default\_join\_kind
</div>

<SettingsInfoBlock type="DecorrelationJoinKind" default_value="right" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.11"},{"label": "right"},{"label": "إعداد جديد. نوع JOIN الافتراضي لخطة الاستعلام بعد فك الارتباط."}]}, {"id": "row-2","items": [{"label": "25.10"},{"label": "right"},{"label": "إعداد جديد. نوع JOIN الافتراضي لخطة الاستعلام بعد فك الارتباط."}]}]} />

يتحكم في نوع عمليات JOIN في خطة الاستعلام بعد فك الارتباط. القيمة الافتراضية هي `right`، ما يعني أن الخطة بعد فك الارتباط ستتضمن عمليات RIGHT JOIN مع إدخال الاستعلام الفرعي على الجانب الأيمن.

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

* `left` - ستنتج عملية فك الارتباط عمليات LEFT JOIN، وسيظهر جدول الإدخال على الجانب الأيسر.
* `right` - ستنتج عملية فك الارتباط عمليات RIGHT JOIN، وسيظهر جدول الإدخال على الجانب الأيمن.

<div id="correlated_subqueries_substitute_equivalent_expressions">
  ## correlated\_subqueries\_substitute\_equivalent\_expressions
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.7"},{"label": "1"},{"label": "إعداد جديد لتحسين تخطيط الاستعلامات الفرعية المترابطة."}]}]} />

استخدم تعبيرات التصفية لاستنباط التعبيرات المكافئة واستبدالها بها بدلًا من إنشاء CROSS JOIN.

<div id="correlated_subqueries_use_in_memory_buffer">
  ## correlated\_subqueries\_use\_in\_memory\_buffer
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.1"},{"label": "1"},{"label": "استخدام مخزن مؤقت في الذاكرة افتراضيًا لمدخلات الاستعلامات الفرعية المترابطة."}]}]} />

استخدم مخزنًا مؤقتًا في الذاكرة لمدخلات الاستعلامات الفرعية المترابطة لتجنّب إعادة تقييمها بشكل متكرر.

<div id="count_distinct_implementation">
  ## count\_distinct\_implementation
</div>

<SettingsInfoBlock type="String" default_value="uniqExact" />

يحدّد أيًّا من دوال `uniq*` يجب استخدامه لتنفيذ صيغة [COUNT(DISTINCT ...)](/ar/reference/functions/aggregate-functions/count).

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

* [uniq](/ar/reference/functions/aggregate-functions/uniq)
* [uniqCombined](/ar/reference/functions/aggregate-functions/uniqCombined)
* [uniqCombined64](/ar/reference/functions/aggregate-functions/uniqCombined64)
* [uniqHLL12](/ar/reference/functions/aggregate-functions/uniqHLL12)
* [uniqExact](/ar/reference/functions/aggregate-functions/uniqExact)

<div id="count_distinct_optimization">
  ## count\_distinct\_optimization
</div>

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

تحويل count distinct إلى استعلام فرعي مع group by

<div id="count_matches_stop_at_empty_match">
  ## count\_matches\_stop\_at\_empty\_match
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.6"},{"label": "0"},{"label": "إعداد جديد."}]}]} />

توقّف عن العدّ بمجرد أن يطابق النمط طولًا صفريًا في الدالة `countMatches`.

<div id="create_if_not_exists">
  ## create\_if\_not\_exists
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.9"},{"label": "0"},{"label": "إعداد جديد."}]}]} />

فعِّل `IF NOT EXISTS` لعبارة `CREATE` افتراضيًا. إذا تم تحديد هذا الإعداد أو `IF NOT EXISTS` وكان هناك جدول بالاسم المحدد موجودًا بالفعل، فلن يتم طرح أي استثناء.

<div id="create_index_ignore_unique">
  ## create\_index\_ignore\_unique
</div>

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

تجاهل الكلمة المفتاحية UNIQUE في CREATE UNIQUE INDEX. مخصص لاختبارات التوافق مع SQL.

<div id="create_replicated_merge_tree_fault_injection_probability">
  ## create\_replicated\_merge\_tree\_fault\_injection\_probability
</div>

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

احتمال حقن عطل أثناء إنشاء الجدول بعد إنشاء البيانات الوصفية في ZooKeeper

<div id="create_table_empty_primary_key_by_default">
  ## create\_table\_empty\_primary\_key\_by\_default
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.11"},{"label": "1"},{"label": "تحسين سهولة الاستخدام"}]}]} />

السماح بإنشاء جداول \*MergeTree بمفتاح أساسي فارغ عند عدم تحديد ORDER BY وPRIMARY KEY

<div id="cross_join_min_bytes_to_compress">
  ## cross\_join\_min\_bytes\_to\_compress
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.5"},{"label": "1073741824"},{"label": "الحد الأدنى لحجم الكتلة المطلوب لضغطها في CROSS JOIN. وتعني القيمة صفر تعطيل هذه العتبة. وتُضغط هذه الكتلة عند بلوغ أيٍّ من العتبتين (بحسب الصفوف أو البايتات)."}]}]} />

الحد الأدنى لحجم الكتلة المطلوب لضغطها في CROSS JOIN. وتعني القيمة صفر تعطيل هذه العتبة. وتُضغط هذه الكتلة عند بلوغ أيٍّ من العتبتين (بحسب الصفوف أو البايتات).

<div id="cross_join_min_rows_to_compress">
  ## cross\_join\_min\_rows\_to\_compress
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.5"},{"label": "10000000"},{"label": "الحد الأدنى لعدد الصفوف المطلوب لضغط الكتلة في CROSS JOIN. تعني القيمة صفر تعطيل هذه العتبة. تُضغط هذه الكتلة عند الوصول إلى أيٍّ من العتبتين (بحسب الصفوف أو البايتات)."}]}]} />

الحد الأدنى لعدد الصفوف المطلوب لضغط الكتلة في CROSS JOIN. تعني القيمة صفر تعطيل هذه العتبة. تُضغط هذه الكتلة عند الوصول إلى أيٍّ من العتبتين (بحسب الصفوف أو البايتات).

<div id="cross_to_inner_join_rewrite">
  ## cross\_to\_inner\_join\_rewrite
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "22.7"},{"label": "2"},{"label": "فرض إعادة كتابة comma join إلى inner join"}]}]} />

استخدم `inner join` بدلًا من `comma/cross join` إذا كانت هناك تعبيرات ربط في قسم `WHERE`. القيم: 0 - بلا إعادة كتابة، 1 - يُطبَّق عند الإمكان على `comma/cross`، 2 - فرض إعادة كتابة جميع عمليات `comma join`، و`cross join` عند الإمكان

<div id="data_type_default_nullable">
  ## data\_type\_default\_nullable
</div>

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

يجعل أنواع البيانات التي لا تحتوي على المعدِّلات الصريحة [NULL or NOT NULL](/ar/reference/statements/create/table#null-or-not-null-modifiers) في تعريف العمود من النوع [Nullable](/ar/reference/data-types/nullable).

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

* 1 — تُضبط أنواع البيانات في تعريفات الأعمدة على `Nullable` افتراضيًا.
* 0 — تُضبط أنواع البيانات في تعريفات الأعمدة على أنها غير `Nullable` افتراضيًا.

<div id="database_atomic_wait_for_drop_and_detach_synchronously">
  ## database\_atomic\_wait\_for\_drop\_and\_detach\_synchronously
</div>

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

يضيف المُعدِّل `SYNC` إلى جميع استعلامات `DROP` و`DETACH`.

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

* 0 — ستُنفَّذ الاستعلامات مع تأخير.
* 1 — ستُنفَّذ الاستعلامات من دون تأخير.

<div id="database_datalake_require_metadata_access">
  ## database\_datalake\_require\_metadata\_access
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.1"},{"label": "1"},{"label": "إعداد جديد."}]}]} />

ما إذا كان سيتم طرح خطأ أم لا إذا لم تكن لدينا صلاحيات الوصول إلى البيانات الوصفية للجدول في محرك قاعدة البيانات DataLakeCatalog.

<div id="database_replicated_allow_explicit_uuid">
  ## database\_replicated\_allow\_explicit\_uuid
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.9"},{"label": "0"},{"label": "أُضيف إعداد جديد لمنع التحديد الصريح لـ UUID للجدول"}]}]} />

0 - لا تسمح بالتحديد الصريح لـ UUID للجداول في قواعد بيانات Replicated. 1 - اسمح بذلك. 2 - اسمح بذلك، ولكن تجاهل UUID المحدَّد وأنشئ بدلًا منه واحدًا عشوائيًا.

<div id="database_replicated_allow_heavy_create">
  ## database\_replicated\_allow\_heavy\_create
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.7"},{"label": "0"},{"label": "كان يُمنع تنفيذ استعلامات DDL طويلة التشغيل (CREATE AS SELECT و POPULATE) لمحرك قاعدة البيانات Replicated"}]}]} />

يسمح باستعلامات DDL طويلة التشغيل (CREATE AS SELECT و POPULATE) في محرك قاعدة البيانات Replicated. لاحظ أن ذلك قد يؤدي إلى حظر قائمة انتظار DDL لفترة طويلة.

<div id="database_replicated_allow_only_replicated_engine">
  ## database\_replicated\_allow\_only\_replicated\_engine
</div>

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

يسمح بإنشاء جداول Replicated فقط في قاعدة بيانات تستخدم المحرك Replicated

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

<div id="database_replicated_allow_replicated_engine_arguments">
  ## database\_replicated\_allow\_replicated\_engine\_arguments
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.9"},{"label": "0"},{"label": "عدم السماح بالوسائط الصريحة افتراضيًا"}]}]} />

0 - عدم السماح بتحديد مسار ZooKeeper واسم النسخة المتماثلة صراحةً لِجداول \*MergeTree في قواعد بيانات Replicated. 1 - السماح بذلك. 2 - السماح بذلك، مع تجاهل المسار المحدد واستخدام المسار الافتراضي بدلًا منه. 3 - السماح بذلك وعدم تسجيل تحذير.

<div id="database_replicated_always_detach_permanently">
  ## database\_replicated\_always\_detach\_permanently
</div>

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

نفّذ DETACH TABLE كأنه DETACH TABLE PERMANENTLY إذا كان محرك قاعدة البيانات هو Replicated

<div id="database_replicated_enforce_synchronous_settings">
  ## database\_replicated\_enforce\_synchronous\_settings
</div>

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

يفرض الانتظار المتزامن لبعض الاستعلامات (انظر أيضًا: database\_atomic\_wait\_for\_drop\_and\_detach\_synchronously و mutations\_sync و alter\_sync). لا يُنصح بتمكين هذه الإعدادات.

<div id="database_replicated_initial_query_timeout_sec">
  ## database\_replicated\_initial\_query\_timeout\_sec
</div>

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

يحدّد المدة، بالثواني، التي ينبغي أن ينتظرها استعلام DDL الأولي حتى تعالج قاعدة بيانات Replicated عناصر قائمة انتظار DDL السابقة.

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

* عدد صحيح موجب.
* 0 — غير محدود.

<div id="database_shared_drop_table_delay_seconds">
  ## database\_shared\_drop\_table\_delay\_seconds
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.11"},{"label": "28800"},{"label": "إعداد جديد."}]}]} />

مدة التأخير، بالثواني، قبل إزالة الجدول المحذوف فعليًا من قاعدة بيانات Shared. يتيح ذلك استعادة الجدول خلال هذه المدة باستخدام عبارة `UNDROP TABLE`.

<div id="decimal_check_overflow">
  ## decimal\_check\_overflow
</div>

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

التحقق من تجاوز السعة في عمليات الحساب/المقارنة للأعداد العشرية

<div id="deduplicate_blocks_in_dependent_materialized_views">
  ## deduplicate\_blocks\_in\_dependent\_materialized\_views
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "1"},{"label": "تفعيل إزالة التكرار للعروض المُجسَّدة التابعة افتراضيًا."}]}]} />

يُفعِّل أو يعطِّل فحص إزالة التكرار للعروض المُجسَّدة التي تتلقى البيانات من جداول Replicated\*.

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

0 — معطَّل.
1 — مفعَّل.

عند التفعيل، يُجري ClickHouse إزالة تكرار للكتل في العروض المُجسَّدة التي تعتمد على جداول Replicated\*.
ويُعد هذا الإعداد مفيدًا لضمان عدم احتواء العروض المُجسَّدة على بيانات مكررة عند إعادة محاولة عملية الإدراج بسبب حدوث فشل.

**انظر أيضًا**

* [معالجة NULL في عوامل التشغيل IN](/ar/concepts/features/operations/insert/deduplicating-inserts-on-retries#insert-deduplication-with-materialized-views)

<div id="deduplicate_insert">
  ## deduplicate\_insert
</div>

<SettingsInfoBlock type="DeduplicateInsertMode" default_value="enable" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "enable"},{"label": "تمكين إزالة التكرار افتراضيًا لجميع عمليات `insert` المتزامنة وغير المتزامنة."}]}]} />

يُفعّل هذا الإعداد أو يعطّل إزالة تكرار الكتل لعبارة `INSERT INTO` (لجداول Replicated\*).
ويتجاوز هذا الإعداد كلاً من `insert_deduplicate` و`async_insert_deduplicate`.
ولهذا الإعداد ثلاث قيم ممكنة:

* disable — تكون إزالة التكرار معطّلة لعبارة `INSERT INTO`.
* enable — تكون إزالة التكرار مفعّلة لعبارة `INSERT INTO`.
* backward\_compatible\_choice — تُفعَّل إزالة التكرار إذا كان `insert_deduplicate` أو `async_insert_deduplicate` مفعّلًا لنوع `insert` المحدد.

<div id="deduplicate_insert_select">
  ## deduplicate\_insert\_select
</div>

<SettingsInfoBlock type="DeduplicateInsertSelectMode" default_value="enable_when_possible" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.1"},{"label": "enable_when_possible"},{"label": "تغيير السلوك الافتراضي لـ deduplicate_insert_select إلى ENABLE_WHEN_POSSIBLE"}]}, {"id": "row-2","items": [{"label": "25.12"},{"label": "enable_even_for_bad_queries"},{"label": "إعداد جديد، يحل محل insert_select_deduplicate"}]}]} />

يُمكّن هذا الإعداد أو يعطّل إزالة التكرار للكتل في `INSERT SELECT` (لجداول Replicated\*).
ويتجاوز `insert_deduplicate` و `deduplicate_insert` في استعلامات `INSERT SELECT`.
ولهذا الإعداد أربع قيم ممكنة:

* disable — يتم تعطيل إزالة التكرار لاستعلام `INSERT SELECT`.
* force\_enable — يتم تمكين إزالة التكرار لاستعلام `INSERT SELECT`. إذا لم تكن نتيجة SELECT مستقرة، يتم إطلاق استثناء.
* enable\_when\_possible — يتم تمكين إزالة التكرار إذا كان `insert_deduplicate` مُمكّنًا وكانت نتيجة SELECT مستقرة، وإلا يتم تعطيله.
* enable\_even\_for\_bad\_queries - يتم تمكين إزالة التكرار إذا كان `insert_deduplicate` مُمكّنًا. وإذا لم تكن نتيجة SELECT مستقرة، يُسجَّل تحذير، لكن يُنفَّذ الاستعلام مع إزالة التكرار. هذا الخيار مخصّص للتوافق مع الإصدارات السابقة. يُنصح باستخدام خيارات أخرى بدلًا منه لأنه قد يؤدي إلى نتائج غير متوقعة.

<div id="default_materialized_view_sql_security">
  ## default\_materialized\_view\_sql\_security
</div>

<SettingsInfoBlock type="SQLSecurityType" default_value="DEFINER" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.2"},{"label": "DEFINER"},{"label": "يسمح بتحديد قيمة افتراضية لخيار SQL SECURITY عند إنشاء عرض مُجسَّد"}]}]} />

يسمح بتحديد قيمة افتراضية لخيار SQL SECURITY عند إنشاء عرض مُجسَّد. [مزيد من المعلومات حول SQL security](/ar/reference/statements/create/view#sql_security).

القيمة الافتراضية هي `DEFINER`.

<div id="default_max_bytes_in_join">
  ## default\_max\_bytes\_in\_join
</div>

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

الحد الأقصى لحجم الجدول في الجانب الأيمن إذا كان مطلوبًا فرض حدّ، ولكن لم يتم تعيين `max_bytes_in_join`.

<div id="default_normal_view_sql_security">
  ## default\_normal\_view\_sql\_security
</div>

<SettingsInfoBlock type="SQLSecurityType" default_value="INVOKER" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.2"},{"label": "INVOKER"},{"label": "يتيح تعيين الخيار الافتراضي `SQL SECURITY` عند إنشاء normal view"}]}]} />

يتيح تعيين الخيار الافتراضي `SQL SECURITY` عند إنشاء normal view. [المزيد حول SQL security](/ar/reference/statements/create/view#sql_security).

القيمة الافتراضية هي `INVOKER`.

<div id="default_table_engine">
  ## default\_table\_engine
</div>

<SettingsInfoBlock type="DefaultTableEngine" default_value="MergeTree" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "MergeTree"},{"label": "تعيين محرّك الجدول الافتراضي إلى MergeTree لتحسين سهولة الاستخدام"}]}]} />

محرّك الجدول الافتراضي المُستخدَم عند عدم تعيين `ENGINE` في عبارة `CREATE`.

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

* سلسلة تمثل أي اسم صالح لمحرّك جدول

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

**مثال**

استعلام:

```sql theme={null}
SET default_table_engine = 'Log';

SELECT name, value, changed FROM system.settings WHERE name = 'default_table_engine';
```

النتيجة:

```response theme={null}
┌─name─────────────────┬─value─┬─changed─┐
│ default_table_engine │ Log   │       1 │
└──────────────────────┴───────┴─────────┘
```

في هذا المثال، سيستخدم أي جدول جديد لا يحدِّد `Engine` محرك الجدول `Log`:

الاستعلام:

```sql theme={null}
CREATE TABLE my_table (
    x UInt32,
    y UInt32
);

SHOW CREATE TABLE my_table;
```

النتيجة:

```response theme={null}
┌─statement────────────────────────────────────────────────────────────────┐
│ CREATE TABLE default.my_table
(
    `x` UInt32,
    `y` UInt32
)
ENGINE = Log
└──────────────────────────────────────────────────────────────────────────┘
```

<div id="default_temporary_table_engine">
  ## default\_temporary\_table\_engine
</div>

<SettingsInfoBlock type="DefaultTableEngine" default_value="Memory" />

مثل [default\_table\_engine](#default_table_engine)، ولكن للجداول المؤقتة.

في هذا المثال، سيستخدم أي جدول مؤقت جديد لا يحدّد `Engine` محرك الجدول `Log`:

الاستعلام:

```sql theme={null}
SET default_temporary_table_engine = 'Log';

CREATE TEMPORARY TABLE my_table (
    x UInt32,
    y UInt32
);

SHOW CREATE TEMPORARY TABLE my_table;
```

النتيجة:

```response theme={null}
┌─statement────────────────────────────────────────────────────────────────┐
│ CREATE TEMPORARY TABLE default.my_table
(
    `x` UInt32,
    `y` UInt32
)
ENGINE = Log
└──────────────────────────────────────────────────────────────────────────┘
```

<div id="default_view_definer">
  ## default\_view\_definer
</div>

<SettingsInfoBlock type="String" default_value="CURRENT_USER" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.2"},{"label": "CURRENT_USER"},{"label": "يتيح تعيين خيار `DEFINER` الافتراضي عند إنشاء عرض"}]}]} />

يتيح تعيين خيار `DEFINER` الافتراضي عند إنشاء عرض. [المزيد عن SQL security](/ar/reference/statements/create/view#sql_security).

القيمة الافتراضية هي `CURRENT_USER`.

<div id="defer_partition_pruning_after_final">
  ## defer\_partition\_pruning\_after\_final
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "1"},{"label": "أُضيف هذا الإعداد في 26.5 للتحكم في سلوك partition pruning الخاص بـ `FINAL` الذي طُرح بصمت في 26.3 (https://github.com/ClickHouse/ClickHouse/pull/98242). وقد سُجِّل التغيير الدلالي المهم ضمن قسم 26.3، لذا فإن `compatibility = '26.2'` يعيده؛ وهذه الخانة موجودة لكي يقبل فحص الترقية من 26.4 الاسم المُضاف حديثًا."}]}, {"id": "row-2","items": [{"label": "26.3"},{"label": "1"},{"label": "يتحكم هذا الإعداد في تخطي مخطِّط `FINAL` لعملية partition pruning بشكل غير مشروط عندما لا يكون عمود مفتاح partition ضمن مفتاح الفرز. وقد طُرح تغيير السلوك نفسه بصمت في 26.3 عبر https://github.com/ClickHouse/ClickHouse/pull/98242؛ وتوثّق هذه الخانة ذلك بأثر رجعي بحيث إن `compatibility = '26.2'` يعيد سلوك ما قبل هذا التراجع (0 = تقليم قبل `FINAL`، سريع؛ 1 = تأجيل التقليم، آمن من ناحية الصحة)."}]}]} />

عند تمكينه (وهو الإعداد الافتراضي)، يتم تخطي partition pruning لاستعلامات `FINAL` على الجداول التي لا تكون
أعمدة مفتاح partition فيها جزءًا من مفتاح الفرز. وهذا هو السلوك الآمن من ناحية الصحة
الذي قُدِّم في 26.3: إذ قد يحتاج `FINAL` إلى إزالة تكرار الصفوف التي تشترك في
المفتاح الأساسي لكنها موجودة في partitions مختلفة، كما أن partition pruning قد يستبعد
مثل هذه الصفوف بصمت من مدخلات إزالة التكرار.

عند تعطيله، يُطبَّق partition pruning حتى مع `FINAL`، مما يعيد
سلوك ما قبل 26.3. ويمكن أن يكون هذا أسرع بكثير للاستعلامات التي تحتوي على
شروط `WHERE` على عمود partition، لكنه يكون صحيحًا فقط عندما يتعذر وجود صفوف لها المفتاح الأساسي نفسه
في partitions مختلفة — مثلًا، جداول سجلات الأحداث التي يُضبط فيها عمود partition وقت الإدراج
ولا يتغير أبدًا.

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

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

* 0 — تطبيق partition pruning قبل `FINAL` (سلوك ما قبل 26.3، أسرع لكنه غير آمن في الحالة العامة).
* 1 — تأجيل partition pruning إلى ما بعد `FINAL` (الافتراضي، آمن من ناحية الصحة).

<div id="delta_lake_enable_engine_predicate">
  ## delta\_lake\_enable\_engine\_predicate
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "1"},{"label": "إعداد جديد"}]}]} />

يُمكّن من تشذيب البيانات الداخلي في delta-kernel.

<div id="delta_lake_enable_expression_visitor_logging">
  ## delta\_lake\_enable\_expression\_visitor\_logging
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "0"},{"label": "إعداد جديد"}]}]} />

يُمكّن سجلات مستوى Test لزائر تعبيرات DeltaLake. وقد تكون هذه السجلات مطوّلة للغاية حتى بالنسبة إلى تسجيلات الاختبار.

<div id="delta_lake_insert_max_bytes_in_data_file">
  ## delta\_lake\_insert\_max\_bytes\_in\_data\_file
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.9"},{"label": "1073741824"},{"label": "إعداد جديد."}]}]} />

يحدّد حدًّا بالبايتات لملف بيانات واحد يتم إدراجه في Delta Lake.

<div id="delta_lake_insert_max_rows_in_data_file">
  ## delta\_lake\_insert\_max\_rows\_in\_data\_file
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.9"},{"label": "1000000"},{"label": "إعداد جديد."}]}]} />

يحدّد الحد الأقصى لعدد الصفوف في ملف بيانات واحد مُدرَج في delta lake.

<div id="delta_lake_log_metadata">
  ## delta\_lake\_log\_metadata
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.10"},{"label": "0"},{"label": "إعداد جديد."}]}]} />

يتيح تسجيل ملفات البيانات الوصفية الخاصة بـ delta lake في جدول النظام.

<div id="delta_lake_reload_schema_for_consistency">
  ## delta\_lake\_reload\_schema\_for\_consistency
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": "0"},{"label": "إعداد جديد يحدد ما إذا كان DeltaLake يعيد تحميل المخطط قبل كل استعلام لضمان الاتساق."}]}]} />

إذا كان مُمكّنًا، فسيُعاد تحميل المخطط من البيانات الوصفية لـ DeltaLake قبل تنفيذ كل استعلام لضمان
الاتساق بين المخطط المستخدم أثناء تحليل الاستعلام والمخطط المستخدم أثناء التنفيذ.

<div id="delta_lake_snapshot_end_version">
  ## delta\_lake\_snapshot\_end\_version
</div>

<SettingsInfoBlock type="Int64" default_value="-1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "-1"},{"label": "إعداد جديد."}]}]} />

إصدار النهاية للقطة Delta Lake المطلوب قراءتها. تعني القيمة -1 قراءة أحدث إصدار (والقيمة 0 إصدار لقطة صالح).

<div id="delta_lake_snapshot_start_version">
  ## delta\_lake\_snapshot\_start\_version
</div>

<SettingsInfoBlock type="Int64" default_value="-1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "-1"},{"label": "إعداد جديد."}]}]} />

إصدار البداية للقطة Delta Lake المراد قراءتها. وتعني القيمة -1 قراءة أحدث إصدار (والقيمة 0 إصدار لقطة صالح).

<div id="delta_lake_snapshot_version">
  ## delta\_lake\_snapshot\_version
</div>

<SettingsInfoBlock type="Int64" default_value="-1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "-1"},{"label": "إعداد جديد"}]}]} />

إصدار لقطة delta lake المطلوب قراءتها. تعني القيمة -1 قراءة أحدث إصدار (والقيمة 0 هي إصدار لقطة صالح).

<div id="delta_lake_throw_on_engine_predicate_error">
  ## delta\_lake\_throw\_on\_engine\_predicate\_error
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "0"},{"label": "إعداد جديد"}]}]} />

يؤدي إلى إطلاق استثناء عند حدوث خطأ أثناء تحليل شرط المسح في delta-kernel.

<div id="describe_compact_output">
  ## describe\_compact\_output
</div>

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

إذا كانت القيمة true، فسيقتصر ناتج استعلام DESCRIBE على أسماء الأعمدة وأنواعها فقط

<div id="describe_include_subcolumns">
  ## describe\_include\_subcolumns
</div>

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

يتيح وصف الأعمدة الفرعية في استعلام [DESCRIBE](/ar/reference/statements/describe-table). على سبيل المثال، عناصر [Tuple](/ar/reference/data-types/tuple) أو الأعمدة الفرعية لأنواع البيانات [Map](/ar/reference/data-types/map#reading-subcolumns-of-map) و[Nullable](/ar/reference/data-types/nullable#finding-null) و[Array](/ar/reference/data-types/array#array-size).

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

* 0 — لا تُضمَّن الأعمدة الفرعية في استعلامات `DESCRIBE`.
* 1 — تُضمَّن الأعمدة الفرعية في استعلامات `DESCRIBE`.

**مثال**

راجع مثالًا على عبارة [DESCRIBE](/ar/reference/statements/describe-table).

<div id="describe_include_virtual_columns">
  ## describe\_include\_virtual\_columns
</div>

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

إذا كانت القيمة true، فستتضمّن نتيجة استعلام DESCRIBE الأعمدة الظاهرية للجدول

<div id="dialect">
  ## الصيغة
</div>

<SettingsInfoBlock type="Dialect" default_value="clickhouse" />

الصيغة التي ستُستخدم لتحليل الاستعلام

<div id="dictionary_use_async_executor">
  ## dictionary\_use\_async\_executor
</div>

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

شغّل مسار معالجة لقراءة مصدر القاموس باستخدام عدة خيوط تنفيذ. لا تدعمه إلا القواميس التي تستخدم مصدر CLICKHOUSE محليًا.

<div id="dictionary_validate_primary_key_type">
  ## dictionary\_validate\_primary\_key\_type
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.7"},{"label": "0"},{"label": "التحقق من نوع المفتاح الأساسي للقواميس. افتراضيًا، يُحوَّل نوع id في التخطيطات البسيطة ضمنيًا إلى UInt64."}]}]} />

التحقق من نوع المفتاح الأساسي للقواميس. افتراضيًا، يُحوَّل نوع id في التخطيطات البسيطة ضمنيًا إلى UInt64.

<div id="distinct_overflow_mode">
  ## distinct\_overflow\_mode
</div>

<SettingsInfoBlock type="OverflowMode" default_value="throw" />

يحدّد ما يحدث عند تجاوز كمية البيانات أحد الحدود.

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

* `throw`: طرح استثناء (الافتراضي).
* `break`: إيقاف تنفيذ الاستعلام وإرجاع النتيجة الجزئية، كما لو كانت
  البيانات المصدر قد نفدت.

<div id="distributed_aggregation_memory_efficient">
  ## distributed\_aggregation\_memory\_efficient
</div>

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

ما إذا كان وضع توفير الذاكرة في التجميع الموزّع مُمكّنًا.

<div id="distributed_background_insert_batch">
  ## distributed\_background\_insert\_batch
</div>

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

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

يُمكّن أو يعطّل إرسال البيانات المُدرجة على دفعات.

عند تمكين الإرسال على دفعات، يحاول محرك الجداول [Distributed](/ar/reference/engines/table-engines/special/distributed) إرسال عدة ملفات من البيانات المُدرجة في عملية واحدة بدلًا من إرسالها كلًّا على حدة. ويُحسّن الإرسال على دفعات أداء العنقود من خلال الاستفادة بشكل أفضل من موارد الخادم والشبكة.

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

* 1 — مُمكَّن.
* 0 — مُعطَّل.

<div id="distributed_background_insert_max_sleep_time_ms">
  ## distributed\_background\_insert\_max\_sleep\_time\_ms
</div>

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

<SettingsInfoBlock type="مللي ثانية" default_value="30000" />

أقصى فاصل زمني لإرسال البيانات بواسطة محرك الجدول [Distributed](/ar/reference/engines/table-engines/special/distributed). يحدّ من الزيادة الأُسّية للفاصل الزمني المضبوط في إعداد [distributed\_background\_insert\_sleep\_time\_ms](#distributed_background_insert_sleep_time_ms).

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

* عدد صحيح موجب من المللي ثانية.

<div id="distributed_background_insert_sleep_time_ms">
  ## distributed\_background\_insert\_sleep\_time\_ms
</div>

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

<SettingsInfoBlock type="Milliseconds" default_value="100" />

الفاصل الزمني الأساسي الذي يستخدمه محرك الجدول [Distributed](/ar/reference/engines/table-engines/special/distributed) لإرسال البيانات. ويزداد الفاصل الزمني الفعلي أُسِّيًا عند حدوث أخطاء.

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

* عدد صحيح موجب من المللي ثانية.

<div id="distributed_background_insert_split_batch_on_failure">
  ## distributed\_background\_insert\_split\_batch\_on\_failure
</div>

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

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

يُمكّن/يعطّل تقسيم الدُفعات عند حدوث فشل.

قد يفشل أحيانًا إرسال دفعة معيّنة إلى الشظية البعيدة بسبب مسار معالجة معقّد لاحقًا (مثل `MATERIALIZED VIEW` مع `GROUP BY`) نتيجة الخطأ `Memory limit exceeded` أو أخطاء مشابهة. في هذه الحالة، لن تفيد إعادة المحاولة (وقد يؤدي ذلك إلى تعطيل عمليات الإرسال الموزّعة لهذا الجدول)، لكن إرسال ملفات تلك الدفعة واحدًا تلو الآخر قد ينجح في تنفيذ INSERT.

لذلك، فإن ضبط هذا الإعداد على `1` سيعطّل التجميع لهذه الدُفعات (أي سيعطّل مؤقتًا `distributed_background_insert_batch` للدُفعات الفاشلة).

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

* 1 — مُمكّن.
* 0 — معطّل.

<Note>
  يؤثر هذا الإعداد أيضًا في الدُفعات التالفة (التي قد تظهر بسبب توقّف غير طبيعي لـ server (الجهاز)، مع عدم استخدام `fsync_after_insert`/`fsync_directories` لمحرك الجداول [Distributed](/ar/reference/engines/table-engines/special/distributed)).
</Note>

<Note>
  يجب ألا تعتمد على التقسيم التلقائي للدُفعات، لأن ذلك قد يضر بالأداء.
</Note>

<div id="distributed_background_insert_timeout">
  ## distributed\_background\_insert\_timeout
</div>

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

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

المهلة الزمنية لاستعلام الإدراج إلى Distributed. لا يُستخدم هذا الإعداد إلا عند تمكين `insert_distributed_sync`. وتعني القيمة صفر عدم وجود مهلة.

<div id="distributed_cache_alignment">
  ## distributed\_cache\_alignment
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.7"},{"label": "0"},{"label": "إعادة تسمية distributed_cache_read_alignment"}]}]} />

لا يكون لهذا الإعداد أي تأثير إلا في ClickHouse Cloud. هذا إعداد مخصّص لأغراض الاختبار، فلا تغيّره.

<div id="distributed_cache_bypass_connection_pool">
  ## distributed\_cache\_bypass\_connection\_pool
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.10"},{"label": "0"},{"label": "إعداد خاص بـ ClickHouse Cloud"}]}]} />

لا يكون له تأثير إلا في ClickHouse Cloud. يسمح بتجاوز مجمع اتصالات distributed cache

<div id="distributed_cache_connect_backoff_max_ms">
  ## distributed\_cache\_connect\_backoff\_max\_ms
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "50"},{"label": "إعداد جديد"}]}]} />

لا يكون له تأثير إلا في ClickHouse Cloud. الحد الأقصى لمدة backoff، بالمللي ثانية، عند إنشاء اتصال بـ distributed cache.

<div id="distributed_cache_connect_backoff_min_ms">
  ## distributed\_cache\_connect\_backoff\_min\_ms
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "0"},{"label": "إعداد جديد"}]}]} />

لا يكون له تأثير إلا في ClickHouse Cloud. الحد الأدنى لمدة التراجع بالمللي ثانية عند إنشاء اتصال distributed cache.

<div id="distributed_cache_connect_max_tries">
  ## distributed\_cache\_connect\_max\_tries
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "5"},{"label": "تم تغيير قيمة الإعداد"}]}, {"id": "row-2","items": [{"label": "25.1"},{"label": "20"},{"label": "في Cloud فقط"}]}, {"id": "row-3","items": [{"label": "24.10"},{"label": "20"},{"label": "إعداد خاص بـ ClickHouse Cloud"}]}]} />

لا يكون له تأثير إلا في ClickHouse Cloud. عدد محاولات الاتصال بـ distributed cache عند فشل الاتصال

<div id="distributed_cache_connect_timeout_ms">
  ## distributed\_cache\_connect\_timeout\_ms
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.10"},{"label": "50"},{"label": "إعداد جديد"}]}]} />

لا يكون له تأثير إلا في ClickHouse Cloud. مهلة الاتصال عند الاتصال بخادم distributed cache.

<div id="distributed_cache_credentials_refresh_period_seconds">
  ## distributed\_cache\_credentials\_refresh\_period\_seconds
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.6"},{"label": "5"},{"label": "إعداد خاص جديد"}]}]} />

لا يكون له تأثير إلا في ClickHouse Cloud. الفترة الزمنية لتحديث بيانات الاعتماد.

<div id="distributed_cache_data_packet_ack_window">
  ## distributed\_cache\_data\_packet\_ack\_window
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.10"},{"label": "5"},{"label": "إعداد خاص بـ ClickHouse Cloud"}]}]} />

لا يكون له تأثير إلا في ClickHouse Cloud. نافذة لإرسال ACK لتسلسل DataPacket ضمن طلب قراءة واحد لـ distributed cache

<div id="distributed_cache_discard_connection_if_unread_data">
  ## distributed\_cache\_discard\_connection\_if\_unread\_data
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.11"},{"label": "1"},{"label": "إعداد جديد"}]}, {"id": "row-2","items": [{"label": "24.10"},{"label": "1"},{"label": "إعداد جديد"}]}]} />

لا يكون له تأثير إلا في ClickHouse Cloud. تجاهل الاتصال إذا كانت هناك بيانات غير مقروءة.

<div id="distributed_cache_fetch_metrics_only_from_current_az">
  ## distributed\_cache\_fetch\_metrics\_only\_from\_current\_az
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.10"},{"label": "1"},{"label": "إعداد خاص بـ ClickHouse Cloud"}]}]} />

لا يكون له تأثير إلا في ClickHouse Cloud. يجلب المقاييس من منطقة التوافر الحالية فقط في system.distributed\_cache\_metrics و system.distributed\_cache\_events

<div id="distributed_cache_file_cache_name">
  ## distributed\_cache\_file\_cache\_name
</div>

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.1"},{"label": ""},{"label": "إعداد جديد."}]}]} />

لا يكون له تأثير إلا في ClickHouse Cloud. إعداد يُستخدم فقط في اختبارات CI: اسم ذاكرة التخزين المؤقت لنظام الملفات الذي سيُستخدم لـ distributed cache.

<div id="distributed_cache_log_mode">
  ## distributed\_cache\_log\_mode
</div>

<SettingsInfoBlock type="DistributedCacheLogMode" default_value="on_error" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.10"},{"label": "on_error"},{"label": "إعداد خاص بـ ClickHouse Cloud"}]}]} />

لا يكون لهذا الإعداد تأثير إلا في ClickHouse Cloud. وضع الكتابة في system.distributed\_cache\_log

<div id="distributed_cache_max_unacked_inflight_packets">
  ## distributed\_cache\_max\_unacked\_inflight\_packets
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.10"},{"label": "10"},{"label": "إعداد خاص بـ ClickHouse Cloud"}]}]} />

لا يكون له تأثير إلا في ClickHouse Cloud. الحد الأقصى لعدد الحزم غير المؤكَّد استلامها قيد النقل في طلب قراءة واحد لـ distributed cache

<div id="distributed_cache_min_bytes_for_seek">
  ## distributed\_cache\_min\_bytes\_for\_seek
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "0"},{"label": "إعداد خاص جديد."}]}]} />

لا يكون له تأثير إلا في ClickHouse Cloud. الحد الأدنى لعدد البايتات اللازمة لإجراء seek في distributed cache.

<div id="distributed_cache_pool_behaviour_on_limit">
  ## distributed\_cache\_pool\_behaviour\_on\_limit
</div>

<SettingsInfoBlock type="DistributedCachePoolBehaviourOnLimit" default_value="wait" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "wait"},{"label": "في Cloud فقط"}]}, {"id": "row-2","items": [{"label": "24.10"},{"label": "allocate_bypassing_pool"},{"label": "إعداد خاص بـ ClickHouse Cloud"}]}]} />

لا يكون له تأثير إلا في ClickHouse Cloud. يحدّد سلوك اتصال distributed cache عند بلوغ حدّ المجمّع

<div id="distributed_cache_prefer_bigger_buffer_size">
  ## distributed\_cache\_prefer\_bigger\_buffer\_size
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.10"},{"label": "0"},{"label": "إعداد جديد."}]}]} />

لا يكون له تأثير إلا في ClickHouse Cloud. وهو مماثل لـ filesystem\_cache\_prefer\_bigger\_buffer\_size، ولكن لـ distributed cache.

<div id="distributed_cache_read_only_from_current_az">
  ## distributed\_cache\_read\_only\_from\_current\_az
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "1"},{"label": "إعداد جديد"}]}]} />

لا يكون لهذا تأثير إلا في ClickHouse Cloud. يتيح القراءة فقط من منطقة التوافر الحالية. وإذا تم تعطيله، فستتم القراءة من جميع خوادم التخزين المؤقت في كل مناطق التوافر.

<div id="distributed_cache_read_request_max_tries">
  ## distributed\_cache\_read\_request\_max\_tries
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "10"},{"label": "تغيّرت قيمة الإعداد"}]}, {"id": "row-2","items": [{"label": "25.4"},{"label": "20"},{"label": "إعداد جديد"}]}]} />

لا يكون له تأثير إلا في ClickHouse Cloud. عدد محاولات تنفيذ distributed cache read request عند فشله

<div id="distributed_cache_receive_response_wait_milliseconds">
  ## distributed\_cache\_receive\_response\_wait\_milliseconds
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.10"},{"label": "60000"},{"label": "إعداد خاص بـ ClickHouse Cloud"}]}]} />

لا يكون له تأثير إلا في ClickHouse Cloud. مدة الانتظار، بالمللي ثانية، لتلقّي بيانات الطلب من distributed cache

<div id="distributed_cache_receive_timeout_milliseconds">
  ## distributed\_cache\_receive\_timeout\_milliseconds
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.10"},{"label": "10000"},{"label": "إعداد خاص بـ ClickHouse Cloud"}]}]} />

لا يكون له تأثير إلا في ClickHouse Cloud. مدة الانتظار بالمللي ثانية لتلقّي أي نوع من الاستجابة من distributed cache

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

<div id="distributed_cache_receive_timeout_ms">
  ## distributed\_cache\_receive\_timeout\_ms
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.10"},{"label": "3000"},{"label": "إعداد جديد"}]}]} />

لا يكون لهذا تأثير إلا في ClickHouse Cloud. هذه هي مهلة تلقّي البيانات من خادم distributed cache، بالمللي ثانية. وإذا لم يتم تلقّي أي بايتات خلال هذه المدة، فسيتم رفع استثناء.

<div id="distributed_cache_send_timeout_ms">
  ## distributed\_cache\_send\_timeout\_ms
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.10"},{"label": "3000"},{"label": "إعداد جديد"}]}]} />

لا يكون لهذا الإعداد تأثير إلا في ClickHouse Cloud. مهلة إرسال البيانات إلى خادم distributed cache، بالمللي ثانية. إذا احتاج العميل إلى إرسال بعض البيانات، لكنه لم يتمكن من إرسال أي بايتات خلال هذه المدة، يتم إطلاق استثناء.

<div id="distributed_cache_tcp_keep_alive_timeout_ms">
  ## distributed\_cache\_tcp\_keep\_alive\_timeout\_ms
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.10"},{"label": "2900"},{"label": "إعداد جديد"}]}]} />

لا يكون له تأثير إلا في ClickHouse Cloud. وهو الزمن، بالمللي ثانية، الذي يجب أن يبقى فيه الاتصال بخادم distributed cache في حالة خمول قبل أن يبدأ TCP بإرسال مجسات keepalive.

<div id="distributed_cache_throw_on_error">
  ## distributed\_cache\_throw\_on\_error
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.10"},{"label": "0"},{"label": "إعداد خاص بـ ClickHouse Cloud"}]}]} />

لا يكون لهذا الإعداد أي تأثير إلا في ClickHouse Cloud. أعِد إطلاق الاستثناء الذي يحدث أثناء الاتصال بـ distributed cache أو الاستثناء الوارد من distributed cache. وإلا فانتقل إلى تخطي distributed cache عند حدوث خطأ

<div id="distributed_cache_use_clients_cache_for_read">
  ## distributed\_cache\_use\_clients\_cache\_for\_read
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "1"},{"label": "إعداد جديد"}]}]} />

لا يكون له تأثير إلا في ClickHouse Cloud. استخدم ذاكرة التخزين المؤقت للعملاء لطلبات القراءة.

<div id="distributed_cache_use_clients_cache_for_write">
  ## distributed\_cache\_use\_clients\_cache\_for\_write
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "0"},{"label": "إعداد جديد"}]}]} />

لا يكون له تأثير إلا في ClickHouse Cloud. استخدم ذاكرة التخزين المؤقت للعملاء لطلبات الكتابة.

<div id="distributed_cache_wait_connection_from_pool_milliseconds">
  ## distributed\_cache\_wait\_connection\_from\_pool\_milliseconds
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.10"},{"label": "100"},{"label": "إعداد لـ ClickHouse Cloud"}]}]} />

لا يكون لهذا تأثير إلا في ClickHouse Cloud. مدة الانتظار بالمللي ثانية للحصول على اتصال من مجمع الاتصالات إذا كانت `distributed_cache_pool_behaviour_on_limit` مضبوطة على `wait`

<div id="distributed_cache_write_request_max_tries">
  ## distributed\_cache\_write\_request\_max\_tries
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "10"},{"label": "إعداد جديد"}]}]} />

يؤثر فقط في ClickHouse Cloud. عدد محاولات تنفيذ طلب كتابة إلى distributed cache عند الإخفاق

<div id="distributed_connections_pool_size">
  ## distributed\_connections\_pool\_size
</div>

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

الحد الأقصى لعدد الاتصالات المتزامنة مع الخوادم البعيدة للمعالجة الموزعة لجميع الاستعلامات على جدول Distributed واحد. نوصي بتعيين قيمة لا تقل عن عدد الخوادم في العنقود.

<div id="distributed_ddl_entry_format_version">
  ## distributed\_ddl\_entry\_format\_version
</div>

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

إصدار التوافق لاستعلامات DDL الموزّع ‏(ON CLUSTER) الموزعة

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

<div id="distributed_ddl_output_mode">
  ## distributed\_ddl\_output\_mode
</div>

<SettingsInfoBlock type="DistributedDDLOutputMode" default_value="throw" />

يضبط تنسيق نتيجة استعلام DDL الموزّع.

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

* `throw` — يعيد مجموعة النتائج مع حالة تنفيذ الاستعلام على جميع المضيفين التي اكتمل عليها الاستعلام. إذا فشل الاستعلام على بعض المضيفين، فستُعاد إثارة أول استثناء. وإذا لم يكتمل الاستعلام بعد على بعض المضيفين وتم تجاوز [distributed\_ddl\_task\_timeout](#distributed_ddl_task_timeout)، فسيَطرح الاستثناء `TIMEOUT_EXCEEDED`.
* `none` — مشابه لـ `throw`، لكن استعلام DDL الموزّع لا يعيد أي مجموعة نتائج.
* `null_status_on_timeout` — يعيد `NULL` كحالة تنفيذ في بعض صفوف مجموعة النتائج بدلًا من طرح `TIMEOUT_EXCEEDED` إذا لم يكتمل الاستعلام على المضيفين المعنيين.
* `never_throw` — لا يطرح `TIMEOUT_EXCEEDED` ولا يعيد طرح الاستثناءات إذا فشل الاستعلام على بعض المضيفين.
* `none_only_active` - مشابه لـ `none`، لكنه لا ينتظر النسخ المتماثلة غير النشطة لقاعدة البيانات `Replicated`. ملاحظة: مع هذا الوضع، يستحيل معرفة أن الاستعلام لم يُنفَّذ على بعض النسخ المتماثلة وسيُنفَّذ في الخلفية.
* `null_status_on_timeout_only_active` — مشابه لـ `null_status_on_timeout`، لكنه لا ينتظر النسخ المتماثلة غير النشطة لقاعدة البيانات `Replicated`
* `throw_only_active` — مشابه لـ `throw`، لكنه لا ينتظر النسخ المتماثلة غير النشطة لقاعدة البيانات `Replicated`

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

<div id="distributed_ddl_task_timeout">
  ## distributed\_ddl\_task\_timeout
</div>

<SettingsInfoBlock type="Int64" default_value="180" />

يحدّد مهلة استجابات استعلامات DDL الواردة من جميع المضيفين في المجموعة. إذا لم يُنفَّذ طلب DDL على جميع المضيفين، فستتضمن الاستجابة خطأ مهلة، وسيُنفَّذ الطلب في وضع غير متزامن. وتعني القيمة السالبة أن المهلة غير محدودة.

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

* عدد صحيح موجب.
* 0 — وضع غير متزامن.
* عدد صحيح سالب — مهلة غير محدودة.

<div id="distributed_foreground_insert">
  ## distributed\_foreground\_insert
</div>

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

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

يُمكّن أو يعطّل الإدراج المتزامن للبيانات في جدول [Distributed](/ar/reference/engines/table-engines/special/distributed).

بشكل افتراضي، عند إدراج البيانات في جدول `Distributed`، يرسل خادم ClickHouse البيانات إلى عُقد العنقود في وضع الخلفية. وعند ضبط `distributed_foreground_insert=1`، تُعالَج البيانات بشكل متزامن، ولا تنجح عملية `INSERT` إلا بعد حفظ جميع البيانات على جميع الشظايا (مع وجود نسخة متماثلة واحدة على الأقل لكل شظية إذا كانت قيمة `internal_replication` هي true).

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

* `0` — تُدرَج البيانات في وضع الخلفية.
* `1` — تُدرَج البيانات في الوضع المتزامن.

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

**انظر أيضًا**

* [محرك الجدول Distributed](/ar/reference/engines/table-engines/special/distributed)
* [إدارة الجداول الموزعة](/ar/reference/statements/system#managing-distributed-tables)

<div id="distributed_group_by_no_merge">
  ## distributed\_group\_by\_no\_merge
</div>

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

لا تدمج حالات التجميع من خوادم مختلفة أثناء المعالجة الموزعة للاستعلامات. يمكن استخدام هذا الإعداد عندما يكون من المؤكد أن المفاتيح تختلف بين الأجزاء المختلفة.

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

* `0` — معطّل (تتم المعالجة النهائية للاستعلام على العقدة البادئة).
* `1` - لا تدمج حالات التجميع من خوادم مختلفة أثناء المعالجة الموزعة للاستعلامات (تتم معالجة الاستعلام بالكامل على الجزء، وتقوم العقدة البادئة فقط بتمرير البيانات)، ويمكن استخدامه عندما يكون من المؤكد أن المفاتيح تختلف بين الأجزاء المختلفة.
* `2` - مثل `1`، ولكن يطبّق `ORDER BY` و`LIMIT` على العقدة البادئة (وهذا غير ممكن عندما تتم معالجة الاستعلام بالكامل على العقدة البعيدة، كما في `distributed_group_by_no_merge=1`) (ويمكن استخدامه مع الاستعلامات التي تتضمن `ORDER BY` و/أو `LIMIT`).

**مثال**

```sql theme={null}
SELECT *
FROM remote('127.0.0.{2,3}', system.one)
GROUP BY dummy
LIMIT 1
SETTINGS distributed_group_by_no_merge = 1
FORMAT PrettyCompactMonoBlock

┌─dummy─┐
│     0 │
│     0 │
└───────┘
```

```sql theme={null}
SELECT *
FROM remote('127.0.0.{2,3}', system.one)
GROUP BY dummy
LIMIT 1
SETTINGS distributed_group_by_no_merge = 2
FORMAT PrettyCompactMonoBlock

┌─dummy─┐
│     0 │
└───────┘
```

<div id="distributed_index_analysis">
  ## distributed\_index\_analysis
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.1"},{"label": "0"},{"label": "إعداد تجريبي جديد"}]}]} />

سيُوزَّع تحليل الفهرس الموزّع عبر النسخ المتماثلة.
وهو مفيد مع التخزين المشترك والكميات الضخمة من البيانات في العنقود.
يستخدم النسخ المتماثلة من `cluster_for_parallel_replicas`.

**انظر أيضًا**

* [distributed\_index\_analysis\_for\_non\_shared\_merge\_tree](#distributed_index_analysis_for_non_shared_merge_tree)
* [distributed\_index\_analysis\_min\_parts\_to\_activate](/ar/reference/settings/merge-tree-settings#distributed_index_analysis_min_parts_to_activate)
* [distributed\_index\_analysis\_min\_indexes\_bytes\_to\_activate](/ar/reference/settings/merge-tree-settings#distributed_index_analysis_min_indexes_bytes_to_activate)

<div id="distributed_index_analysis_for_non_shared_merge_tree">
  ## distributed\_index\_analysis\_for\_non\_shared\_merge\_tree
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.1"},{"label": "0"},{"label": "إعداد جديد"}]}]} />

فعّل تحليل الفهرس الموزّع حتى للمحركات غير SharedMergeTree (محرك سحابي فقط).

<div id="distributed_index_analysis_only_on_coordinator">
  ## distributed\_index\_analysis\_only\_on\_coordinator
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "0"},{"label": "إعداد جديد."}]}]} />

إذا كان ممكّنًا، فسيُجرى تحليل الفهرس الموزّع على المنسّق فقط.
يمنع هذا ظهور استعلامات متولّدة من نوع O(N^2) عندما يحتوي الشرط على استعلامات فرعية (مثل `IN (SELECT ...)`)،
لأنه لولا ذلك لكانت كل نسخة متماثلة تابعة تُفعّل تحليل الفهرس الموزّع الخاص بها بشكل مستقل،
لكنه يجعل تحليل الفهرس الموزّع أقل كفاءة إذا استُخدمت جداول كبيرة في الاستعلامات الفرعية.

<div id="distributed_insert_skip_read_only_replicas">
  ## distributed\_insert\_skip\_read\_only\_replicas
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "0"},{"label": "إذا كانت القيمة true، فسيتجاوز INSERT إلى Distributed النسخ المتماثلة المخصّصة للقراءة فقط"}]}]} />

يُمكّن تجاوز النسخ المتماثلة المخصّصة للقراءة فقط في طلبات INSERT إلى Distributed.

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

* 0 — سيعمل INSERT كالمعتاد، وإذا وُجِّه إلى نسخة متماثلة للقراءة فقط فسيفشل
* 1 — ستتجاوز العقدة المبادِرة النسخ المتماثلة المخصّصة للقراءة فقط قبل إرسال البيانات إلى الشظايا.

<div id="distributed_plan_default_reader_bucket_count">
  ## distributed\_plan\_default\_reader\_bucket\_count
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "8"},{"label": "إعداد تجريبي جديد."}]}]} />

العدد الافتراضي للمهام اللازمة للقراءة المتوازية في الاستعلام الموزّع. تُوزَّع المهام بين النسخ المتماثلة.

<div id="distributed_plan_default_shuffle_join_bucket_count">
  ## distributed\_plan\_default\_shuffle\_join\_bucket\_count
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "8"},{"label": "إعداد تجريبي جديد."}]}]} />

العدد الافتراضي لـ buckets في distributed shuffle-hash-join.

<div id="distributed_plan_execute_locally">
  ## distributed\_plan\_execute\_locally
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "0"},{"label": "إعداد تجريبي جديد."}]}]} />

نفّذ جميع مهام خطة الاستعلام الموزع محليًا. يفيد ذلك في الاختبار واستكشاف الأخطاء وإصلاحها.

<div id="distributed_plan_force_exchange_kind">
  ## distributed\_plan\_force\_exchange\_kind
</div>

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": ""},{"label": "إعداد تجريبي جديد."}]}]} />

يفرض النوع المحدد من عوامل Exchange بين مراحل الاستعلام الموزّع.

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

* '' - لا تفرض أي نوع من عوامل Exchange، واترك المُحسِّن يختار،
* 'Persisted' - استخدم ملفات مؤقتة في تخزين الكائنات،
* 'Streaming' - بثّ بيانات Exchange عبر الشبكة.

<div id="distributed_plan_force_shuffle_aggregation">
  ## distributed\_plan\_force\_shuffle\_aggregation
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.7"},{"label": "0"},{"label": "إعداد تجريبي جديد"}]}]} />

استخدم استراتيجية Shuffle للتجميع بدلًا من PartialAggregation + Merge في خطة الاستعلام الموزّع.

<div id="distributed_plan_max_rows_to_broadcast">
  ## distributed\_plan\_max\_rows\_to\_broadcast
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.7"},{"label": "20000"},{"label": "إعداد تجريبي جديد."}]}]} />

الحد الأقصى لعدد الصفوف الذي يُستخدم عنده broadcast join بدلًا من shuffle join في خطة الاستعلام الموزعة.

<div id="distributed_plan_optimize_exchanges">
  ## distributed\_plan\_optimize\_exchanges
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "1"},{"label": "إعداد تجريبي جديد."}]}]} />

يزيل عمليات التبادل غير الضرورية في خطة الاستعلام الموزعة. عطِّله لأغراض تصحيح الأخطاء.

<div id="distributed_plan_prefer_replicas_over_workers">
  ## distributed\_plan\_prefer\_replicas\_over\_workers
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "0"},{"label": "إعداد جديد لتسلسل الخطة الموزعة للنسخ المتماثلة"}]}]} />

قم بتسلسل خطة الاستعلام الموزّع لتنفيذها على النسخ المتماثلة.

<div id="distributed_product_mode">
  ## distributed\_product\_mode
</div>

<SettingsInfoBlock type="DistributedProductMode" default_value="deny" />

يغيّر سلوك [الاستعلامات الفرعية الموزعة](/ar/reference/statements/in).

يطبّق ClickHouse هذا الإعداد عندما يحتوي الاستعلام على حاصل ضرب للجداول الموزعة، أي عندما يتضمن الاستعلام على جدول موزع استعلامًا فرعيًا غير GLOBAL على جدول موزع.

القيود:

* يُطبَّق فقط على الاستعلامات الفرعية من نوع IN وJOIN.
* فقط إذا كان قسم FROM يستخدم جدولًا موزعًا يحتوي على أكثر من شظية واحدة.
* إذا كان الاستعلام الفرعي يتناول جدولًا موزعًا يحتوي على أكثر من شظية واحدة.
* لا يُستخدم مع دالة [remote](/ar/reference/functions/table-functions/remote) الجدولية.

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

* `deny` — القيمة الافتراضية. يمنع استخدام هذه الأنواع من الاستعلامات الفرعية (ويُرجع الاستثناء "Double-distributed in/JOIN subqueries is denied").
* `local` — يستبدل قاعدة البيانات والجدول في الاستعلام الفرعي بالنظيرين المحليين على خادم الوجهة (شظية)، مع الإبقاء على `IN`/`JOIN` العاديَّين.
* `global` — يستبدل استعلام `IN`/`JOIN` بـ `GLOBAL IN`/`GLOBAL JOIN`.
* `allow` — يسمح باستخدام هذه الأنواع من الاستعلامات الفرعية.

<div id="distributed_push_down_limit">
  ## distributed\_push\_down\_limit
</div>

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

يُمكّن أو يعطّل تطبيق [LIMIT](#limit) على كل شظية على حدة.

يساعد ذلك على تجنّب ما يلي:

* إرسال صفوف إضافية عبر الشبكة؛
* معالجة الصفوف التي تتجاوز الحد على العقدة المُبادِئة.

اعتبارًا من الإصدار 21.9، لم يعد بالإمكان الحصول على نتائج غير دقيقة، لأن `distributed_push_down_limit` لا يغيّر تنفيذ الاستعلام إلا إذا تحقق شرط واحد على الأقل من الشروط التالية:

* [distributed\_group\_by\_no\_merge](#distributed_group_by_no_merge) > 0.
* **لا يحتوي** الاستعلام على `GROUP BY`/`DISTINCT`/`LIMIT BY`، لكنه يحتوي على `ORDER BY`/`LIMIT`.
* **يحتوي** الاستعلام على `GROUP BY`/`DISTINCT`/`LIMIT BY` مع `ORDER BY`/`LIMIT`، و:
  * يكون [optimize\_skip\_unused\_shards](#optimize_skip_unused_shards) مُمكّنًا.
  * يكون [optimize\_distributed\_group\_by\_sharding\_key](#optimize_distributed_group_by_sharding_key) مُمكّنًا.

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

* 0 — معطّل.
* 1 — مُمكّن.

انظر أيضًا:

* [distributed\_group\_by\_no\_merge](#distributed_group_by_no_merge)
* [optimize\_skip\_unused\_shards](#optimize_skip_unused_shards)
* [optimize\_distributed\_group\_by\_sharding\_key](#optimize_distributed_group_by_sharding_key)

<div id="distributed_replica_error_cap">
  ## distributed\_replica\_error\_cap
</div>

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

* النوع: عدد صحيح غير موقّع
* القيمة الافتراضية: 1000

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

انظر أيضًا:

* [load\_balancing](#load_balancing-round_robin)
* [محرك الجدول Distributed](/ar/reference/engines/table-engines/special/distributed)
* [distributed\_replica\_error\_half\_life](#distributed_replica_error_half_life)
* [distributed\_replica\_max\_ignored\_errors](#distributed_replica_max_ignored_errors)

<div id="distributed_replica_error_half_life">
  ## distributed\_replica\_error\_half\_life
</div>

<SettingsInfoBlock type="Seconds" default_value="60" />

* النوع: ثوانٍ
* القيمة الافتراضية: 60 ثانية

يتحكم هذا الإعداد في مدى سرعة تصفير الأخطاء في الجداول الموزعة. إذا كانت إحدى النسخ المتماثلة غير متاحة لبعض الوقت، وتراكمت لها 5 أخطاء، وتم تعيين `distributed_replica_error_half_life` إلى ثانية واحدة، فستُعتبر هذه النسخة المتماثلة سليمة بعد 3 ثوانٍ من وقوع آخر خطأ.

انظر أيضًا:

* [load\_balancing](#load_balancing-round_robin)
* [محرك الجدول Distributed](/ar/reference/engines/table-engines/special/distributed)
* [distributed\_replica\_error\_cap](#distributed_replica_error_cap)
* [distributed\_replica\_max\_ignored\_errors](#distributed_replica_max_ignored_errors)

<div id="distributed_replica_max_ignored_errors">
  ## distributed\_replica\_max\_ignored\_errors
</div>

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

* النوع: عدد صحيح غير موقّع
* القيمة الافتراضية: 0

عدد الأخطاء التي سيجري تجاهلها عند اختيار النسخ المتماثلة (وفقًا لخوارزمية `load_balancing`).

انظر أيضًا:

* [load\_balancing](#load_balancing-round_robin)
* [محرك الجدول Distributed](/ar/reference/engines/table-engines/special/distributed)
* [distributed\_replica\_error\_cap](#distributed_replica_error_cap)
* [distributed\_replica\_error\_half\_life](#distributed_replica_error_half_life)

<div id="do_not_merge_across_partitions_select_final">
  ## do\_not\_merge\_across\_partitions\_select\_final
</div>

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

حسّن استعلامات FINAL بتجنّب عمليات الدمج عبر أقسام مختلفة.

عند تمكين هذا الإعداد، لن تُدمج الأجزاء من أقسام مختلفة معًا أثناء استعلامات SELECT FINAL. بدلًا من ذلك، سيقتصر الدمج على كل قسم على حدة. ويمكن أن يحسّن ذلك أداء الاستعلامات بشكل ملحوظ عند العمل مع الجداول المُقسّمة.

<div id="dynamic_disk_allow_from_env">
  ## dynamic\_disk\_allow\_from\_env
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "0"},{"label": "إعداد جديد يسمح بعمليات الاستبدال `from_env` في تكوين القرص الديناميكي (الدالة `disk()`). وهو معطّل افتراضيًا لأسباب أمنية."}]}]} />

يسمح باستخدام عمليات الاستبدال `from_env` في تكوين القرص الديناميكي (أي في وسائط الدالة `disk()`).
وهو معطّل افتراضيًا لمنع المستخدمين من قراءة متغيرات بيئة اعتباطية عند تعريف تخزين الجدول."

<div id="dynamic_disk_allow_from_zk">
  ## dynamic\_disk\_allow\_from\_zk
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "0"},{"label": "إعداد جديد للسماح باستخدام استبدالات `from_zk` في تكوين القرص الديناميكي (في وسيطات الدالة `disk()`). معطّل افتراضيًا."}]}]} />

السماح باستخدام استبدالات `from_zk` في تكوين القرص الديناميكي (أي في وسيطات الدالة `disk()`).
معطّل افتراضيًا.

<div id="dynamic_disk_allow_include">
  ## dynamic\_disk\_allow\_include
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "0"},{"label": "إعداد جديد يتيح استخدام `include` في تكوين القرص الديناميكي (الدالة `disk()`). وهو معطّل افتراضيًا."}]}]} />

يتيح استخدام `include` في تكوين القرص الديناميكي (أي في وسيطات الدالة `disk()`).
وهو معطّل افتراضيًا.

<div id="dynamic_throw_on_type_mismatch">
  ## dynamic\_throw\_on\_type\_mismatch
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "1"},{"label": "إعداد جديد للتحكم في سلوك عدم تطابق الأنواع في تنفيذ Dynamic الافتراضي"}]}]} />

عند تطبيق دالة على عمود [Dynamic](/ar/reference/data-types/dynamic) باستخدام التنفيذ الافتراضي،
يحدّد هذا الإعداد ما يحدث للصفوف التي يكون نوعها الفعلي غير متوافق مع الدالة:

* `true` (الافتراضي) — طرح استثناء.
* `false` — إرجاع `NULL` لهذه الصفوف بدلًا من ذلك.

<div id="empty_result_for_aggregation_by_constant_keys_on_empty_set">
  ## empty\_result\_for\_aggregation\_by\_constant\_keys\_on\_empty\_set
</div>

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

إرجاع نتيجة فارغة عند إجراء التجميع حسب مفاتيح ثابتة على مجموعة فارغة.

<div id="empty_result_for_aggregation_by_empty_set">
  ## empty\_result\_for\_aggregation\_by\_empty\_set
</div>

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

إرجاع نتيجة فارغة عند تنفيذ التجميع بدون مفاتيح على مجموعة فارغة.

<div id="enable_adaptive_memory_spill_scheduler">
  ## enable\_adaptive\_memory\_spill\_scheduler
</div>

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

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

يحفّز هذا المعالج على تفريغ البيانات إلى التخزين الخارجي بشكل تكيّفي. ‏grace join‏ مدعوم حاليًا.

<div id="enable_add_distinct_to_in_subqueries">
  ## enable\_add\_distinct\_to\_in\_subqueries
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "0"},{"label": "إعداد جديد لتقليل حجم الجداول المؤقتة المنقولة في الاستعلامات الفرعية الموزعة `IN`."}]}]} />

يُفعِّل `DISTINCT` في الاستعلامات الفرعية `IN`. هذا إعداد ينطوي على مفاضلة: إذ يمكن أن يؤدي تفعيله إلى تقليل حجم الجداول المؤقتة المنقولة في الاستعلامات الفرعية الموزعة `IN` بشكل كبير، وتسريع نقل البيانات بين الشظايا بشكل ملحوظ، وذلك من خلال ضمان إرسال القيم الفريدة فقط.
ومع ذلك، فإن تفعيل هذا الإعداد يضيف عبئًا إضافيًا على عمليات الدمج في كل عقدة، إذ يجب تنفيذ إزالة التكرار (`DISTINCT`). استخدم هذا الإعداد عندما يكون نقل البيانات عبر الشبكة هو عنق الزجاجة ويكون العبء الإضافي لعمليات الدمج مقبولًا.

<div id="enable_automatic_decision_for_merging_across_partitions_for_final">
  ## enable\_automatic\_decision\_for\_merging\_across\_partitions\_for\_final
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "1"},{"label": "إعداد جديد"}]}]} />

إذا كان هذا الإعداد مفعّلًا، فسيعمل ClickHouse تلقائيًا على تمكين هذا التحسين عندما يكون تعبير مفتاح التقسيم حتميًا، وتكون جميع الأعمدة المستخدمة في تعبير مفتاح التقسيم مضمنة في المفتاح الأساسي.
ويضمن هذا الاستنتاج التلقائي أن الصفوف التي تحمل قيم المفتاح الأساسي نفسها ستنتمي دائمًا إلى التقسيم نفسه، مما يجعل تجنّب عمليات الدمج عبر التقسيمات آمنًا.

<div id="enable_blob_storage_log">
  ## enable\_blob\_storage\_log
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.6"},{"label": "1"},{"label": "يكتب معلومات عن عمليات blob storage في جدول system.blob_storage_log"}]}]} />

يكتب معلومات عن عمليات blob storage في جدول system.blob\_storage\_log

<div id="enable_blob_storage_log_for_read_operations">
  ## enable\_blob\_storage\_log\_for\_read\_operations
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "0"},{"label": "إعداد جديد لتسجيل عمليات قراءة blob storage في system.blob_storage_log"}]}]} />

اكتب معلومات حول عمليات قراءة blob storage في جدول system.blob\_storage\_log.
يتطلب أيضًا تفعيل `enable_blob_storage_log`.

<div id="enable_early_constant_folding">
  ## enable\_early\_constant\_folding
</div>

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

تمكين تحسين الاستعلام، بحيث نحلّل نتائج الدوال والاستعلامات الفرعية ونعيد كتابة الاستعلام إذا كانت تحتوي على ثوابت

<div id="enable_extended_results_for_datetime_functions">
  ## enable\_extended\_results\_for\_datetime\_functions
</div>

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

يتيح أو يعطّل إرجاع نتائج من النوع `Date32` بنطاق ممتد (مقارنةً بالنوع `Date`)
أو من النوع `DateTime64` بنطاق ممتد (مقارنةً بالنوع `DateTime`).

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

* `0` — تُرجع الدوال `Date` أو `DateTime` لجميع أنواع الوسائط.
* `1` — تُرجع الدوال `Date32` أو `DateTime64` عند استخدام وسائط من النوع `Date32` أو `DateTime64`، وتُرجع `Date` أو `DateTime` بخلاف ذلك.

يوضح الجدول أدناه سلوك هذا الإعداد في دوال التاريخ والوقت المختلفة.

| Function                  | `enable_extended_results_for_datetime_functions = 0`                                      | `enable_extended_results_for_datetime_functions = 1`                                                                                           |
| ------------------------- | ----------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| `toStartOfYear`           | يعيد `Date` أو `DateTime`                                                                 | يُرجع `Date`/`DateTime` عند إدخال `Date`/`DateTime`<br />يُرجع `Date32`/`DateTime64` عند إدخال `Date32`/`DateTime64`                           |
| `toStartOfISOYear`        | تُرجِع `Date` أو `DateTime`                                                               | يعيد `Date`/`DateTime` عند إدخال `Date`/`DateTime`<br />يعيد `Date32`/`DateTime64` عند إدخال `Date32`/`DateTime64`                             |
| `toStartOfQuarter`        | تُرجِع `Date` أو `DateTime`                                                               | تعيد `Date`/`DateTime` عند إدخال `Date`/`DateTime`<br />تعيد `Date32`/`DateTime64` عند إدخال `Date32`/`DateTime64`                             |
| `toStartOfMonth`          | يُرجع `Date` أو `DateTime`                                                                | تعيد `Date`/`DateTime` عند إدخال `Date`/`DateTime`<br />تعيد `Date32`/`DateTime64` عند إدخال `Date32`/`DateTime64`                             |
| `toStartOfWeek`           | تُرجِع `Date` أو `DateTime`                                                               | يعيد `Date`/`DateTime` عند تمرير قيمة من النوع `Date`/`DateTime`<br />يعيد `Date32`/`DateTime64` عند تمرير قيمة من النوع `Date32`/`DateTime64` |
| `toLastDayOfWeek`         | يُرجع `Date` أو `DateTime`                                                                | تُرجِع `Date`/`DateTime` عند إدخال `Date`/`DateTime`<br />تُرجِع `Date32`/`DateTime64` عند إدخال `Date32`/`DateTime64`                         |
| `toLastDayOfMonth`        | تُرجِع `Date` أو `DateTime`                                                               | يعيد `Date`/`DateTime` عند إدخال `Date`/`DateTime`<br />يعيد `Date32`/`DateTime64` عند إدخال `Date32`/`DateTime64`                             |
| `toMonday`                | يُرجِع `Date` أو `DateTime`                                                               | تعيد `Date`/`DateTime` عند إدخال `Date`/`DateTime`<br />تعيد `Date32`/`DateTime64` عند إدخال `Date32`/`DateTime64`                             |
| `toStartOfDay`            | يعيد `DateTime`<br />*ملاحظة: تكون النتائج غير صحيحة للقيم خارج النطاق 1970-2149*         | يعيد `DateTime` عند إدخال `Date`/`DateTime`<br />ويعيد `DateTime64` عند إدخال `Date32`/`DateTime64`                                            |
| `toStartOfHour`           | يعيد `DateTime`<br />*ملاحظة: تكون النتائج غير صحيحة للقيم خارج نطاق 1970-2149.*          | يعيد `DateTime` عند إدخال `Date`/`DateTime`<br />ويعيد `DateTime64` عند إدخال `Date32`/`DateTime64`                                            |
| `toStartOfFifteenMinutes` | يعيد `DateTime`<br />*ملاحظة: تكون النتائج غير صحيحة للقيم خارج النطاق 1970-2149*         | تعيد `DateTime` عند إدخال `Date`/`DateTime`<br />وتعيد `DateTime64` عند إدخال `Date32`/`DateTime64`                                            |
| `toStartOfTenMinutes`     | يُرجع `DateTime`<br />*ملاحظة: نتائج غير صحيحة للقيم الواقعة خارج النطاق 1970-2149*       | يُرجع `DateTime` عند إدخال `Date`/`DateTime`<br />ويُرجع `DateTime64` عند إدخال `Date32`/`DateTime64`                                          |
| `toStartOfFiveMinutes`    | يعيد `DateTime`<br />*ملاحظة: تكون النتائج غير صحيحة للقيم خارج النطاق 1970-2149*         | تُرجِع `DateTime` لمدخلات `Date`/`DateTime`<br />وتُرجِع `DateTime64` لمدخلات `Date32`/`DateTime64`                                            |
| `toStartOfMinute`         | يعيد `DateTime`<br />*ملاحظة: قد تكون النتائج غير صحيحة للقيم خارج النطاق 1970-2149*      | يعيد `DateTime` عند إدخال `Date`/`DateTime`<br />ويعيد `DateTime64` عند إدخال `Date32`/`DateTime64`                                            |
| `timeSlot`                | يعيد `DateTime`<br />*ملاحظة: تكون النتائج غير صحيحة للقيم الواقعة خارج النطاق 1970-2149* | يعيد `DateTime` عند إدخال `Date`/`DateTime`<br />يعيد `DateTime64` عند إدخال `Date32`/`DateTime64`                                             |

<div id="enable_filesystem_cache">
  ## enable\_filesystem\_cache
</div>

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

استخدم التخزين المؤقت لنظام الملفات البعيد. لا يؤدي هذا الإعداد إلى تشغيل/إيقاف التخزين المؤقت للأقراص (إذ يجب تنفيذ ذلك عبر إعدادات القرص)، لكنه يتيح تجاوز التخزين المؤقت لبعض الاستعلامات عند الحاجة.

<div id="enable_filesystem_cache_log">
  ## enable\_filesystem\_cache\_log
</div>

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

يتيح تسجيل سجل التخزين المؤقت لنظام الملفات لكل استعلام

<div id="enable_filesystem_cache_on_write_operations">
  ## enable\_filesystem\_cache\_on\_write\_operations
</div>

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

يُفعِّل أو يعطِّل ذاكرة التخزين المؤقت `write-through`. إذا ضُبطت القيمة على `false`، فسيتم تعطيل ذاكرة التخزين المؤقت `write-through` لعمليات الكتابة. وإذا ضُبطت على `true`، فسيتم تفعيل ذاكرة التخزين المؤقت `write-through` طالما أن `cache_on_write_operations` مفعّل في قسم disk configuration الخاص بـ cache disk ضمن config الخادم.
راجع ["استخدام ذاكرة التخزين المؤقت المحلية"](/ar/concepts/features/configuration/server-config/storing-data#using-local-cache) لمزيد من التفاصيل.

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

<div id="enable_filesystem_read_prefetches_log">
  ## enable\_filesystem\_read\_prefetches\_log
</div>

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

سجّل في `system.filesystem`‏ `prefetch_log` أثناء تنفيذ الاستعلام. يجب استخدامه للاختبار أو debugging فقط، ولا يُنصح بتفعيله افتراضيًا

<div id="enable_full_text_index">
  ## enable\_full\_text\_index
</div>

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

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "1"},{"label": "أصبح الفهرس النصي الآن GA"}]}, {"id": "row-2","items": [{"label": "25.12"},{"label": "0"},{"label": "نُقل الفهرس النصي إلى Beta."}]}]} />

إذا ضُبط هذا الإعداد على `true`، فسيُسمح باستخدام الفهرس النصي.

<div id="enable_global_with_statement">
  ## enable\_global\_with\_statement
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "21.2"},{"label": "1"},{"label": "تمرير عبارات WITH إلى استعلامات UNION وجميع الاستعلامات الفرعية افتراضيًا"}]}]} />

تمرير عبارات WITH إلى استعلامات UNION وجميع الاستعلامات الفرعية

<div id="enable_hdfs_pread">
  ## enable\_hdfs\_pread
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.4"},{"label": "1"},{"label": "إعداد جديد."}]}]} />

يُفعِّل أو يُعطِّل `pread` لملفات HDFS. ويُستخدم `hdfsPread` افتراضيًا. وإذا تم تعطيله، فسيُستخدم `hdfsRead` و`hdfsSeek` لقراءة ملفات HDFS.

<div id="enable_http_compression">
  ## enable\_http\_compression
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.10"},{"label": "1"},{"label": "يُفترض أن يكون مفيدًا بشكل عام"}]}]} />

يُفعِّل ضغط البيانات في الاستجابة لطلب HTTP أو يعطِّله.

لمزيد من المعلومات، اطّلع على [وصف واجهة HTTP](/ar/concepts/features/interfaces/http).

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

* 0 — معطّل.
* 1 — مفعّل.

<div id="enable_identifier_resolve_cache">
  ## enable\_identifier\_resolve\_cache
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.6"},{"label": "1"},{"label": "إعداد جديد للتحكم في ذاكرة التخزين المؤقت لحلّ المعرّفات في محلل الاستعلام"}]}]} />

يُفعّل ذاكرة التخزين المؤقت لحلّ المعرّفات في محلل الاستعلام. تُعيد ذاكرة التخزين المؤقت استخدام عُقد الأسماء المستعارة التي جرى حلّها لتجنّب تضخّم AST عند الإشارة إلى الاسم المستعار نفسه عدة مرات. اضبطه على false لتعطيل التخزين المؤقت إذا كان يُشتبه في عدم صحة النتائج.

<div id="enable_job_stack_trace">
  ## enable\_job\_stack\_trace
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.6"},{"label": "0"},{"label": "تم تعطيل هذا الإعداد افتراضيًا لتجنّب العبء الإضافي على الأداء."}]}, {"id": "row-2","items": [{"label": "24.11"},{"label": "0"},{"label": "يُمكّن جمع تتبّعات المكدس من جدولة المهمة. وهو مُعطّل افتراضيًا لتجنّب العبء الإضافي على الأداء."}]}]} />

يعرض تتبّع المكدس لمنشئ المهمة عندما تؤدي المهمة إلى استثناء. وهو مُعطّل افتراضيًا لتجنّب العبء الإضافي على الأداء.

<div id="enable_join_fixed_hash_table_conversion">
  ## enable\_join\_fixed\_hash\_table\_conversion
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "1"},{"label": "إعداد جديد لتمكين تحويل جدول التجزئة إلى مصفوفة مسطحة لعمليات JOIN عندما يكون المفتاح عددًا صحيحًا واحدًا ضمن نطاق قيم صغير."}]}]} />

تمكين تحويل جدول التجزئة إلى مصفوفة مسطحة لعمليات JOIN عندما يكون المفتاح عددًا صحيحًا واحدًا ضمن نطاق قيم صغير.

<div id="enable_join_runtime_filters">
  ## enable\_join\_runtime\_filters
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "1"},{"label": "تم تفعيل هذا التحسين"}]}, {"id": "row-2","items": [{"label": "25.10"},{"label": "0"},{"label": "إعداد جديد"}]}]} />

تصفية الجانب الأيسر استنادًا إلى مجموعة مفاتيح JOIN المُجمَّعة من الجانب الأيمن أثناء التشغيل.

<div id="enable_join_transitive_predicates">
  ## enable\_join\_transitive\_predicates
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.6"},{"label": "1"},{"label": "تفعيل enable_join_transitive_predicates افتراضيًا"}]}, {"id": "row-2","items": [{"label": "26.4"},{"label": "0"},{"label": "إعداد جديد لاستنتاج شروط الربط الانتقالية بالمساواة لتحسين ترتيب الربط."}]}]} />

يستنتج شروط الربط الانتقالية بالمساواة من شروط الربط الحالية.
على سبيل المثال، إذا كان لدينا `A.x = B.x` و `B.x = C.x`، فستُضاف عبارة شرطية مُولَّدة `A.x = C.x`
لكي يتمكن مُحسِّن ترتيب الربط من النظر في خطط مباشرة من النوع (A JOIN C).

<div id="enable_lazy_columns_replication">
  ## enable\_lazy\_columns\_replication
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.11"},{"label": "1"},{"label": "تمكين النسخ المتماثل الكسول للأعمدة في JOIN و ARRAY JOIN افتراضيًا"}]}, {"id": "row-2","items": [{"label": "25.10"},{"label": "0"},{"label": "إضافة إعداد لتمكين النسخ المتماثل الكسول للأعمدة في JOIN و ARRAY JOIN"}]}]} />

يُمكّن النسخ المتماثل الكسول للأعمدة في JOIN و ARRAY JOIN، مما يساعد على تجنّب النسخ غير الضروري للصفوف نفسها عدة مرات في الذاكرة.

<div id="enable_lightweight_delete">
  ## enable\_lightweight\_delete
</div>

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

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

تمكين طفرات DELETE خفيفة الوزن لجداول MergeTree.

<div id="enable_lightweight_update">
  ## enable\_lightweight\_update
</div>

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

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "1"},{"label": "نُقلت التحديثات الخفيفة إلى مرحلة بيتا. وأُضيف اسم بديل للإعداد 'allow_experimental_lightweight_update'."}]}]} />

يسمح باستخدام التحديثات الخفيفة.

<div id="enable_materialized_cte">
  ## enable\_materialized\_cte
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": "0"},{"label": "إعداد جديد"}]}]} />

يُفعّل تعبيرات الجدول المشتركة المُجسَّدة، ويُفضَّل على enable\_global\_with\_statement

<div id="enable_memory_bound_merging_of_aggregation_results">
  ## enable\_memory\_bound\_merging\_of\_aggregation\_results
</div>

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

تفعيل استراتيجية الدمج المقيّدة بالذاكرة لعمليات التجميع.

<div id="enable_multiple_prewhere_read_steps">
  ## enable\_multiple\_prewhere\_read\_steps
</div>

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

انقل المزيد من الشروط من WHERE إلى PREWHERE، ونفّذ عمليات القراءة من القرص والتصفية على عدة مراحل إذا كانت هناك شروط متعددة مدمجة باستخدام AND

<div id="enable_named_columns_in_function_tuple">
  ## enable\_named\_columns\_in\_function\_tuple
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.7"},{"label": "0"},{"label": "إنشاء tuples مسماة في الدالة tuple() عندما تكون جميع الأسماء فريدة ويمكن التعامل معها كمعرّفات غير مقتبسة."}]}, {"id": "row-2","items": [{"label": "24.10"},{"label": "0"},{"label": "مُعطّل بانتظار تحسينات على سهولة الاستخدام"}]}]} />

إنشاء tuples مسماة في الدالة tuple() عندما تكون جميع الأسماء فريدة ويمكن التعامل معها كمعرّفات غير مقتبسة.

<div id="enable_optimize_predicate_expression">
  ## enable\_optimize\_predicate\_expression
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "18.12.17"},{"label": "1"},{"label": "تحسين تمرير شروط التصفية إلى الاستعلامات الفرعية افتراضيًا"}]}]} />

يُفعّل تمرير شروط التصفية في استعلامات `SELECT`.

قد يؤدي تمرير شروط التصفية إلى تقليل حركة مرور الشبكة بشكل كبير في الاستعلامات الموزعة.

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

* 0 — معطّل.
* 1 — مفعّل.

الاستخدام

انظر إلى الاستعلامات التالية:

1. `SELECT count() FROM test_table WHERE date = '2018-10-10'`
2. `SELECT count() FROM (SELECT * FROM test_table) WHERE date = '2018-10-10'`

إذا كانت القيمة `enable_optimize_predicate_expression = 1`، فسيكون زمن تنفيذ هذين الاستعلامين متساويًا لأن ClickHouse يطبّق `WHERE` على الاستعلام الفرعي أثناء معالجته.

إذا كانت القيمة `enable_optimize_predicate_expression = 0`، فسيكون زمن تنفيذ الاستعلام الثاني أطول بكثير لأن عبارة `WHERE` تُطبَّق على جميع البيانات بعد اكتمال الاستعلام الفرعي.

<div id="enable_optimize_predicate_expression_to_final_subquery">
  ## enable\_optimize\_predicate\_expression\_to\_final\_subquery
</div>

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

يسمح بدفع شرط التصفية إلى الاستعلام الفرعي FINAL.

<div id="enable_order_by_all">
  ## enable\_order\_by\_all
</div>

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

يُمكّن أو يعطّل الترتيب باستخدام صيغة `ORDER BY ALL`، راجع [ORDER BY](/ar/reference/statements/select/order-by).

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

* 0 — تعطيل ORDER BY ALL.
* 1 — تمكين ORDER BY ALL.

**مثال**

الاستعلام:

```sql theme={null}
CREATE TABLE TAB(C1 Int, C2 Int, ALL Int) ENGINE=Memory();

INSERT INTO TAB VALUES (10, 20, 30), (20, 20, 10), (30, 10, 20);

SELECT * FROM TAB ORDER BY ALL; -- returns an error that ALL is ambiguous

SELECT * FROM TAB ORDER BY ALL SETTINGS enable_order_by_all = 0;
```

النتيجة:

```text theme={null}
┌─C1─┬─C2─┬─ALL─┐
│ 20 │ 20 │  10 │
│ 30 │ 10 │  20 │
│ 10 │ 20 │  30 │
└────┴────┴─────┘
```

<div id="enable_parallel_blocks_marshalling">
  ## enable\_parallel\_blocks\_marshalling
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.6"},{"label": "صحيح"},{"label": "إعداد جديد"}]}]} />

يؤثر هذا فقط في الاستعلامات الموزعة. إذا كان مُمكّنًا، فستُسلسَل الكتل/يُلغى تسلسلها وتُضغط/يُفك ضغطها على خيوط خط المعالجة (أي بدرجة توازٍ أعلى من الافتراضي) قبل إرسالها إلى العقدة البادئة/بعده.

<div id="enable_parsing_to_custom_serialization">
  ## enable\_parsing\_to\_custom\_serialization
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.10"},{"label": "1"},{"label": "إعداد جديد"}]}]} />

إذا كانت القيمة true، يمكن تحليل البيانات مباشرةً إلى الأعمدة ذات التسلسل المخصص (مثل Sparse)، استنادًا إلى تلميحات التسلسل المستمدة من الجدول.

<div id="enable_positional_arguments">
  ## enable\_positional\_arguments
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "22.7"},{"label": "1"},{"label": "تفعيل ميزة الوسائط الموضعية افتراضيًا"}]}]} />

يُمكّن أو يعطّل دعم الوسائط الموضعية في عبارات [GROUP BY](/ar/reference/statements/select/group-by) و[LIMIT BY](/ar/reference/statements/select/limit-by) و[ORDER BY](/ar/reference/statements/select/order-by).

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

* 0 — لا يتم دعم الوسائط الموضعية.
* 1 — يتم دعم الوسائط الموضعية: يمكن استخدام أرقام الأعمدة بدلًا من أسماء الأعمدة.

**مثال**

الاستعلام:

```sql theme={null}
CREATE TABLE positional_arguments(one Int, two Int, three Int) ENGINE=Memory();

INSERT INTO positional_arguments VALUES (10, 20, 30), (20, 20, 10), (30, 10, 20);

SELECT * FROM positional_arguments ORDER BY 2,3;
```

النتيجة:

```text theme={null}
┌─one─┬─two─┬─three─┐
│  30 │  10 │   20  │
│  20 │  20 │   10  │
│  10 │  20 │   30  │
└─────┴─────┴───────┘
```

<div id="enable_positional_arguments_for_projections">
  ## enable\_positional\_arguments\_for\_projections
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "0"},{"label": "إعداد جديد للتحكم في الوسائط الموضعية في الإسقاطات."}]}, {"id": "row-2","items": [{"label": "25.11"},{"label": "0"},{"label": "إعداد جديد للتحكم في الوسائط الموضعية في الإسقاطات."}]}, {"id": "row-3","items": [{"label": "25.10"},{"label": "0"},{"label": "إعداد جديد للتحكم في الوسائط الموضعية في الإسقاطات."}]}]} />

يُفعِّل هذا الإعداد دعم الوسائط الموضعية في تعريفات PROJECTION أو يعطّله. راجع أيضًا الإعداد [enable\_positional\_arguments](#enable_positional_arguments).

<Note>
  هذا إعداد متقدم، ولا ينبغي تغييره إذا كنت لا تزال في بداية استخدام ClickHouse.
</Note>

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

* 0 — الوسائط الموضعية غير مدعومة.
* 1 — الوسائط الموضعية مدعومة: يمكن استخدام أرقام الأعمدة بدلًا من أسماء الأعمدة.

<div id="enable_producing_buckets_out_of_order_in_aggregation">
  ## enable\_producing\_buckets\_out\_of\_order\_in\_aggregation
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.9"},{"label": "1"},{"label": "إعداد جديد"}]}]} />

يسمح لآلية التجميع الموفّرة للذاكرة (راجع `distributed_aggregation_memory_efficient`) بإخراج المجموعات دون التقيّد بالترتيب.
قد يؤدي ذلك إلى تحسين الأداء عندما تكون أحجام مجموعات التجميع غير متوازنة، إذ يتيح لنسخة متماثلة إرسال المجموعات ذات المعرّفات الأعلى إلى العقدة المُبادِرة بينما لا تزال تعالج بعض المجموعات الكبيرة ذات المعرّفات الأقل.
أما الجانب السلبي فهو احتمال زيادة استخدام الذاكرة.

<div id="enable_reads_from_query_cache">
  ## enable\_reads\_from\_query\_cache
</div>

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

إذا كان هذا الإعداد مفعّلًا، فستُسترجع نتائج استعلامات `SELECT` من [ذاكرة التخزين المؤقت للاستعلامات](/ar/concepts/features/performance/caches/query-cache).

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

* 0 - معطّل
* 1 - مفعّل

<div id="enable_s3_requests_logging">
  ## enable\_s3\_requests\_logging
</div>

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

فعّل تسجيلًا مفصلًا جدًا لطلبات S3. يناسب ذلك أغراض Debug فقط.

<div id="enable_scalar_subquery_optimization">
  ## enable\_scalar\_subquery\_optimization
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "19.18"},{"label": "1"},{"label": "يمنع الاستعلامات الفرعية العددية من إجراء إلغاء تسلسل/تسلسل للقيم العددية الكبيرة، وقد يتجنب تشغيل الاستعلام الفرعي نفسه أكثر من مرة"}]}]} />

إذا ضُبطت هذه القيمة على true، فسيمنع الاستعلامات الفرعية العددية من إجراء إلغاء تسلسل/تسلسل للقيم العددية الكبيرة، وقد يتجنب تشغيل الاستعلام الفرعي نفسه أكثر من مرة.

<div id="enable_scopes_for_with_statement">
  ## enable\_scopes\_for\_with\_statement
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.7"},{"label": "1"},{"label": "إعداد جديد للتوافق مع الإصدارات السابقة مع المحلل القديم."}]}, {"id": "row-2","items": [{"label": "25.6"},{"label": "1"},{"label": "إعداد جديد للتوافق مع الإصدارات السابقة مع المحلل القديم."}]}, {"id": "row-3","items": [{"label": "25.5"},{"label": "1"},{"label": "إعداد جديد للتوافق مع الإصدارات السابقة مع المحلل القديم."}]}, {"id": "row-4","items": [{"label": "25.4"},{"label": "1"},{"label": "إعداد جديد للتوافق مع الإصدارات السابقة مع المحلل القديم."}]}]} />

إذا كان هذا الإعداد معطّلًا، فستُعامل التعريفات في عبارات WITH الأب كما لو أنها مُعلنة في النطاق الحالي نفسه.

لاحظ أن هذا إعداد توافق للمحلل يتيح تشغيل بعض الاستعلامات غير الصالحة التي كان المحلل القديم قادرًا على تنفيذها.

<div id="enable_sharding_aggregator">
  ## enable\_sharding\_aggregator
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.6"},{"label": "0"},{"label": "إعداد جديد لتمكين تحسين `GROUP BY` المجزأ الذي يوزّع الصفوف على الخيوط باستخدام hash لمفتاح التجميع، بحيث يجمّع كل خيط مجموعة فرعية مستقلة من المفاتيح من دون مرحلة دمج؛ ويكون ذلك فعّالًا للمفاتيح ذات الكاردينالية العالية مع البيانات الموزعة بالتساوي."}]}]} />

يمكّن تحسين `GROUP BY` المجزأ الذي يوزّع الصفوف على الخيوط باستخدام hash لمفتاح التجميع، بحيث يجمّع كل خيط مجموعة فرعية مستقلة من المفاتيح من دون مرحلة دمج.

يكون ذلك فعّالًا للمفاتيح ذات الكاردينالية العالية مع البيانات الموزعة بالتساوي، لكنه قد يتأثر سلبًا عند وجود توزيعات شديدة الانحراف للمفاتيح أو استعلامات تتضمن عددًا قليلًا جدًا من المفاتيح المميزة.

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

* 0 — تحسين التجميع المجزأ معطّل.
* 1 — تحسين التجميع المجزأ مفعّل.

<div id="enable_shared_storage_snapshot_in_query">
  ## enable\_shared\_storage\_snapshot\_in\_query
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.6"},{"label": "0"},{"label": "إعداد جديد لمشاركة لقطة StorageSnapshot في الاستعلام"}]}, {"id": "row-2","items": [{"label": "25.12"},{"label": "1"},{"label": "تمكين مشاركة لقطة StorageSnapshot في الاستعلام افتراضيًا"}]}]} />

إذا كان هذا الإعداد مُمكّنًا، فستشارك جميع الاستعلامات الفرعية ضمن استعلام واحد نفس الـ StorageSnapshot لكل جدول.
يضمن ذلك عرضًا متسقًا للبيانات عبر الاستعلام بأكمله، حتى إذا تم الوصول إلى الجدول نفسه عدة مرات.

وهذا مطلوب للاستعلامات التي تكون فيها الاتساقية الداخلية لأجزاء البيانات مهمة. مثال:

```sql theme={null}
SELECT
    count()
FROM events
WHERE (_part, _part_offset) IN (
    SELECT _part, _part_offset
    FROM events
    WHERE user_id = 42
)
```

من دون هذا الإعداد، قد تعمل الاستعلامات الخارجية والداخلية على لقطات مختلفة للبيانات، مما يؤدي إلى نتائج غير صحيحة.

<Note>
  يؤدي تمكين هذا الإعداد إلى تعطيل التحسين الذي يزيل أجزاء البيانات غير الضرورية من اللقطات بعد اكتمال مرحلة التخطيط.
  ونتيجةً لذلك، قد تحتفظ الاستعلامات طويلة التشغيل بأجزاء قديمة طوال مدتها، مما يؤخر تنظيف الأجزاء ويزيد الضغط على التخزين.

  ينطبق هذا الإعداد حاليًا فقط على الجداول التابعة لعائلة MergeTree.
</Note>

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

* 0 - معطّل
* 1 - مُمكّن

<div id="enable_sharing_sets_for_mutations">
  ## enable\_sharing\_sets\_for\_mutations
</div>

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

السماح بمشاركة كائنات Set المُنشأة للاستعلامات الفرعية IN بين المهام المختلفة ضمن عملية التعديل نفسها. يقلل ذلك من استهلاك الذاكرة والـCPU

<div id="enable_software_prefetch_in_aggregation">
  ## enable\_software\_prefetch\_in\_aggregation
</div>

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

تمكين استخدام الجلب المسبق البرمجي في التجميع

<div id="enable_software_prefetch_in_join">
  ## enable\_software\_prefetch\_in\_join
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "1"},{"label": "تمكين استخدام الجلب المسبق البرمجي في مرحلة الفحص في hash join."}]}]} />

تمكين استخدام الجلب المسبق البرمجي في مرحلة الفحص في hash join لإخفاء زمن الوصول إلى الذاكرة في جداول hash الكبيرة.

<div id="enable_streaming_queries">
  ## enable\_streaming\_queries
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.6"},{"label": "0"},{"label": "إعداد جديد"}]}]} />

يسمح بالاستعلامات المستمرة `SELECT ... FROM t STREAM [CURSOR '{...}']`.
عند إيقافه، يُرفض أي تعبير جدول يستخدم المعدِّل `STREAM`
في مرحلة بناء الخطة. هذا هو الإعداد العام الذي يتحكم في ميزة
الاستعلامات المتدفقة؛ وقد تُقيَّد إمكانات إضافية
بإعدادات خاصة بها.

<div id="enable_time_time64_type">
  ## enable\_time\_time64\_type
</div>

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

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.6"},{"label": "0"},{"label": "إعدادات جديدة. يتيح استخدام نوعَي البيانات التجريبيين الجديدين Time وTime64."}]}, {"id": "row-2","items": [{"label": "25.12"},{"label": "1"},{"label": "تفعيل النوعين Time وTime64 افتراضيًا"}]}]} />

يسمح بإنشاء نوعَي البيانات [Time](/ar/reference/data-types/time) و[Time64](/ar/reference/data-types/time64).

<div id="enable_unaligned_array_join">
  ## enable\_unaligned\_array\_join
</div>

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

يسمح باستخدام ARRAY JOIN مع عدة مصفوفات بأحجام مختلفة. عند تمكين هذا الإعداد، سيُعاد ضبط أحجام المصفوفات لتتوافق مع أطولها.

<div id="enable_url_encoding">
  ## enable\_url\_encoding
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "0"},{"label": "تم تغيير القيمة الافتراضية الحالية لهذا الإعداد"}]}]} />

يسمح بتمكين/تعطيل ترميز وفك ترميز المسار في `uri` في جداول محرك [URL](/ar/reference/engines/table-engines/special/url).

يكون معطّلًا افتراضيًا.

<div id="enable_vertical_final">
  ## enable\_vertical\_final
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.6"},{"label": "1"},{"label": "إعادة تمكين vertical final افتراضيًا بعد إصلاح الخلل"}]}, {"id": "row-2","items": [{"label": "24.1"},{"label": "1"},{"label": "استخدام vertical final افتراضيًا"}]}]} />

إذا كان مُمكّنًا، فأزل الصفوف المكررة أثناء FINAL من خلال وسم الصفوف بأنها محذوفة ثم تصفيتها لاحقًا بدلًا من دمجها

<div id="enable_writes_to_query_cache">
  ## enable\_writes\_to\_query\_cache
</div>

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

إذا كان هذا الإعداد مفعّلًا، فستُخزَّن نتائج استعلامات `SELECT` في [ذاكرة التخزين المؤقت للاستعلامات](/ar/concepts/features/performance/caches/query-cache).

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

* 0 - معطّل
* 1 - مفعّل

<div id="enforce_strict_identifier_format">
  ## enforce\_strict\_identifier\_format
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.10"},{"label": "0"},{"label": "إعداد جديد."}]}]} />

عند التمكين، لا يُسمح إلا بالمُعرّفات التي تحتوي على أحرف وأرقام وشرطات سفلية.

<div id="engine_file_allow_create_multiple_files">
  ## engine\_file\_allow\_create\_multiple\_files
</div>

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

يُمكّن أو يعطّل إنشاء ملف جديد مع كل عملية insert في جداول محرك File إذا كان format يتضمن suffix (`JSON`، `ORC`، `Parquet`، إلخ). عند التمكين، يُنشأ ملف جديد مع كل عملية insert باسم يتبع هذا pattern:

`data.Parquet` -> `data.1.Parquet` -> `data.2.Parquet`، وهكذا.

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

* 0 — تقوم query ‏`INSERT` بإلحاق data جديدة بنهاية الملف.
* 1 — تقوم query ‏`INSERT` بإنشاء ملف جديد.

<div id="engine_file_empty_if_not_exists">
  ## engine\_file\_empty\_if\_not\_exists
</div>

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

يسمح باختيار البيانات من جدول بالمحرك File حتى في حال عدم وجود ملف.

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

* 0 — `SELECT` يرفع استثناءً.
* 1 — `SELECT` يعيد نتيجة فارغة.

<div id="engine_file_skip_empty_files">
  ## engine\_file\_skip\_empty\_files
</div>

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

يُفعّل أو يُعطّل تخطي الملفات الفارغة في جداول محرك [File](/ar/reference/engines/table-engines/special/file).

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

* 0 — يُطلق `SELECT` استثناءً إذا كان الملف الفارغ غير متوافق مع التنسيق المطلوب.
* 1 — يعيد `SELECT` نتيجة فارغة عند وجود ملف فارغ.

<div id="engine_file_truncate_on_insert">
  ## engine\_file\_truncate\_on\_insert
</div>

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

يُفعّل أو يعطّل تنفيذ truncate قبل insert في جداول محرك [File](/ar/reference/engines/table-engines/special/file).

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

* 0 — يُلحق استعلام `INSERT` البيانات الجديدة بنهاية الملف.
* 1 — يستبدل استعلام `INSERT` المحتوى الحالي للملف بالبيانات الجديدة.

<div id="engine_url_skip_empty_files">
  ## engine\_url\_skip\_empty\_files
</div>

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

يتيح تفعيل أو تعطيل تخطي الملفات الفارغة في جداول محرك [URL](/ar/reference/engines/table-engines/special/url).

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

* 0 — يُطلق `SELECT` استثناءً إذا كان الملف الفارغ غير متوافق مع التنسيق المطلوب.
* 1 — يعيد `SELECT` نتيجة فارغة للملف الفارغ.

<div id="exact_rows_before_limit">
  ## exact\_rows\_before\_limit
</div>

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

عند تمكين هذا الإعداد، سيوفّر ClickHouse قيمة دقيقة لإحصائية rows\_before\_limit\_at\_least، ولكن مقابل الاضطرار إلى قراءة البيانات قبل تطبيق الحد بالكامل

<div id="except_default_mode">
  ## except\_default\_mode
</div>

<SettingsInfoBlock type="SetOperationMode" default_value="ALL" />

يحدّد الوضع الافتراضي في استعلام EXCEPT. القيم الممكنة: سلسلة فارغة، و'ALL'، و'DISTINCT'. إذا كانت فارغة، فسيؤدي الاستعلام من دون وضع إلى إطلاق استثناء.

<div id="exclude_materialize_skip_indexes_on_insert">
  ## exclude\_materialize\_skip\_indexes\_on\_insert
</div>

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.10"},{"label": ""},{"label": "إعداد جديد."}]}]} />

يستبعد فهارس التخطي المحددة من الإنشاء والتخزين أثناء عمليات INSERT. وستظل فهارس التخطي المستبعَدة تُنشأ وتُخزَّن [أثناء عمليات الدمج](/ar/reference/settings/merge-tree-settings#materialize_skip_indexes_on_merge) أو عبر استعلام
[MATERIALIZE INDEX](/ar/reference/statements/alter/skipping-index#materialize-index) صريح.

لا يكون لهذا أي تأثير إذا كانت [materialize\_skip\_indexes\_on\_insert](#materialize_skip_indexes_on_insert) تساوي false.

مثال:

```sql theme={null}
CREATE TABLE tab
(
    a UInt64,
    b UInt64,
    INDEX idx_a a TYPE minmax,
    INDEX idx_b b TYPE set(3)
)
ENGINE = MergeTree ORDER BY tuple();

SET exclude_materialize_skip_indexes_on_insert='idx_a'; -- idx_a will be not be updated upon insert
--SET exclude_materialize_skip_indexes_on_insert='idx_a, idx_b'; -- neither index would be updated on insert

INSERT INTO tab SELECT number, number / 50 FROM numbers(100); -- only idx_b is updated

-- since it is a session setting it can be set on a per-query level
INSERT INTO tab SELECT number, number / 50 FROM numbers(100, 100) SETTINGS exclude_materialize_skip_indexes_on_insert='idx_b';

ALTER TABLE tab MATERIALIZE INDEX idx_a; -- this query can be used to explicitly materialize the index

SET exclude_materialize_skip_indexes_on_insert = DEFAULT; -- reset setting to default
```

<div id="execute_exists_as_scalar_subquery">
  ## execute\_exists\_as\_scalar\_subquery
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "1"},{"label": "إعداد جديد"}]}]} />

نفِّذ الاستعلامات الفرعية `EXISTS` غير المرتبطة كاستعلامات فرعية قيمية. وكما في الاستعلامات الفرعية القيمية، تُستخدَم ذاكرة التخزين المؤقت ويُطبَّق طيّ الثوابت على النتيجة.

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

<div id="external_storage_connect_timeout_sec">
  ## external\_storage\_connect\_timeout\_sec
</div>

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

مهلة الاتصال بالثواني. وهو مدعوم حاليًا لـ MySQL فقط

<div id="external_storage_max_read_bytes">
  ## external\_storage\_max\_read\_bytes
</div>

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

يحدّد الحد الأقصى لعدد البايتات عندما يتعيّن على جدول يستخدم محركًا خارجيًا تفريغ بيانات السجل التاريخي. وهو مدعوم حاليًا فقط لمحرك جدول MySQL ومحرك قاعدة البيانات والقاموس. إذا كانت القيمة تساوي 0، فسيتم تعطيل هذا الإعداد

<div id="external_storage_max_read_rows">
  ## external\_storage\_max\_read\_rows
</div>

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

يحدِّد الحد الأقصى لعدد الصفوف عندما يقوم جدول ذو محرك خارجي بتفريغ بيانات السجل التاريخي. وهو مدعوم حاليًا فقط لمحرك جدول MySQL ومحرك قاعدة البيانات والقاموس. إذا كانت القيمة تساوي 0، فسيتم تعطيل هذا الإعداد

<div id="external_storage_rw_timeout_sec">
  ## external\_storage\_rw\_timeout\_sec
</div>

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

مهلة القراءة/الكتابة بالثواني. وهي مدعومة حاليًا فقط في MySQL

<div id="external_table_functions_use_nulls">
  ## external\_table\_functions\_use\_nulls
</div>

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

يحدّد كيفية استخدام الدوال الجدولية [mysql](/ar/reference/functions/table-functions/mysql) و[postgresql](/ar/reference/functions/table-functions/postgresql) و[odbc](/ar/reference/functions/table-functions/odbc) للأعمدة Nullable.

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

* 0 — تستخدم الدالة الجدولية الأعمدة Nullable بشكل صريح.
* 1 — تستخدم الدالة الجدولية الأعمدة Nullable بشكل ضمني.

**الاستخدام**

إذا ضُبط هذا الإعداد على `0`، فلن تُنشئ الدالة الجدولية أعمدة Nullable، وستُدرِج القيم الافتراضية بدلًا من NULL. وينطبق ذلك أيضًا على قيم NULL داخل المصفوفات.

<div id="external_table_strict_query">
  ## external\_table\_strict\_query
</div>

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

إذا ضُبط على true، يُحظر تحويل التعبير إلى عامل تصفية محلي في الاستعلامات على الجداول الخارجية.

<div id="extract_key_value_pairs_max_pairs_per_row">
  ## extract\_key\_value\_pairs\_max\_pairs\_per\_row
</div>

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

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.2"},{"label": "0"},{"label": "الحد الأقصى لعدد الأزواج التي يمكن أن تُنتجها الدالة `extractKeyValuePairs`. يُستخدم كإجراء احترازي لتجنّب استهلاك قدر كبير جدًا من الذاكرة."}]}]} />

الحد الأقصى لعدد الأزواج التي يمكن أن تُنتجها الدالة `extractKeyValuePairs`. يُستخدم كإجراء احترازي لتجنّب استهلاك قدر كبير جدًا من الذاكرة.

<div id="extremes">
  ## extremes
</div>

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

ما إذا كان سيتم احتساب القيم المتطرفة (القيم الدنيا والعليا في أعمدة نتيجة استعلام). يقبل 0 أو 1. والقيمة الافتراضية هي 0 (معطّل).
لمزيد من المعلومات، راجع قسم "القيم المتطرفة".

<div id="fallback_to_stale_replicas_for_distributed_queries">
  ## fallback\_to\_stale\_replicas\_for\_distributed\_queries
</div>

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

يفرض تنفيذ الاستعلام على نسخة متماثلة قديمة إذا لم تكن البيانات المحدَّثة متاحة. راجع [النسخ المتماثل](/ar/reference/engines/table-engines/mergetree-family/replication).

يختار ClickHouse النسخة المتماثلة القديمة الأكثر ملاءمة من بين النسخ المتماثلة القديمة للجدول.

يُستخدم عند تنفيذ `SELECT` من جدول موزّع يشير إلى جداول متماثلة.

القيمة الافتراضية: 1 (مُمكّن).

<div id="file_like_engine_default_partition_strategy">
  ## file\_like\_engine\_default\_partition\_strategy
</div>

<SettingsInfoBlock type="FileLikeEngineDefaultPartitionStrategy" default_value="hive" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.6"},{"label": "hive"},{"label": "تغيير استراتيجية التقسيم الافتراضية لمحركات الجداول الشبيهة بالملفات (S3 وAzureBlobStorage وغيرها) من `wildcard` إلى `hive` عند عدم تحديد `partition_strategy`."}]}]} />

استراتيجية التقسيم الافتراضية للمحركات الشبيهة بالملفات.

<div id="filesystem_cache_allow_background_download">
  ## filesystem\_cache\_allow\_background\_download
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.11"},{"label": "1"},{"label": "إعداد جديد للتحكم في التنزيلات في الخلفية في ذاكرة التخزين المؤقت لنظام الملفات لكل استعلام."}]}]} />

السماح لذاكرة التخزين المؤقت لنظام الملفات بوضع تنزيلات الخلفية في قائمة الانتظار للبيانات المقروءة من التخزين البعيد. عطّل هذا الخيار لإبقاء التنزيلات في المقدمة للاستعلام/الجلسة الحالية.

<div id="filesystem_cache_boundary_alignment">
  ## filesystem\_cache\_boundary\_alignment
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.11"},{"label": "0"},{"label": "إعداد جديد"}]}]} />

محاذاة حدود ذاكرة التخزين المؤقت لنظام الملفات. لا يُطبَّق هذا الإعداد إلا على القراءات غير المرتبطة بالقرص (على سبيل المثال، لذاكرة التخزين المؤقت الخاصة بمحركات الجداول البعيدة / دوال الجداول، ولكن ليس على إعدادات التخزين الخاصة بجداول MergeTree). وتعني القيمة 0 عدم تطبيق أي محاذاة.

<div id="filesystem_cache_enable_background_download_during_fetch">
  ## filesystem\_cache\_enable\_background\_download\_during\_fetch
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.11"},{"label": "1"},{"label": "إعداد جديد"}]}]} />

ليس له تأثير إلا في ClickHouse Cloud. مدة الانتظار لقفل ذاكرة التخزين المؤقت من أجل حجز مساحة في ذاكرة التخزين المؤقت لنظام الملفات

<div id="filesystem_cache_enable_background_download_for_metadata_files_in_packed_storage">
  ## filesystem\_cache\_enable\_background\_download\_for\_metadata\_files\_in\_packed\_storage
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.11"},{"label": "1"},{"label": "إعداد جديد"}]}]} />

لا يكون لهذا الإعداد تأثير إلا في ClickHouse Cloud. مدة الانتظار للحصول على قفل ذاكرة التخزين المؤقت لحجز مساحة في ذاكرة التخزين المؤقت لنظام الملفات

<div id="filesystem_cache_max_download_size">
  ## filesystem\_cache\_max\_download\_size
</div>

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

الحد الأقصى لحجم ذاكرة التخزين المؤقت لنظام الملفات البعيد الذي يمكن لاستعلام واحد تنزيله

<div id="filesystem_cache_name">
  ## filesystem\_cache\_name
</div>

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.10"},{"label": ""},{"label": "اسم ذاكرة التخزين المؤقت لنظام الملفات المستخدمة مع محركات الجداول عديمة الحالة أو بحيرات البيانات"}]}]} />

اسم ذاكرة التخزين المؤقت لنظام الملفات المستخدمة مع محركات الجداول عديمة الحالة أو بحيرات البيانات

<div id="filesystem_cache_prefer_bigger_buffer_size">
  ## filesystem\_cache\_prefer\_bigger\_buffer\_size
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.11"},{"label": "1"},{"label": "إعداد جديد"}]}]} />

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

<div id="filesystem_cache_reserve_space_wait_lock_timeout_milliseconds">
  ## filesystem\_cache\_reserve\_space\_wait\_lock\_timeout\_milliseconds
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "1000"},{"label": "مدة الانتظار للحصول على قفل ذاكرة التخزين المؤقت لحجز مساحة في ذاكرة التخزين المؤقت لنظام الملفات"}]}]} />

مدة الانتظار للحصول على قفل ذاكرة التخزين المؤقت لحجز مساحة في ذاكرة التخزين المؤقت لنظام الملفات

<div id="filesystem_cache_segments_batch_size">
  ## filesystem\_cache\_segments\_batch\_size
</div>

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

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

<div id="filesystem_cache_skip_download_if_exceeds_per_query_cache_write_limit">
  ## filesystem\_cache\_skip\_download\_if\_exceeds\_per\_query\_cache\_write\_limit
</div>

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

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.11"},{"label": "1"},{"label": "إعادة تسمية للإعداد skip_download_if_exceeds_query_cache_limit"}]}]} />

تخطّي التنزيل من نظام الملفات البعيد إذا تجاوز حجم ذاكرة التخزين المؤقت للاستعلامات

<div id="filesystem_prefetch_max_memory_usage">
  ## filesystem\_prefetch\_max\_memory\_usage
</div>

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

الحد الأقصى لاستهلاك الذاكرة لعمليات الجلب المسبق.

القيمة الافتراضية في Cloud: 10% من إجمالي الذاكرة.

<div id="filesystem_prefetch_step_bytes">
  ## filesystem\_prefetch\_step\_bytes
</div>

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

قيمة خطوة الجلب المسبق بالبايت. تشير القيمة صفر إلى `auto` — أي سيُستنتج تلقائيًا حجم خطوة الجلب المسبق الأمثل تقريبًا، لكنه قد لا يكون الأفضل تمامًا. قد تختلف القيمة الفعلية بسبب الإعداد filesystem\_prefetch\_min\_bytes\_for\_single\_read\_task

<div id="filesystem_prefetch_step_marks">
  ## filesystem\_prefetch\_step\_marks
</div>

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

خطوة الجلب المسبق بوحدة العلامات. تعني القيمة صفر `auto`، أي سيُحدَّد تلقائيًا حجم خطوة الجلب المسبق الأنسب تقريبًا، لكنه قد لا يكون الأفضل بنسبة 100%. وقد تختلف القيمة الفعلية بسبب الإعداد filesystem\_prefetch\_min\_bytes\_for\_single\_read\_task

<div id="filesystem_prefetches_limit">
  ## filesystem\_prefetches\_limit
</div>

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

الحد الأقصى لعدد عمليات الجلب المسبق. تعني القيمة صفر عدم وجود حد أقصى. ويُوصى باستخدام الإعداد `filesystem_prefetches_max_memory_usage` بدلاً من ذلك إذا كنت تريد تقييد عدد عمليات الجلب المسبق

<div id="final">
  ## final
</div>

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

يطبّق تلقائيًا المُعدِّل [FINAL](/ar/reference/statements/select/from#final-modifier) على جميع الجداول في الاستعلام التي يمكن تطبيق [FINAL](/ar/reference/statements/select/from#final-modifier) عليها، بما في ذلك الجداول المستخدمة في عمليات join، والجداول في الاستعلامات الفرعية،
والجداول الموزعة.

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

* 0 - معطّل
* 1 - مُمكّن

مثال:

```sql theme={null}
CREATE TABLE test
(
    key Int64,
    some String
)
ENGINE = ReplacingMergeTree
ORDER BY key;

INSERT INTO test FORMAT Values (1, 'first');
INSERT INTO test FORMAT Values (1, 'second');

SELECT * FROM test;
┌─key─┬─some───┐
│   1 │ second │
└─────┴────────┘
┌─key─┬─some──┐
│   1 │ first │
└─────┴───────┘

SELECT * FROM test SETTINGS final = 1;
┌─key─┬─some───┐
│   1 │ second │
└─────┴────────┘

SET final = 1;
SELECT * FROM test;
┌─key─┬─some───┐
│   1 │ second │
└─────┴────────┘
```

<div id="finalize_projection_parts_synchronously">
  ## finalize\_projection\_parts\_synchronously
</div>

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

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

عند التمكين، يتم إتمام أجزاء الإسقاط بشكل متزامن أثناء INSERT، ما يقلل ذروة استخدام الذاكرة مقابل خفض توازي الرفع إلى S3. بشكل افتراضي، يظل تدفق الإخراج لكل إسقاط نشطًا إلى أن يكتمل إتمام الجزء بالكامل (بما في ذلك جميع الإسقاطات)، ما يتيح تداخل عمليات الرفع إلى S3، لكنه يزيد ذروة استخدام الذاكرة بما يتناسب مع عدد الإسقاطات. لا يؤثر هذا الإعداد إلا في مسار INSERT؛ أما merge وmutation فيُتمّان الإسقاطات بشكل متزامن بالفعل.

<div id="flatten_nested">
  ## flatten\_nested
</div>

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

يضبط تنسيق البيانات لأعمدة [Nested](/ar/reference/data-types/nested-data-structures/index).

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

* 1 — يُسطَّح عمود Nested إلى مصفوفات منفصلة.
* 0 — يبقى عمود Nested كمصفوفة واحدة من Tuple.

**الاستخدام**

إذا ضُبط هذا الإعداد على `0`، يمكن استخدام أي مستوى من التداخل.

**أمثلة**

الاستعلام:

```sql theme={null}
SET flatten_nested = 1;
CREATE TABLE t_nest (`n` Nested(a UInt32, b UInt32)) ENGINE = MergeTree ORDER BY tuple();

SHOW CREATE TABLE t_nest;
```

النتيجة:

```text theme={null}
┌─statement───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ CREATE TABLE default.t_nest
(
    `n.a` Array(UInt32),
    `n.b` Array(UInt32)
)
ENGINE = MergeTree
ORDER BY tuple()
SETTINGS index_granularity = 8192 │
└─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
```

الاستعلام:

```sql theme={null}
SET flatten_nested = 0;

CREATE TABLE t_nest (`n` Nested(a UInt32, b UInt32)) ENGINE = MergeTree ORDER BY tuple();

SHOW CREATE TABLE t_nest;
```

النتيجة:

```text theme={null}
┌─statement──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ CREATE TABLE default.t_nest
(
    `n` Nested(a UInt32, b UInt32)
)
ENGINE = MergeTree
ORDER BY tuple()
SETTINGS index_granularity = 8192 │
└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
```

<div id="force_aggregate_partitions_independently">
  ## force\_aggregate\_partitions\_independently
</div>

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

يفرض استخدام هذا التحسين عندما يكون ذلك ممكنًا، حتى إذا قررت الآليات الاستدلالية عدم استخدامه

<div id="force_aggregation_in_order">
  ## force\_aggregation\_in\_order
</div>

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

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

<div id="force_data_skipping_indices">
  ## force\_data\_skipping\_indices
</div>

يعطّل تنفيذ الاستعلام إذا لم تُستخدَم فهارس تخطي البيانات المحددة.

ضع في اعتبارك المثال التالي:

```sql theme={null}
CREATE TABLE data
(
    key Int,
    d1 Int,
    d1_null Nullable(Int),
    INDEX d1_idx d1 TYPE minmax GRANULARITY 1,
    INDEX d1_null_idx assumeNotNull(d1_null) TYPE minmax GRANULARITY 1
)
Engine=MergeTree()
ORDER BY key;

SELECT * FROM data_01515;
SELECT * FROM data_01515 SETTINGS force_data_skipping_indices=''; -- query will produce CANNOT_PARSE_TEXT error.
SELECT * FROM data_01515 SETTINGS force_data_skipping_indices='d1_idx'; -- query will produce INDEX_NOT_USED error.
SELECT * FROM data_01515 WHERE d1 = 0 SETTINGS force_data_skipping_indices='d1_idx'; -- Ok.
SELECT * FROM data_01515 WHERE d1 = 0 SETTINGS force_data_skipping_indices='`d1_idx`'; -- Ok (example of full featured parser).
SELECT * FROM data_01515 WHERE d1 = 0 SETTINGS force_data_skipping_indices='`d1_idx`, d1_null_idx'; -- query will produce INDEX_NOT_USED error, since d1_null_idx is not used.
SELECT * FROM data_01515 WHERE d1 = 0 AND assumeNotNull(d1_null) = 0 SETTINGS force_data_skipping_indices='`d1_idx`, d1_null_idx'; -- Ok.
```

<div id="force_grouping_standard_compatibility">
  ## force\_grouping\_standard\_compatibility
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "22.9"},{"label": "1"},{"label": "اجعل الدالة GROUPING تُرجع نفس الناتج كما في معيار SQL وأنظمة إدارة قواعد البيانات الأخرى"}]}]} />

اجعل الدالة GROUPING تُرجع 1 عندما لا تُستخدم الوسيطة كمفتاح للتجميع

<div id="force_index_by_date">
  ## force\_index\_by\_date
</div>

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

يعطّل تنفيذ الاستعلام إذا تعذّر استخدام الفهرس استنادًا إلى التاريخ.

يعمل مع الجداول من عائلة MergeTree.

إذا كانت `force_index_by_date=1`، يتحقّق ClickHouse مما إذا كان الاستعلام يتضمّن شرطًا على مفتاح التاريخ يمكن استخدامه لتقييد نطاقات البيانات. وإذا لم يكن هناك شرط مناسب، فإنه يُطلق استثناءً. ومع ذلك، فهو لا يتحقّق مما إذا كان هذا الشرط يقلّل كمية البيانات المطلوب قراءتها. على سبيل المثال، يُعدّ الشرط `Date != ' 2000-01-01 '` مقبولًا حتى عندما يطابق جميع البيانات في الجدول (أي إن تشغيل الاستعلام يتطلّب فحصًا كاملًا). لمزيد من المعلومات حول نطاقات البيانات في جداول MergeTree، راجع [MergeTree](/ar/reference/engines/table-engines/mergetree-family/mergetree).

<div id="force_optimize_projection">
  ## force\_optimize\_projection
</div>

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

يُمكّن أو يعطّل الاستخدام الإلزامي لـ[projections](/ar/reference/engines/table-engines/mergetree-family/mergetree#projections) في استعلامات `SELECT` عند تمكين تحسين الإسقاطات (راجع الإعداد [optimize\_use\_projections](#optimize_use_projections)).

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

* 0 — تحسين الإسقاطات ليس إلزاميًا.
* 1 — تحسين الإسقاطات إلزامي.

<div id="force_optimize_projection_name">
  ## force\_optimize\_projection\_name
</div>

إذا ضُبطت على سلسلة نصية غير فارغة، فتحقّق من أن هذا الإسقاط مستخدم في الاستعلام مرة واحدة على الأقل.

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

* سلسلة نصية: اسم الإسقاط المستخدم في الاستعلام

<div id="force_optimize_skip_unused_shards">
  ## force\_optimize\_skip\_unused\_shards
</div>

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

يُفعِّل أو يُعطِّل تنفيذ الاستعلام إذا كان [optimize\_skip\_unused\_shards](#optimize_skip_unused_shards) مُمكّنًا ولم يكن من الممكن تخطي الشاردات غير المستخدمة. وإذا تعذّر التخطي وكان هذا الإعداد مُمكّنًا، فسيُرفَع استثناء.

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

* 0 — معطّل. لا يرفع ClickHouse استثناءً.
* 1 — مُمكّن. يُعطَّل تنفيذ الاستعلام فقط إذا كان للجدول مفتاح تقسيم إلى شاردات.
* 2 — مُمكّن. يُعطَّل تنفيذ الاستعلام سواء أكان مفتاح التقسيم إلى شاردات معرّفًا للجدول أم لا.

<div id="force_optimize_skip_unused_shards_nesting">
  ## force\_optimize\_skip\_unused\_shards\_nesting
</div>

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

يتحكم في [`force_optimize_skip_unused_shards`](#force_optimize_skip_unused_shards) — وبالتالي لا يزال يتطلب تفعيل [`force_optimize_skip_unused_shards`](#force_optimize_skip_unused_shards) — وذلك بحسب مستوى التداخل في الاستعلام الموزع (أي في الحالة التي يكون لديك فيها جدول `Distributed` يستعلم من جدول `Distributed` آخر).

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

* 0 - معطّل، ويعمل `force_optimize_skip_unused_shards` دائمًا.
* 1 — يفعّل `force_optimize_skip_unused_shards` للمستوى الأول فقط.
* 2 — يفعّل `force_optimize_skip_unused_shards` حتى المستوى الثاني.

<div id="force_primary_key">
  ## force\_primary\_key
</div>

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

يعطّل تنفيذ الاستعلام إذا لم يكن من الممكن استخدام الفهرسة بالمفتاح الأساسي.

يعمل مع الجداول من عائلة MergeTree.

إذا كانت `force_primary_key=1`، يتحقق ClickHouse مما إذا كان الاستعلام يحتوي على شرط للمفتاح الأساسي يمكن استخدامه لتقييد نطاقات البيانات. وإذا لم يكن هناك شرط مناسب، فإنه يُصدر استثناءً. ومع ذلك، لا يتحقق مما إذا كان هذا الشرط يقلّل كمية البيانات المطلوب قراءتها. لمزيد من المعلومات حول نطاقات البيانات في جداول MergeTree، راجع [MergeTree](/ar/reference/engines/table-engines/mergetree-family/mergetree).

<div id="force_remove_data_recursively_on_drop">
  ## force\_remove\_data\_recursively\_on\_drop
</div>

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

يزيل البيانات بشكل تكراري عند تنفيذ استعلام DROP. يتجنب الخطأ 'Directory not empty'، لكنه قد يزيل البيانات المفصولة بصمت

<div id="formatdatetime_e_with_space_padding">
  ## formatdatetime\_e\_with\_space\_padding
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "0"},{"label": "تحسين التوافق مع MySQL DATE_FORMAT/STR_TO_DATE"}]}]} />

يعرض محدِّد التنسيق '%e' في الدالة 'formatDateTime' الأيام المكوّنة من رقم واحد مسبوقة بمسافة، مثل ' 2' بدلًا من '2'.

<div id="formatdatetime_f_prints_scale_number_of_digits">
  ## formatdatetime\_f\_prints\_scale\_number\_of\_digits
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "0"},{"label": "New setting."}]}]} />

يعرض محدِّد التنسيق '%f' في الدالة 'formatDateTime' عددًا من الخانات يساوي قيمة scale فقط في DateTime64 بدلًا من 6 خانات ثابتة.

<div id="formatdatetime_f_prints_single_zero">
  ## formatdatetime\_f\_prints\_single\_zero
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "23.4"},{"label": "0"},{"label": "تحسين التوافق مع MySQL DATE_FORMAT()/STR_TO_DATE()"}]}]} />

يعرض محدِّد التنسيق '%f' في الدالة 'formatDateTime' صفراً واحداً بدلاً من ستة أصفار إذا كانت القيمة المنسّقة لا تحتوي على كسور من الثانية.

<div id="formatdatetime_format_without_leading_zeros">
  ## formatdatetime\_format\_without\_leading\_zeros
</div>

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

تعرض محددات التنسيق '%c' و'%l' و'%k' في الدالة `formatDateTime` الأشهر والساعات من دون أصفار بادئة.

<div id="formatdatetime_parsedatetime_m_is_month_name">
  ## formatdatetime\_parsedatetime\_m\_is\_month\_name
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "23.4"},{"label": "1"},{"label": "تحسين التوافق مع MySQL DATE_FORMAT/STR_TO_DATE"}]}]} />

يؤدي محدِّد التنسيق '%M' في الدالتين 'formatDateTime' و 'parseDateTime' إلى طباعة/تحليل اسم الشهر بدلًا من الدقائق.

<div id="fsync_metadata">
  ## fsync\_metadata
</div>

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

يُفعِّل أو يعطِّل [fsync](http://pubs.opengroup.org/onlinepubs/9699919799/functions/fsync.html) عند كتابة ملفات `.sql`. وهو مُفعَّل افتراضيًا.

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

<div id="function_base58_max_input_size">
  ## function\_base58\_max\_input\_size
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.6"},{"label": "10000"},{"label": "إعداد جديد يقيّد حجم الإدخال للدوال `base58Encode` و`base58Decode` و`tryBase58Decode` (التي يكون تحويلها تربيعيًا بالنسبة إلى طول الإدخال) إلى 10 كيلوبايت افتراضيًا. تؤدي قيمة التوافق `0` إلى تعطيل هذا القيد، ما يعيد السلوك السابق المتمثل في قبول مُدخلات كبيرة كيفما كان حجمها."}]}]} />

الحد الأقصى لحجم قيمة إدخال واحدة، بالبايت، للدوال `base58Encode` و`base58Decode` و`tryBase58Decode`. يكون تحويل `base58` العام تربيعيًا بالنسبة إلى طول الإدخال، لذلك قد تستغرق قيمة كبيرة واحدة وقتًا طويلًا جدًا في التنفيذ. صُمم `base58` للبيانات القصيرة (المفاتيح، وقيم التجزئة، والعناوين)، لذا فإن القيمة الافتراضية البالغة 10 كيلوبايت تُعد عتبة أمان سخية. تُطلق `base58Encode` و`base58Decode` الخطأ `TOO_LARGE_STRING_SIZE` عند الإدخالات الأكبر، بينما تُرجع `tryBase58Decode` سلسلة فارغة. تؤدي القيمة `0` إلى تعطيل هذا القيد (وكان هذا هو السلوك قبل تقديم هذا الإعداد). ولا تتأثر دوال `base32` و`base64` الخطية.

<div id="function_date_trunc_return_type_behavior">
  ## function\_date\_trunc\_return\_type\_behavior
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.7"},{"label": "0"},{"label": "إضافة إعداد جديد للحفاظ على السلوك القديم للدالة dateTrunc"}]}, {"id": "row-2","items": [{"label": "25.4"},{"label": "0"},{"label": "تغيير نوع ناتج الدالة dateTrunc لوسيطات DateTime64/Date32 إلى DateTime64/Date32 بغضّ النظر عن وحدة الوقت، للحصول على نتيجة صحيحة للقيم السالبة"}]}]} />

يسمح هذا الإعداد بتغيير سلوك نوع ناتج الدالة `dateTrunc`.

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

* 0 - عندما تكون الوسيطة الثانية `DateTime64/Date32`، يكون نوع الإرجاع `DateTime64/Date32` بغضّ النظر عن وحدة الوقت في الوسيطة الأولى.
* 1 - بالنسبة إلى `Date32`، تكون النتيجة دائمًا `Date`. وبالنسبة إلى `DateTime64`، تكون النتيجة `DateTime` لوحدات الوقت `second` وما أعلى.

<div id="function_implementation">
  ## function\_implementation
</div>

اختر تنفيذ الدالة لهدف أو Variant محدد (تجريبي). وإذا تُرك فارغًا، فسيتم تفعيلها جميعًا.

<div id="function_json_value_return_type_allow_complex">
  ## function\_json\_value\_return\_type\_allow\_complex
</div>

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

يحدّد ما إذا كان مسموحًا بإرجاع نوع معقّد (مثل: struct وarray وmap) للدالة json\_value.

```sql theme={null}
SELECT JSON_VALUE('{"hello":{"world":"!"}}', '$.hello') settings function_json_value_return_type_allow_complex=true

┌─JSON_VALUE('{"hello":{"world":"!"}}', '$.hello')─┐
│ {"world":"!"}                                    │
└──────────────────────────────────────────────────┘

1 row in set. Elapsed: 0.001 sec.
```

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

* true — يُسمح به.
* false — لا يُسمح به.

<div id="function_json_value_return_type_allow_nullable">
  ## function\_json\_value\_return\_type\_allow\_nullable
</div>

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

يتحكم في ما إذا كان يُسمح بإرجاع `NULL` عندما لا تكون هناك قيمة موجودة للدالة JSON\_VALUE.

```sql theme={null}
SELECT JSON_VALUE('{"hello":"world"}', '$.b') settings function_json_value_return_type_allow_nullable=true;

┌─JSON_VALUE('{"hello":"world"}', '$.b')─┐
│ ᴺᵁᴸᴸ                                   │
└────────────────────────────────────────┘

1 row in set. Elapsed: 0.001 sec.
```

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

* true — السماح.
* false — عدم السماح.

<div id="function_locate_has_mysql_compatible_argument_order">
  ## function\_locate\_has\_mysql\_compatible\_argument\_order
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "1"},{"label": "زيادة التوافق مع الدالة locate في MySQL."}]}]} />

يتحكم هذا الإعداد في ترتيب الوسيطات في الدالة [locate](/ar/reference/functions/regular-functions/string-search-functions#locate).

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

* 0 — تقبل الدالة `locate` الوسيطات `(haystack, needle[, start_pos])`.
* 1 — تقبل الدالة `locate` الوسيطات `(needle, haystack, [, start_pos])` (سلوك متوافق مع MySQL)

<div id="function_range_max_elements_in_block">
  ## function\_range\_max\_elements\_in\_block
</div>

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

يحدّد حدّ الأمان لحجم البيانات الناتج عن الدالة [range](/ar/reference/functions/regular-functions/array-functions#range). ويعرّف الحد الأقصى لعدد القيم التي تُنشئها الدالة في كل كتلة بيانات (إجمالي أحجام المصفوفات لكل صف في الكتلة).

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

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

**انظر أيضًا**

* [`max_block_size`](#max_block_size)
* [`min_insert_block_size_rows`](#min_insert_block_size_rows)

<div id="function_sleep_max_microseconds_per_block">
  ## function\_sleep\_max\_microseconds\_per\_block
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "23.7"},{"label": "3000000"},{"label": "في الإصدارات السابقة، كان الحد الأقصى لزمن السكون البالغ 3 ثوانٍ يُطبَّق فقط على `sleep`، وليس على الدالة `sleepEachRow`. في الإصدار الجديد، نقدّم هذا الإعداد. وإذا عيّنت التوافق مع الإصدارات السابقة، فسنعطّل هذا الحد بالكامل."}]}]} />

الحد الأقصى لعدد الميكروثواني المسموح للدالة `sleep` بالسكون خلالها لكل block. وإذا استدعاها مستخدم بقيمة أكبر، فسيؤدي ذلك إلى استثناء. وهذا حد أمان.

<div id="function_visible_width_behavior">
  ## سلوك function\_visible\_width\_behavior
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.1"},{"label": "1"},{"label": "غيّرنا السلوك الافتراضي لـ `visibleWidth` ليصبح أكثر دقة"}]}]} />

إصدار سلوك `visibleWidth`. 0 - يحسب عدد code points فقط؛ 1 - يحسب المحارف ذات العرض الصفري والمحارف المُركَّبة بشكل صحيح، ويحسب المحارف كاملة العرض على أنها محرفان، ويقدّر عرض tab، ويحسب محارف الحذف.

<div id="functions_h3_default_if_invalid">
  ## functions\_h3\_default\_if\_invalid
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "0"},{"label": "إعداد جديد للسلوك القديم للسماح بتمرير مدخلات غير صالحة إلى دوال h3"}]}]} />

إذا كانت القيمة false، فستُطلق دوال h3، مثل h3CellAreaM2، استثناءً إذا كان الإدخال غير صالح. وإذا كانت القيمة true، فستُرجع 0 أو القيمة الافتراضية.

<div id="geo_distance_returns_float64_on_float64_arguments">
  ## geo\_distance\_returns\_float64\_on\_float64\_arguments
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "1"},{"label": "زيادة الدقة الافتراضية"}]}]} />

إذا كانت الوسيطات الأربع للدوال `geoDistance` و`greatCircleDistance` و`greatCircleAngle` جميعها من النوع Float64، فأعِد قيمة من النوع Float64 واستخدم دقةً مزدوجة في العمليات الحسابية الداخلية. في الإصدارات السابقة من ClickHouse، كانت هذه الدوال تُعيد دائمًا Float32.

<div id="geotoh3_argument_order">
  ## geotoh3\_argument\_order
</div>

<SettingsInfoBlock type="GeoToH3ArgumentOrder" default_value="lat_lon" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "lat_lon"},{"label": "إعداد جديد للسلوك القديم لتحديد ترتيب الوسيطتين lon وlat"}]}]} />

تقبل الدالة 'geoToH3' ‎(lon, lat)‎ إذا كان الإعداد 'lon\_lat'، و‎(lat, lon)‎ إذا كان الإعداد 'lat\_lon'.

<div id="glob_expansion_max_elements">
  ## glob\_expansion\_max\_elements
</div>

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

الحد الأقصى لعدد العناوين المسموح بها (للتخزين الخارجي، ودوال الجدول، وما إلى ذلك).

<div id="grace_hash_join_initial_buckets">
  ## grace\_hash\_join\_initial\_buckets
</div>

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

العدد الأولي لتقسيمات grace hash join

<div id="grace_hash_join_max_buckets">
  ## grace\_hash\_join\_max\_buckets
</div>

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

الحد الأقصى لعدد التقسيمات في grace hash join

<div id="group_by_overflow_mode">
  ## group\_by\_overflow\_mode
</div>

<SettingsInfoBlock type="OverflowModeGroupBy" default_value="throw" />

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

* `throw`: إثارة استثناء
* `break`: إيقاف تنفيذ الاستعلام وإرجاع النتيجة الجزئية
* `any`: متابعة التجميع للمفاتيح التي دخلت إلى المجموعة، لكن من دون إضافة مفاتيح جديدة إليها.

يتيح لك استخدام القيمة `any` تشغيل تقريب لـ GROUP BY. وتعتمد جودة
هذا التقريب على الطبيعة الإحصائية للبيانات.

<div id="group_by_two_level_threshold">
  ## group\_by\_two\_level\_threshold
</div>

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

ابتداءً من أي عدد من المفاتيح يبدأ التجميع على مستويين. 0 - لم تُضبط العتبة.

<div id="group_by_two_level_threshold_bytes">
  ## group\_by\_two\_level\_threshold\_bytes
</div>

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

ابتداءً من أي حجم لحالة التجميع، محسوبًا بالبايت، يبدأ استخدام التجميع على مستويين. 0 - يعني أن العتبة غير معيّنة. يُستخدم التجميع على مستويين عند تفعيل عتبة واحدة على الأقل من هذه العتبات.

<div id="group_by_use_nulls">
  ## group\_by\_use\_nulls
</div>

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

يغيّر هذا الإعداد الطريقة التي يتعامل بها [بند GROUP BY](/ar/reference/statements/select/group-by) مع أنواع مفاتيح التجميع.
عند استخدام المحددات `ROLLUP` أو `CUBE` أو `GROUPING SETS`، قد لا تُستخدم بعض مفاتيح التجميع في إنشاء بعض صفوف النتائج.
وتُملأ أعمدة هذه المفاتيح في الصفوف المقابلة إما بالقيمة الافتراضية أو بـ `NULL` وفقًا لهذا الإعداد.

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

* 0 — تُستخدم القيمة الافتراضية لنوع مفتاح التجميع لملء القيم المفقودة.
* 1 — ينفّذ ClickHouse ‏`GROUP BY` بالطريقة نفسها التي ينص عليها معيار SQL. وتُحوَّل أنواع مفاتيح التجميع إلى [Nullable](/ar/reference/data-types/nullable). وتُملأ أعمدة مفاتيح التجميع المقابلة بـ [NULL](/ar/reference/syntax#null) في الصفوف التي لم تُستخدم فيها هذه المفاتيح.

انظر أيضًا:

* [بند GROUP BY](/ar/reference/statements/select/group-by)

<div id="h3togeo_lon_lat_result_order">
  ## h3togeo\_lon\_lat\_result\_order
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "0"},{"label": "إعداد جديد"}]}]} />

تعيد الدالة 'h3ToGeo' ‎(lon, lat) إذا كانت القيمة true، وإلا فستعيد ‎(lat, lon).

<div id="handshake_timeout_ms">
  ## handshake\_timeout\_ms
</div>

<SettingsInfoBlock type="مللي ثانية" default_value="10000" />

مهلة الانتظار بالمللي ثانية لتلقّي حزمة Hello من النسخ المتماثلة أثناء عملية المصافحة.

<div id="hdfs_create_new_file_on_insert">
  ## hdfs\_create\_new\_file\_on\_insert
</div>

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

يُمكّن أو يعطّل إنشاء ملف جديد مع كل عملية إدراج في جداول محرك HDFS. إذا كان هذا الخيار مُمكّنًا، فسيُنشأ مع كل عملية إدراج ملف HDFS جديد باسم يتبع نمطًا مشابهًا لما يلي:

الاسم الأولي: `data.Parquet.gz` -> `data.1.Parquet.gz` -> `data.2.Parquet.gz`، وهكذا.

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

* 0 — يُلحِق استعلام `INSERT` البيانات الجديدة بنهاية الملف.
* 1 — ينشئ استعلام `INSERT` ملفًا جديدًا.

<div id="hdfs_ignore_file_doesnt_exist">
  ## hdfs\_ignore\_file\_doesnt\_exist
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.6"},{"label": "0"},{"label": "السماح بإرجاع 0 صفوف عندما لا تكون الملفات المطلوبة موجودة، بدلًا من إثارة استثناء في محرك جدول HDFS"}]}]} />

تجاهل عدم وجود الملف إذا لم يكن موجودًا عند قراءة مفاتيح معيّنة.

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

* 1 — يعيد `SELECT` نتيجة فارغة.
* 0 — يُثير `SELECT` استثناءً.

<div id="hdfs_replication">
  ## hdfs\_replication
</div>

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

يمكن تحديد عامل التكرار الفعلي عند إنشاء ملف HDFS.

<div id="hdfs_skip_empty_files">
  ## hdfs\_skip\_empty\_files
</div>

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

يؤدي إلى تفعيل أو تعطيل تخطي الملفات الفارغة في جداول محرك [HDFS](/ar/reference/engines/table-engines/integrations/hdfs).

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

* 0 — يُطلق `SELECT` استثناءً إذا لم يكن الملف الفارغ متوافقًا مع التنسيق المطلوب.
* 1 — يعرض `SELECT` نتيجة فارغة لملف فارغ.

<div id="hdfs_throw_on_zero_files_match">
  ## hdfs\_throw\_on\_zero\_files\_match
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.6"},{"label": "0"},{"label": "السماح بإثارة خطأ عندما يتعذر على طلب ListObjects مطابقة أي ملفات في محرك HDFS بدلًا من إرجاع نتيجة استعلام فارغة"}]}]} />

أثِر خطأً إذا لم تُطابَق أي ملفات وفقًا لقواعد توسيع glob.

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

* 1 — `SELECT` يُثير استثناءً.
* 0 — `SELECT` يعيد نتيجة فارغة.

<div id="hdfs_truncate_on_insert">
  ## hdfs\_truncate\_on\_insert
</div>

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

يُفعِّل أو يعطِّل اقتطاع الملف قبل عملية الإدراج في جداول محرك HDFS. وإذا كان معطّلًا، فسيتم طرح استثناء عند محاولة الإدراج إذا كان الملف موجودًا بالفعل في HDFS.

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

* 0 — يُلحِق استعلام `INSERT` البيانات الجديدة بنهاية الملف.
* 1 — يستبدل استعلام `INSERT` المحتوى الحالي للملف بالبيانات الجديدة.

<div id="hedged_connection_timeout_ms">
  ## hedged\_connection\_timeout\_ms
</div>

<SettingsInfoBlock type="مللي ثانية" default_value="50" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "23.4"},{"label": "50"},{"label": "ابدأ اتصالًا جديدًا في الطلبات المحوّطة بعد 50 مللي ثانية بدلًا من 100، ليتوافق ذلك مع مهلة الاتصال السابقة"}]}]} />

مهلة الاتصال اللازمة لإنشاء اتصال مع النسخة المتماثلة للطلبات المحوّطة

<div id="highlight_max_matches_per_row">
  ## highlight\_max\_matches\_per\_row
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "10000"},{"label": "إعداد جديد للحد من عدد مطابقات الإبراز لكل صف، للحماية من الاستهلاك المفرط للذاكرة."}]}]} />

يحدّد الحد الأقصى لعدد مطابقات الإبراز لكل صف في الدالة [highlight](/ar/reference/functions/regular-functions/string-search-functions#highlight). استخدمه للحماية من الاستهلاك المفرط للذاكرة عند إبراز الأنماط شديدة التكرار في النصوص الكبيرة.

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

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

<div id="hnsw_candidate_list_size_for_search">
  ## hnsw\_candidate\_list\_size\_for\_search
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.10"},{"label": "256"},{"label": "إعداد جديد. سابقًا، كان يمكن تحديد هذه القيمة اختياريًا في CREATE INDEX، وكانت 64 افتراضيًا."}]}]} />

حجم قائمة المرشحين الديناميكية عند البحث في index تشابه المتجهات، ويُعرف أيضًا باسم 'ef\_search'.

<div id="hsts_max_age">
  ## hsts\_max\_age
</div>

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

مدة انتهاء صلاحية HSTS. تعني القيمة 0 تعطيل HSTS.

<div id="http_connection_timeout">
  ## http\_connection\_timeout
</div>

<SettingsInfoBlock type="ثوانٍ" default_value="1" />

مهلة اتصال HTTP (بالثواني).

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

* أي عدد صحيح موجب.
* 0 - مُعطَّل (مهلة لا نهائية).

<div id="http_headers_progress_interval_ms">
  ## http\_headers\_progress\_interval\_ms
</div>

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

لا تُرسل رؤوس HTTP ‏X-ClickHouse-Progress بمعدل يزيد على مرة واحدة خلال كل فاصل زمني محدد.

<div id="http_headers_read_timeout">
  ## http\_headers\_read\_timeout
</div>

<SettingsInfoBlock type="ثوانٍ" default_value="30" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "30"},{"label": "إعداد جديد للحد من الوقت الإجمالي لقراءة رؤوس طلب HTTP، للحماية من هجمات slowloris."}]}]} />

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

<div id="http_make_head_request">
  ## http\_make\_head\_request
</div>

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

يتيح الإعداد `http_make_head_request` تنفيذ طلب `HEAD` أثناء قراءة البيانات عبر HTTP لاسترجاع معلومات عن الملف المطلوب قراءته، مثل حجمه. ونظرًا إلى أنه مفعّل افتراضيًا، فقد يكون من المستحسن تعطيل هذا الإعداد في الحالات التي لا يدعم فيها الخادم طلبات `HEAD`.

<div id="http_max_field_name_size">
  ## http\_max\_field\_name\_size
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "4096"},{"label": "خفض القيمة الافتراضية للحد من استخدام الذاكرة قبل المصادقة بواسطة اتصالات HTTP."}]}]} />

الحد الأقصى لطول اسم الحقل في رؤوس طلب HTTP ومعلمات الاستعلام وبيانات النموذج.

<div id="http_max_field_value_size">
  ## http\_max\_field\_value\_size
</div>

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

الحد الأقصى لطول قيمة الحقل في رؤوس طلب HTTP ومعلمات الاستعلام وبيانات النموذج.

<div id="http_max_fields">
  ## http\_max\_fields
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "1000"},{"label": "تقليل القيمة الافتراضية للحد من استخدام الذاكرة قبل المصادقة بواسطة اتصالات HTTP."}]}]} />

الحد الأقصى لعدد الحقول في رؤوس طلب HTTP ومعلمات الاستعلام وبيانات النموذج.

<div id="http_max_multipart_form_data_size">
  ## http\_max\_multipart\_form\_data\_size
</div>

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

الحد الأقصى لحجم محتوى multipart/form-data. لا يمكن تحليل هذا الإعداد من معلمات URL، ويجب تعيينه في ملف تعريف المستخدم. لاحظ أن المحتوى يُحلَّل وتُنشأ الجداول الخارجية في الذاكرة قبل بدء تنفيذ الاستعلام. وهذا هو الحد الوحيد الذي يؤثر في تلك المرحلة (أما الحدود القصوى لاستخدام الذاكرة ووقت التنفيذ فلا يكون لها أي تأثير أثناء قراءة بيانات نموذج HTTP).

<div id="http_max_request_header_size">
  ## http\_max\_request\_header\_size
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "10485760"},{"label": "إعداد جديد لفرض حد على الحجم الإجمالي لرؤوس طلب HTTP قبل المصادقة."}]}]} />

الحد الأقصى للحجم الإجمالي لجميع رؤوس طلب HTTP (بما في ذلك الأسماء والقيم) بالبايت.

<div id="http_max_request_param_data_size">
  ## http\_max\_request\_param\_data\_size
</div>

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

الحد الأقصى لحجم بيانات الطلب المستخدمة كمعلَمة استعلام في طلبات HTTP المعرَّفة مسبقًا.

<div id="http_max_tries">
  ## http\_max\_tries
</div>

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

الحد الأقصى لعدد محاولات القراءة عبر HTTP.

<div id="http_max_uri_size">
  ## http\_max\_uri\_size
</div>

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

يحدّد الحد الأقصى لطول URI لطلب HTTP.

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

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

<div id="http_native_compression_disable_checksumming_on_decompress">
  ## http\_native\_compression\_disable\_checksumming\_on\_decompress
</div>

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

يُمكّن أو يعطّل التحقق من المجموع الاختباري عند فك ضغط بيانات HTTP POST القادمة من العميل. يُستخدم فقط مع تنسيق الضغط الأصلي في ClickHouse (ولا يُستخدم مع `gzip` أو `deflate`).

لمزيد من المعلومات، راجع [وصف واجهة HTTP](/ar/concepts/features/interfaces/http).

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

* 0 — معطّل.
* 1 — مفعّل.

<div id="http_receive_timeout">
  ## http\_receive\_timeout
</div>

<SettingsInfoBlock type="ثوانٍ" default_value="30" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "23.6"},{"label": "30"},{"label": "راجع http_send_timeout."}]}]} />

مهلة استقبال HTTP (بالثواني).

القيم المحتملة:

* أي عدد صحيح موجب.
* 0 - معطّل (مهلة غير محدودة).

<div id="http_response_buffer_size">
  ## http\_response\_buffer\_size
</div>

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

عدد البايتات التي تُخزَّن مؤقتًا في ذاكرة الخادم قبل إرسال استجابة HTTP إلى العميل أو كتابتها إلى القرص (عند تمكين http\_wait\_end\_of\_query).

<div id="http_response_headers">
  ## http\_response\_headers
</div>

<SettingsInfoBlock type="Map" default_value="{}" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.12"},{"label": ""},{"label": "إعداد جديد."}]}]} />

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

إذا كان الرأس مضبوطًا بالفعل افتراضيًا، فستستبدله القيمة المقدَّمة.
وإذا لم يكن الرأس مضبوطًا افتراضيًا، فسيُضاف إلى قائمة الرؤوس.
أما الرؤوس التي يضبطها الخادم افتراضيًا ولم يستبدلها هذا الإعداد، فستبقى كما هي.

يتيح لك هذا الإعداد تعيين رأس إلى قيمة ثابتة. ولا توجد حاليًا طريقة لتعيين رأس إلى قيمة محسوبة ديناميكيًا.

لا يجوز أن تحتوي الأسماء أو القيم على محارف تحكم ASCII.

إذا كنت تنفّذ تطبيق UI يتيح للمستخدمين تعديل الإعدادات، ويتخذ في الوقت نفسه قرارات استنادًا إلى الرؤوس المُعادة، فمن المستحسن تقييد هذا الإعداد إلى readonly.

مثال: `SET http_response_headers = '{"Content-Type": "image/png"}'`

<div id="http_retry_initial_backoff_ms">
  ## http\_retry\_initial\_backoff\_ms
</div>

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

الحد الأدنى لزمن التراجع التدريجي بالمللي ثانية عند إعادة محاولة القراءة عبر http

<div id="http_retry_max_backoff_ms">
  ## http\_retry\_max\_backoff\_ms
</div>

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

الحد الأقصى لمدة التراجع التدريجي، بالملي ثانية، عند إعادة محاولة القراءة عبر http

<div id="http_send_timeout">
  ## http\_send\_timeout
</div>

<SettingsInfoBlock type="ثوانٍ" default_value="30" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "23.6"},{"label": "30"},{"label": "تبدو 3 دقائق مدة طويلة للغاية. لاحظ أن هذه هي المهلة الزمنية لعملية كتابة واحدة على الشبكة، وليست لعملية الرفع بأكملها."}]}]} />

مهلة إرسال HTTP (بالثواني).

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

* أي عدد صحيح موجب.
* 0 - معطّل (مهلة لا نهائية).

<Note>
  ينطبق هذا فقط على ملف تعريف `default`. يلزم إعادة تشغيل الخادم لكي تدخل التغييرات حيّز التنفيذ.
</Note>

<div id="http_skip_not_found_url_for_globs">
  ## http\_skip\_not\_found\_url\_for\_globs
</div>

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

تخطَّ عناوين URL لأنماط glob عند حدوث الخطأ HTTP\_NOT\_FOUND

<div id="http_wait_end_of_query">
  ## http\_wait\_end\_of\_query
</div>

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

فعّل التخزين المؤقت لاستجابة HTTP على جانب الخادم.

<div id="http_write_exception_in_output_format">
  ## http\_write\_exception\_in\_output\_format
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.11"},{"label": "0"},{"label": "تم التغيير لتحقيق الاتساق بين التنسيقات"}]}, {"id": "row-2","items": [{"label": "23.9"},{"label": "1"},{"label": "إخراج JSON/XML صالح عند حدوث استثناء في البث عبر HTTP."}]}]} />

يُكتب الاستثناء بتنسيق الإخراج لإنتاج مخرجات صالحة. يعمل مع تنسيقات JSON وXML.

<div id="http_zlib_compression_level">
  ## http\_zlib\_compression\_level
</div>

<SettingsInfoBlock type="Int64" default_value="3" />

يحدّد مستوى ضغط البيانات في الاستجابة لطلب HTTP إذا كان [enable\_http\_compression = 1](#enable_http_compression).

القيم الممكنة: الأرقام من 1 إلى 9.

<div id="iceberg_compaction_data_cleanup">
  ## iceberg\_compaction\_data\_cleanup
</div>

<SettingsInfoBlock type="ثوانٍ" default_value="10800" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "10800"},{"label": "إعداد جديد"}]}]} />

المدة التي ستُحذف بعدها البيانات.

<div id="iceberg_compaction_delay_bias">
  ## iceberg\_compaction\_delay\_bias
</div>

<SettingsInfoBlock type="ثوانٍ" default_value="10800" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "10800"},{"label": "إعداد جديد"}]}]} />

الحد الأدنى لمدة التأخير بين عمليتَي دمج في الخلفية.

<div id="iceberg_data_file_size_lower_threshold_compaction">
  ## iceberg\_data\_file\_size\_lower\_threshold\_compaction
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "10485760"},{"label": "إعداد جديد"}]}]} />

العتبة الدنيا لملفات البيانات الخاصة بعملية الدمج في Iceberg.

<div id="iceberg_data_file_size_upper_threshold_compaction">
  ## iceberg\_data\_file\_size\_upper\_threshold\_compaction
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "10737418240"},{"label": "إعداد جديد"}]}]} />

الحدّ الأعلى لحجم ملفات البيانات الخاصة بعملية الدمج في Iceberg.

<div id="iceberg_delete_data_on_drop">
  ## iceberg\_delete\_data\_on\_drop
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.9"},{"label": "0"},{"label": "إعداد جديد"}]}]} />

ما إذا كان ينبغي حذف جميع ملفات Iceberg عند تنفيذ DROP أم لا.

<div id="iceberg_expire_default_max_ref_age_ms">
  ## iceberg\_expire\_default\_max\_ref\_age\_ms
</div>

<SettingsInfoBlock type="Int64" default_value="9223372036854775807" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": "9223372036854775807"},{"label": "إعداد جديد."}]}]} />

القيمة الافتراضية لخاصية جدول Iceberg `history.expire.max-ref-age-ms` التي يستخدمها `expire_snapshots` عند عدم وجود هذه الخاصية.

<div id="iceberg_expire_default_max_snapshot_age_ms">
  ## iceberg\_expire\_default\_max\_snapshot\_age\_ms
</div>

<SettingsInfoBlock type="Int64" default_value="432000000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": "432000000"},{"label": "إعداد جديد."}]}]} />

القيمة الافتراضية لخاصية جدول Iceberg `history.expire.max-snapshot-age-ms` التي يستخدمها `expire_snapshots` عند عدم وجود هذه الخاصية.

<div id="iceberg_expire_default_min_snapshots_to_keep">
  ## iceberg\_expire\_default\_min\_snapshots\_to\_keep
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": "1"},{"label": "إعداد جديد."}]}]} />

القيمة الافتراضية لخاصية جدول Iceberg `history.expire.min-snapshots-to-keep` التي يستخدمها `expire_snapshots` عند عدم وجود هذه الخاصية.

<div id="iceberg_insert_max_bytes_in_data_file">
  ## iceberg\_insert\_max\_bytes\_in\_data\_file
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.9"},{"label": "1073741824"},{"label": "إعداد جديد."}]}]} />

الحد الأقصى لعدد البايتات في ملف بيانات Parquet الخاص بـ Iceberg أثناء عملية الإدراج.

<div id="iceberg_insert_max_partitions">
  ## iceberg\_insert\_max\_partitions
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "100"},{"label": "إعداد جديد."}]}]} />

الحد الأقصى المسموح به لعدد الأقسام في عملية insert واحدة ضمن محرك جدول Iceberg.

<div id="iceberg_insert_max_rows_in_data_file">
  ## iceberg\_insert\_max\_rows\_in\_data\_file
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.9"},{"label": "1000000"},{"label": "إعداد جديد."}]}]} />

الحد الأقصى لعدد الصفوف في ملف بيانات Parquet لـ Iceberg أثناء عملية الإدراج.

<div id="iceberg_max_number_datafiles_to_compact">
  ## iceberg\_max\_number\_datafiles\_to\_compact
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "1000"},{"label": "إعداد جديد"}]}]} />

عتبة دمج ملفات البيانات في Iceberg.

<div id="iceberg_metadata_compression_method">
  ## iceberg\_metadata\_compression\_method
</div>

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": ""},{"label": "إعداد جديد"}]}]} />

طريقة ضغط ملف `.metadata.json`.

<div id="iceberg_metadata_log_level">
  ## iceberg\_metadata\_log\_level
</div>

<SettingsInfoBlock type="IcebergMetadataLogLevel" default_value="none" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.9"},{"label": "none"},{"label": "إعداد جديد."}]}]} />

يتحكم في مستوى تسجيل البيانات الوصفية لجداول Iceberg في `system.iceberg_metadata_log`.
وعادةً ما يمكن تعديل هذا الإعداد لأغراض استكشاف الأخطاء وإصلاحها.

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

* none - لا يوجد سجل للبيانات الوصفية.
* metadata - ملف `metadata.json` الجذر.
* manifest\_list\_metadata - كل ما سبق + البيانات الوصفية من `manifest list` بتنسيق avro المطابقة لـ لقطة.
* manifest\_list\_entry - كل ما سبق + إدخالات `manifest list` بتنسيق avro.
* manifest\_file\_metadata - كل ما سبق + البيانات الوصفية من `manifest files` بتنسيق avro التي تم اجتيازها.
* manifest\_file\_entry - كل ما سبق + إدخالات `manifest files` بتنسيق avro التي تم اجتيازها.

<div id="iceberg_metadata_staleness_ms">
  ## iceberg\_metadata\_staleness\_ms
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": "0"},{"label": "إعداد جديد يتيح استخدام إصدار البيانات الوصفية المخزنة مؤقتًا في عمليات READ لتجنب الجلب من الكتالوج البعيد"}]}]} />

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

<div id="iceberg_orphan_files_older_than_seconds">
  ## iceberg\_orphan\_files\_older\_than\_seconds
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "259200"},{"label": "إعداد جديد للحدّ الافتراضي لعمر الملفات اليتيمة"}]}]} />

الحدّ العمري الافتراضي، بالثواني، لإزالة الملفات اليتيمة في جداول Iceberg. لا تُعدّ الملفات الأحدث من هذا الحدّ ملفاتٍ يتيمة. يُستخدم هذا الإعداد عند حذف الوسيط older\_than من استدعاء الإجراء remove\_orphan\_files(). القيمة الافتراضية هي 259200 (3 أيام).

<div id="iceberg_snapshot_id">
  ## iceberg\_snapshot\_id
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.4"},{"label": "0"},{"label": "إعداد جديد."}]}]} />

استعلم عن جدول Iceberg باستخدام معرّف اللقطة المحدّد.

<div id="iceberg_timestamp_ms">
  ## iceberg\_timestamp\_ms
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.4"},{"label": "0"},{"label": "إعداد جديد."}]}]} />

نفِّذ استعلامًا على جدول Iceberg باستخدام اللقطة التي كانت سارية عند طابع زمني محدد.

<div id="idle_connection_timeout">
  ## idle\_connection\_timeout
</div>

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

مهلة لإغلاق اتصالات TCP غير النشطة بعد انقضاء عدد الثواني المحدد.

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

* عدد صحيح موجب (0 - إغلاق فوري بعد 0 ثانية).

<div id="ignore_cold_parts_seconds">
  ## ignore\_cold\_parts\_seconds
</div>

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

لا يكون لهذا الإعداد تأثير إلا في ClickHouse Cloud. استبعد أجزاء البيانات الجديدة من استعلامات `SELECT` إلى أن تُحمَّل مسبقًا في الذاكرة (راجع [cache\_populated\_by\_fetch](/ar/reference/settings/merge-tree-settings#cache_populated_by_fetch)) أو إلى أن يبلغ عمرها هذا العدد من الثواني. وذلك فقط لمحركَي Replicated-/SharedMergeTree.

<div id="ignore_data_skipping_indices">
  ## ignore\_data\_skipping\_indices
</div>

يتجاهل فهارس تخطي البيانات المحددة إذا كان الاستعلام يستخدمها.

تأمل المثال التالي:

```sql theme={null}
CREATE TABLE data
(
    key Int,
    x Int,
    y Int,
    INDEX x_idx x TYPE minmax GRANULARITY 1,
    INDEX y_idx y TYPE minmax GRANULARITY 1,
    INDEX xy_idx (x,y) TYPE minmax GRANULARITY 1
)
Engine=MergeTree()
ORDER BY key;

INSERT INTO data VALUES (1, 2, 3);

SELECT * FROM data;
SELECT * FROM data SETTINGS ignore_data_skipping_indices=''; -- query will produce CANNOT_PARSE_TEXT error.
SELECT * FROM data SETTINGS ignore_data_skipping_indices='x_idx'; -- Ok.
SELECT * FROM data SETTINGS ignore_data_skipping_indices='na_idx'; -- Ok.

SELECT * FROM data WHERE x = 1 AND y = 1 SETTINGS ignore_data_skipping_indices='xy_idx',force_data_skipping_indices='xy_idx' ; -- query will produce INDEX_NOT_USED error, since xy_idx is explicitly ignored.
SELECT * FROM data WHERE x = 1 AND y = 2 SETTINGS ignore_data_skipping_indices='xy_idx';
```

الاستعلام دون تجاهل أي فهارس:

```sql theme={null}
EXPLAIN indexes = 1 SELECT * FROM data WHERE x = 1 AND y = 2;

Expression ((Projection + Before ORDER BY))
  Filter (WHERE)
    ReadFromMergeTree (default.data)
    Indexes:
      PrimaryKey
        Condition: true
        Parts: 1/1
        Granules: 1/1
      Skip
        Name: x_idx
        Description: minmax GRANULARITY 1
        Parts: 0/1
        Granules: 0/1
      Skip
        Name: y_idx
        Description: minmax GRANULARITY 1
        Parts: 0/0
        Granules: 0/0
      Skip
        Name: xy_idx
        Description: minmax GRANULARITY 1
        Parts: 0/0
        Granules: 0/0
```

عند تجاهل الفهرس `xy_idx`:

```sql theme={null}
EXPLAIN indexes = 1 SELECT * FROM data WHERE x = 1 AND y = 2 SETTINGS ignore_data_skipping_indices='xy_idx';

Expression ((Projection + Before ORDER BY))
  Filter (WHERE)
    ReadFromMergeTree (default.data)
    Indexes:
      PrimaryKey
        Condition: true
        Parts: 1/1
        Granules: 1/1
      Skip
        Name: x_idx
        Description: minmax GRANULARITY 1
        Parts: 0/1
        Granules: 0/1
      Skip
        Name: y_idx
        Description: minmax GRANULARITY 1
        Parts: 0/0
        Granules: 0/0
```

يعمل مع الجداول من عائلة MergeTree.

<div id="ignore_drop_queries_probability">
  ## ignore\_drop\_queries\_probability
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.4"},{"label": "0"},{"label": "يسمح بتجاهل استعلامات DROP على الخادم وفق احتمال محدد لأغراض الاختبار"}]}]} />

إذا كان مفعّلًا، فسيتجاهل الخادم جميع استعلامات DROP TABLE وفق الاحتمالية المحددة (وبالنسبة إلى المحركين Memory وJOIN، سيستبدل DROP بـ TRUNCATE). يُستخدم ذلك لأغراض الاختبار

<div id="ignore_format_null_for_explain">
  ## ignore\_format\_null\_for\_explain
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "1"},{"label": "يتم الآن تجاهل FORMAT Null افتراضيًا في استعلامات EXPLAIN"}]}]} />

إذا كان مُمكّنًا، فسيُتجاهل `FORMAT Null` في استعلامات `EXPLAIN` وسيُستخدم بدلًا منه تنسيق الإخراج الافتراضي.
إذا كان معطّلًا، فلن تُنتج استعلامات `EXPLAIN` التي تتضمن `FORMAT Null` أي مخرجات (وهو سلوك متوافق مع الإصدارات السابقة).

<div id="ignore_materialized_views_with_dropped_target_table">
  ## ignore\_materialized\_views\_with\_dropped\_target\_table
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.1"},{"label": "0"},{"label": "إضافة إعداد جديد يسمح بتجاهل العروض المادية التي حُذف جدولها الهدف"}]}]} />

تجاهل العروض المادية التي حُذف جدولها الهدف عند الدفع إلى العروض

<div id="ignore_on_cluster_for_replicated_access_entities_queries">
  ## ignore\_on\_cluster\_for\_replicated\_access\_entities\_queries
</div>

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

تجاهل عبارة ON CLUSTER في استعلامات إدارة كيانات الوصول المُكرَّرة.

<div id="ignore_on_cluster_for_replicated_database">
  ## ignore\_on\_cluster\_for\_replicated\_database
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.1"},{"label": "0"},{"label": "إضافة إعداد جديد لتجاهل عبارة ON CLUSTER في استعلامات DDL مع قاعدة بيانات من نوع Replicated."}]}]} />

تجاهل دائمًا عبارة ON CLUSTER في استعلامات DDL مع قواعد بيانات من نوع Replicated.

<div id="ignore_on_cluster_for_replicated_named_collections_queries">
  ## ignore\_on\_cluster\_for\_replicated\_named\_collections\_queries
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.7"},{"label": "0"},{"label": "تجاهل عبارة ON CLUSTER في استعلامات إدارة المجموعات المسماة المكررة."}]}]} />

تجاهل عبارة ON CLUSTER في استعلامات إدارة المجموعات المسماة المكررة.

<div id="ignore_on_cluster_for_replicated_udf_queries">
  ## ignore\_on\_cluster\_for\_replicated\_udf\_queries
</div>

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

تجاهل عبارة ON CLUSTER في استعلامات إدارة UDF المكرّرة.

<div id="implicit_select">
  ## implicit\_select
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.10"},{"label": "0"},{"label": "إعداد جديد."}]}]} />

اسمح بكتابة استعلامات SELECT بسيطة من دون الكلمة المفتاحية SELECT في البداية، مما يسهّل استخدامها بأسلوب الآلة الحاسبة؛ فعلى سبيل المثال، يصبح `1 + 2` استعلامًا صالحًا.

في `clickhouse-local` يكون هذا الخيار مفعّلًا افتراضيًا، ويمكن تعطيله صراحةً.

<div id="implicit_table_at_top_level">
  ## implicit\_table\_at\_top\_level
</div>

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": ""},{"label": "إعداد جديد، يُستخدم في clickhouse-local"}]}]} />

إذا لم تكن قيمته فارغة، فستقرأ الاستعلامات التي لا تحتوي على FROM في المستوى الأعلى من هذا الجدول بدلًا من system.one.

يُستخدم هذا في clickhouse-local لمعالجة بيانات الإدخال.
يمكن للمستخدم تعيين هذا الإعداد صراحةً، لكنه ليس مخصّصًا لهذا النوع من الاستخدام.

لا تتأثر الاستعلامات الفرعية بهذا الإعداد (سواء كانت استعلامات فرعية scalar أو FROM أو IN).
تُعامل عبارات SELECT في المستوى الأعلى ضمن سلاسل UNION وINTERSECT وEXCEPT معاملة موحّدة، وتتأثر بهذا الإعداد بغض النظر عن تجميعها بين قوسين.
لم يُحدَّد كيف يؤثر هذا الإعداد في طرق العرض والاستعلامات الموزعة.

يقبل هذا الإعداد اسم جدول (وعندها يُحدَّد الجدول انطلاقًا من قاعدة البيانات الحالية) أو اسمًا مؤهلًا بالصيغة 'database.table'.
يجب أن يكون كلٌّ من اسمي قاعدة البيانات والجدول من دون علامات اقتباس — ولا يُسمح إلا بالمُعرِّفات البسيطة.

<div id="implicit_transaction">
  ## implicit\_transaction
</div>

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

إذا كان مفعّلًا ولم يكن الاستعلام ضمن معاملة بالفعل، فسيُنفَّذ الاستعلام ضمن معاملة كاملة (begin + commit أو rollback)

<div id="inject_random_order_for_select_without_order_by">
  ## inject\_random\_order\_for\_select\_without\_order\_by
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.10"},{"label": "0"},{"label": "إعداد جديد"}]}]} />

إذا كان مُمكّنًا، فسيُحقن 'ORDER BY rand()' في استعلامات SELECT التي لا تتضمن بند ORDER BY.
يُطبَّق فقط عندما يكون عمق الاستعلام الفرعي = 0. ولا تتأثر الاستعلامات الفرعية وعبارات INSERT INTO ... SELECT.
إذا كانت البنية ذات المستوى الأعلى هي UNION، فسيُحقن 'ORDER BY rand()' في جميع الفروع بشكل مستقل.
لا يكون مفيدًا إلا للاختبار والتطوير (إذ إن غياب ORDER BY يُعد مصدرًا لنتائج استعلام غير حتمية).

<div id="insert_allow_materialized_columns">
  ## insert\_allow\_materialized\_columns
</div>

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

إذا كان هذا الإعداد مُمكّنًا، فسيُسمح بالأعمدة المُجسَّدة في INSERT.

<div id="insert_deduplicate">
  ## insert\_deduplicate
</div>

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

يُمكّن أو يعطّل إزالة تكرار الكتل لعملية `INSERT` (لجداول Replicated\*).

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

* 0 — معطّل.
* 1 — مفعّل.

افتراضيًا، تُزال تكرارات الكتل المُدرجة في الجداول المكررة بواسطة عبارة `INSERT` (انظر [تكرار البيانات](/ar/reference/engines/table-engines/mergetree-family/replication)).
بالنسبة إلى الجداول المكررة، يُزال التكرار افتراضيًا فقط لأول 100 كتلة من أحدث الكتل في كل قسم (انظر [replicated\_deduplication\_window](/ar/reference/settings/merge-tree-settings#replicated_deduplication_window)، [replicated\_deduplication\_window\_seconds](/ar/reference/settings/merge-tree-settings#replicated_deduplication_window_seconds)).
بالنسبة إلى الجداول غير المكررة، انظر [non\_replicated\_deduplication\_window](/ar/reference/settings/merge-tree-settings#non_replicated_deduplication_window).

<div id="insert_deduplication_token">
  ## insert\_deduplication\_token
</div>

يتيح هذا الإعداد للمستخدم تحديد آلية إزالة التكرار الخاصة به في MergeTree/ReplicatedMergeTree.
فعلى سبيل المثال، من خلال تحديد قيمة فريدة لهذا الإعداد في كل تعليمة INSERT،
يمكن للمستخدم تجنب إزالة تكرار البيانات المُدرجة نفسها.

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

* أي سلسلة نصية

لا يُستخدم `insert_deduplication_token` في إزالة التكرار *إلا* عندما لا يكون فارغًا.

بالنسبة إلى الجداول المكررة، افتراضيًا لا تُزال التكرارات إلا من أحدث 100 عملية insert لكل قسم (راجع [replicated\_deduplication\_window](/ar/reference/settings/merge-tree-settings#replicated_deduplication_window)، [replicated\_deduplication\_window\_seconds](/ar/reference/settings/merge-tree-settings#replicated_deduplication_window_seconds)).
أما بالنسبة إلى not replicated tables، فراجع [non\_replicated\_deduplication\_window](/ar/reference/settings/merge-tree-settings#non_replicated_deduplication_window).

<Note>
  يعمل `insert_deduplication_token` على مستوى قسم (تمامًا مثل checksum الخاصة بـ `insert_deduplication`). ويمكن لعدة أقسام أن تحمل القيمة نفسها لـ `insert_deduplication_token`.
</Note>

مثال:

```sql theme={null}
CREATE TABLE test_table
( A Int64 )
ENGINE = MergeTree
ORDER BY A
SETTINGS non_replicated_deduplication_window = 100;

INSERT INTO test_table SETTINGS insert_deduplication_token = 'test' VALUES (1);

-- the next insert won't be deduplicated because insert_deduplication_token is different
INSERT INTO test_table SETTINGS insert_deduplication_token = 'test1' VALUES (1);

-- the next insert will be deduplicated because insert_deduplication_token
-- is the same as one of the previous
INSERT INTO test_table SETTINGS insert_deduplication_token = 'test' VALUES (2);

SELECT * FROM test_table

┌─A─┐
│ 1 │
└───┘
┌─A─┐
│ 1 │
└───┘
```

<div id="insert_keeper_fault_injection_probability">
  ## insert\_keeper\_fault\_injection\_probability
</div>

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

الاحتمال التقريبي لفشل طلب Keeper أثناء insert. يجب أن تكون القيمة ضمن النطاق \[0.0f, 1.0f]

<div id="insert_keeper_fault_injection_seed">
  ## insert\_keeper\_fault\_injection\_seed
</div>

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

0 - البذرة العشوائية، وإلا فتُستخدم قيمة الإعداد

<div id="insert_keeper_max_retries">
  ## insert\_keeper\_max\_retries
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "23.2"},{"label": "20"},{"label": "تمكين إعادة الاتصال بـ Keeper عند INSERT، وتحسين الاعتمادية"}]}]} />

يضبط هذا الإعداد الحد الأقصى لعدد مرات إعادة المحاولة لطلبات ClickHouse Keeper (أو ZooKeeper) أثناء الإدراج في MergeTree المكرّر. ولا تُؤخذ في الحسبان لإعادة المحاولة إلا طلبات Keeper التي فشلت بسبب خطأ في الشبكة، أو انتهاء مهلة جلسة Keeper، أو انتهاء مهلة الطلب.

Possible values:

* عدد صحيح موجب.
* 0 — تكون إعادة المحاولة معطّلة

Cloud default value: `20`.

تتم إعادة المحاولة لطلبات Keeper بعد مهلة زمنية معينة. وتتحكم في هذه المهلة الإعدادات التالية: `insert_keeper_retry_initial_backoff_ms`, `insert_keeper_retry_max_backoff_ms`.
تتم أول إعادة محاولة بعد المهلة المحددة في `insert_keeper_retry_initial_backoff_ms`. أما المهل اللاحقة فسيُحسب طولها كما يلي:

```
timeout = min(insert_keeper_retry_max_backoff_ms, latest_timeout * 2)
```

على سبيل المثال، إذا كانت `insert_keeper_retry_initial_backoff_ms=100` و`insert_keeper_retry_max_backoff_ms=10000` و`insert_keeper_max_retries=8`، فستكون مدد المهلة `100, 200, 400, 800, 1600, 3200, 6400, 10000`.

وبالإضافة إلى تحمّل الأعطال، تهدف إعادات المحاولة إلى توفير تجربة استخدام أفضل، إذ تتيح تجنّب إرجاع خطأ أثناء تنفيذ INSERT إذا أُعيد تشغيل Keeper، على سبيل المثال بسبب ترقية.

<div id="insert_keeper_retry_initial_backoff_ms">
  ## insert\_keeper\_retry\_initial\_backoff\_ms
</div>

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

مهلة الانتظار الأولية (بالملي ثانية) قبل إعادة محاولة طلب Keeper فشل أثناء تنفيذ استعلام INSERT

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

* عدد صحيح موجب.
* 0 — لا توجد مهلة انتظار

<div id="insert_keeper_retry_max_backoff_ms">
  ## insert\_keeper\_retry\_max\_backoff\_ms
</div>

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

الحد الأقصى للمهلة الزمنية (بالملي ثانية) لإعادة محاولة طلب Keeper تعذّر أثناء تنفيذ استعلام INSERT

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

* عدد صحيح موجب.
* 0 — المهلة الزمنية القصوى غير مقيّدة

<div id="insert_null_as_default">
  ## insert\_null\_as\_default
</div>

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

يُفعِّل هذا الإعداد أو يعطّل إدراج [القيم الافتراضية](/ar/reference/statements/create/table#default_values) بدلًا من [NULL](/ar/reference/syntax#null) في الأعمدة ذات نوع البيانات غير [Nullable](/ar/reference/data-types/nullable).
إذا كان نوع العمود غير Nullable وكان هذا الإعداد معطّلًا، فإن إدراج `NULL` يتسبب في حدوث استثناء. أما إذا كان نوع العمود Nullable، فتُدرج قيم `NULL` كما هي بغض النظر عن هذا الإعداد.

ينطبق هذا الإعداد على استعلامات [INSERT ... SELECT](/ar/reference/statements/insert-into#inserting-the-results-of-select). لاحظ أن الاستعلامات الفرعية `SELECT` يمكن ربطها باستخدام البند `UNION ALL`.

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

* 0 — يتسبب إدراج `NULL` في عمود غير Nullable في حدوث استثناء.
* 1 — تُدرج القيمة الافتراضية للعمود بدلًا من `NULL`.

<div id="insert_quorum">
  ## insert\_quorum
</div>

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

<Note>
  لا ينطبق هذا الإعداد على SharedMergeTree، راجع [اتساق SharedMergeTree](/ar/products/cloud/features/infrastructure/shared-merge-tree#consistency) لمزيد من المعلومات.
</Note>

يُمكّن الكتابة بالنصاب.

* إذا كان `insert_quorum < 2`، تكون الكتابة بالنصاب معطّلة.
* إذا كان `insert_quorum >= 2`، تكون الكتابة بالنصاب مفعّلة.
* إذا كان `insert_quorum = 'auto'`، فاستخدم عدد الأغلبية (`number_of_replicas / 2 + 1`) بوصفه قيمة النصاب.

الكتابة بالنصاب

لا تنجح عملية `INSERT` إلا عندما يتمكن ClickHouse من كتابة البيانات بنجاح إلى `insert_quorum` من النسخ المتماثلة خلال `insert_quorum_timeout`. وإذا لم يصل عدد النسخ المتماثلة التي نجحت الكتابة إليها إلى `insert_quorum` لأي سبب، فتُعدّ عملية الكتابة فاشلة، وسيحذف ClickHouse الـ كتلة المُدرَج من جميع النسخ المتماثلة التي كُتبت إليها البيانات بالفعل.

عندما يكون `insert_quorum_parallel` معطّلًا، تكون جميع النسخ المتماثلة ضمن النصاب متسقة، أي إنها تحتوي على بيانات جميع استعلامات `INSERT` السابقة (أي يكون تسلسل `INSERT` خطيًا). وعند قراءة البيانات المكتوبة باستخدام `insert_quorum` مع تعطيل `insert_quorum_parallel`، يمكنك تفعيل الاتساق التسلسلي لاستعلامات `SELECT` باستخدام [select\_sequential\_consistency](#select_sequential_consistency).

يُصدر ClickHouse استثناءً في الحالات التالية:

* إذا كان عدد النسخ المتماثلة المتاحة وقت تنفيذ الاستعلام أقل من `insert_quorum`.
* عندما يكون `insert_quorum_parallel` معطّلًا وتُجرى محاولة لكتابة البيانات قبل أن يكون الـ كتلة السابق قد أُدرج بعد في `insert_quorum` من النسخ المتماثلة. وقد يحدث هذا إذا حاول المستخدم تنفيذ استعلام `INSERT` آخر على الجدول نفسه قبل اكتمال الاستعلام السابق الذي يستخدم `insert_quorum`.

انظر أيضًا:

* [insert\_quorum\_timeout](#insert_quorum_timeout)
* [insert\_quorum\_parallel](#insert_quorum_parallel)
* [select\_sequential\_consistency](#select_sequential_consistency)

<div id="insert_quorum_parallel">
  ## insert\_quorum\_parallel
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "21.1"},{"label": "1"},{"label": "استخدم عمليات `INSERT` المتوازية بالنصاب افتراضيًا. وهي أسهل استخدامًا بكثير من عمليات `INSERT` المتسلسلة بالنصاب"}]}]} />

<Note>
  لا ينطبق هذا الإعداد على SharedMergeTree، راجع [SharedMergeTree consistency](/ar/products/cloud/features/infrastructure/shared-merge-tree#consistency) لمزيد من المعلومات.
</Note>

يُمكّن هذا الإعداد أو يعطّل التوازي في استعلامات `INSERT` بالنصاب. عند تمكينه، يمكن إرسال استعلامات `INSERT` إضافية قبل اكتمال الاستعلامات السابقة. وعند تعطيله، ستُرفض عمليات الكتابة الإضافية إلى الجدول نفسه.

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

* 0 — معطّل.
* 1 — مُمكّن.

انظر أيضًا:

* [insert\_quorum](#insert_quorum)
* [insert\_quorum\_timeout](#insert_quorum_timeout)
* [select\_sequential\_consistency](#select_sequential_consistency)

<div id="insert_quorum_timeout">
  ## insert\_quorum\_timeout
</div>

<SettingsInfoBlock type="Milliseconds" default_value="600000" />

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

انظر أيضًا:

* [insert\_quorum](#insert_quorum)
* [insert\_quorum\_parallel](#insert_quorum_parallel)
* [select\_sequential\_consistency](#select_sequential_consistency)

<div id="insert_shard_id">
  ## insert\_shard\_id
</div>

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

إذا لم تكن القيمة `0`، فإنها تحدد الشارد في جدول [Distributed](/ar/reference/engines/table-engines/special/distributed) الذي ستُدرج فيه البيانات بشكل متزامن.

إذا كانت قيمة `insert_shard_id` غير صحيحة، فسيُطلق الخادم استثناءً.

للحصول على عدد الشاردات في `requested_cluster`، يمكنك التحقق من إعدادات الخادم أو استخدام هذا الاستعلام:

```sql theme={null}
SELECT uniq(shard_num) FROM system.clusters WHERE cluster = 'requested_cluster';
```

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

* 0 — معطّل.
* أي رقم من `1` إلى `shards_num` للجدول [Distributed](/ar/reference/engines/table-engines/special/distributed) المقابل.

**مثال**

الاستعلام:

```sql theme={null}
CREATE TABLE x AS system.numbers ENGINE = MergeTree ORDER BY number;
CREATE TABLE x_dist AS x ENGINE = Distributed('test_cluster_two_shards_localhost', currentDatabase(), x);
INSERT INTO x_dist SELECT * FROM numbers(5) SETTINGS insert_shard_id = 1;
SELECT * FROM x_dist ORDER BY number ASC;
```

النتيجة:

```text theme={null}
┌─number─┐
│      0 │
│      0 │
│      1 │
│      1 │
│      2 │
│      2 │
│      3 │
│      3 │
│      4 │
│      4 │
└────────┘
```

<div id="interactive_delay">
  ## interactive\_delay
</div>

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

الفاصل الزمني، بالميكروثانية، للتحقق مما إذا كان تنفيذ الطلب قد أُلغي ولإرسال معلومات التقدّم.

<div id="intersect_default_mode">
  ## intersect\_default\_mode
</div>

<SettingsInfoBlock type="SetOperationMode" default_value="ALL" />

يحدد الوضع الافتراضي في استعلام INTERSECT. القيم الممكنة: سلسلة فارغة، 'ALL'، 'DISTINCT'. إذا كانت فارغة، فسيؤدي الاستعلام بدون وضع إلى طرح استثناء.

<div id="jemalloc_collect_profile_samples_in_trace_log">
  ## jemalloc\_collect\_profile\_samples\_in\_trace\_log
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.9"},{"label": "0"},{"label": "إعداد جديد"}]}]} />

يجمع عينات التخصيص وإلغاء التخصيص الخاصة بـ jemalloc في سجل التتبّع.

<div id="jemalloc_enable_profiler">
  ## jemalloc\_enable\_profiler
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.9"},{"label": "0"},{"label": "إعداد جديد"}]}]} />

يُفعِّل Profiler الخاص بـ jemalloc للاستعلام. سيأخذ jemalloc عينات من التخصيصات وجميع عمليات إلغاء التخصيص المرتبطة بالتخصيصات التي أُخذت منها عينات.
يمكن تفريغ بيانات Profiler باستخدام SYSTEM JEMALLOC FLUSH PROFILE، ويمكن استخدام ذلك لتحليل التخصيصات.
يمكن أيضًا تخزين العينات في system.trace\_log باستخدام الإعداد jemalloc\_collect\_global\_profile\_samples\_in\_trace\_log أو إعداد الاستعلام jemalloc\_collect\_profile\_samples\_in\_trace\_log.
راجع [تحليل التخصيصات](/ar/concepts/features/performance/allocation-profiling)

<div id="jemalloc_profile_text_collapsed_use_count">
  ## jemalloc\_profile\_text\_collapsed\_use\_count
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "0"},{"label": "إعداد جديد للتجميع حسب عدد التخصيصات بدلًا من البايتات في صيغة collapsed لملف heap profile في jemalloc"}]}]} />

عند استخدام صيغة الإخراج 'collapsed' لملف heap profile في jemalloc، يُجرى التجميع حسب عدد التخصيصات بدلًا من البايتات. وعندما تكون القيمة false (الافتراضية)، يُوزَن كل مكدس بحسب البايتات الحية؛ وعندما تكون true، يُوزَن بحسب عدد التخصيصات الحية.

<div id="jemalloc_profile_text_output_format">
  ## jemalloc\_profile\_text\_output\_format
</div>

<SettingsInfoBlock type="JemallocProfileFormat" default_value="collapsed" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "collapsed"},{"label": "إعداد جديد للتحكم في تنسيق الإخراج لجدول system.jemalloc_profile_text. القيم الممكنة: 'raw'، 'symbolized'، 'collapsed'"}]}]} />

تنسيق الإخراج لملف heap profile الخاص بـ jemalloc في جدول system.jemalloc\_profile\_text. يمكن أن يكون: 'raw' (ملف تعريف خام)، أو 'symbolized' (تنسيق jeprof مع الرموز)، أو 'collapsed' (تنسيق FlameGraph).

<div id="jemalloc_profile_text_symbolize_with_inline">
  ## jemalloc\_profile\_text\_symbolize\_with\_inline
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "1"},{"label": "إعداد جديد للتحكم في ما إذا كان سيتم تضمين الإطارات المضمّنة عند إجراء symbolization لـ heap profile في jemalloc. عند التمكين، تُضمَّن الإطارات المضمّنة، لكن ذلك يكون على حساب إبطاء عملية symbolization؛ وعند التعطيل، يتم تخطيها للحصول على مخرجات أسرع"}]}]} />

ما إذا كان يجب تضمين الإطارات المضمّنة عند إجراء symbolization لـ heap profile في jemalloc. عند التمكين، تُضمَّن الإطارات المضمّنة، مما قد يبطئ عملية symbolization بشكل كبير؛ وعند التعطيل، يتم تخطيها. يؤثر ذلك فقط في تنسيقات الإخراج 'symbolized' و 'collapsed'.

<div id="join_algorithm">
  ## join\_algorithm
</div>

<SettingsInfoBlock type="JoinAlgorithm" default_value="direct,parallel_hash,hash" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.12"},{"label": "direct,parallel_hash,hash"},{"label": "أُوقفت القيمة 'default' لصالح التحديد الصريح لخوارزميات join، كما أصبح parallel_hash مفضّلًا الآن على hash"}]}]} />

يحدّد خوارزمية [JOIN](/ar/reference/statements/select/join) المستخدمة.

يمكن تحديد عدة خوارزميات، ويُختار منها ما هو مناسب للاستعلام المعني وفقًا لـ kind/صرامة وtable engine.

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

* grace\_hash

تُستخدم [Grace hash join](https://en.wikipedia.org/wiki/Hash_join#Grace_hash_join). توفّر Grace hash خيار خوارزمية يتيح تنفيذ joins معقّدة بكفاءة عالية مع الحد من استهلاك الذاكرة.

في المرحلة الأولى من grace join، يُقرأ الجدول الأيمن ويُقسَّم إلى N buckets بحسب hash value الخاصة بـ key columns (وتكون N في البداية هي `grace_hash_join_initial_buckets`). ويُنفَّذ ذلك بطريقة تضمن إمكانية معالجة كل bucket بصورة مستقلة. تُضاف rows من bucket الأول إلى hash table في الذاكرة، بينما تُحفَظ buckets الأخرى على disk. وإذا نما hash table متجاوزًا memory limit (على سبيل المثال كما هو محدد بواسطة [`max_bytes_in_join`](/ar/reference/settings/session-settings#max_bytes_in_join))، فسيُزاد عدد buckets وكذلك bucket المخصّص لكل row. وتُفرَّغ أي rows لا تنتمي إلى bucket الحالي وتُعاد إعادة إسنادها.

يدعم `INNER/LEFT/RIGHT/FULL ALL/ANY JOIN`.

* hash

تُستخدم [Hash join algorithm](https://en.wikipedia.org/wiki/Hash_join). وهي أكثر التنفيذات عمومية، إذ تدعم جميع تركيبات kind وصرامة، بالإضافة إلى عدة join keys مدمجة باستخدام `OR` في قسم `JOIN ON`.

عند استخدام خوارزمية `hash`، يُحمَّل الجزء الأيمن من `JOIN` إلى RAM.

* parallel\_hash

شكل مختلف من `hash` join يقسّم البيانات إلى buckets ويبني عدة hashtables بدلًا من جدول واحد بالتوازي لتسريع هذه العملية.

عند استخدام خوارزمية `parallel_hash`، يُحمَّل الجزء الأيمن من `JOIN` إلى RAM.

* partial\_merge

شكل مختلف من [sort-merge algorithm](https://en.wikipedia.org/wiki/Sort-merge_join)، حيث يُفرَز الجدول الأيمن بالكامل فقط.

لا يُدعَم `RIGHT JOIN` و`FULL JOIN` إلا مع صرامة من النوع `ALL` (`SEMI` و`ANTI` و`ANY` و`ASOF` غير مدعومة).

عند استخدام خوارزمية `partial_merge`، يقوم ClickHouse بفرز البيانات وتفريغها إلى disk. تختلف خوارزمية `partial_merge` في ClickHouse قليلًا عن التنفيذ التقليدي. أولًا، يفرز ClickHouse الجدول الأيمن حسب join keys على شكل blocks، ويُنشئ min-max index للـ blocks المرتبة. ثم يفرز أجزاءً من الجدول الأيسر حسب `join key` ويُجري join عليها مع الجدول الأيمن. ويُستخدم min-max index أيضًا لتخطي blocks غير اللازمة من الجدول الأيمن.

* direct

تُجري خوارزمية `direct` (المعروفة أيضًا باسم nested loop) عملية lookup في الجدول الأيمن باستخدام rows من الجدول الأيسر بوصفها keys.
وهي مدعومة من storages خاصة مثل [Dictionary](/ar/reference/engines/table-engines/special/dictionary) و[EmbeddedRocksDB](/ar/reference/engines/table-engines/integrations/embedded-rocksdb) و[MergeTree](/ar/reference/engines/table-engines/mergetree-family/mergetree) tables.

بالنسبة إلى MergeTree tables، تدفع الخوارزمية مرشحات join key مباشرةً إلى storage layer. ويمكن أن يكون ذلك أكثر كفاءة عندما يمكن للمفتاح استخدام primary key index الخاص بالجدول في عمليات lookup، وإلا فإنها تُجري full scans للجدول الأيمن لكل left table block.

يدعم `INNER` و`LEFT` joins، كما يدعم فقط مفاتيح join قائمة على المساواة لعمود واحد ومن دون شروط أخرى.

* auto

عند ضبطها على `auto`، تتم تجربة `hash` join أولًا، ثم تُبدَّل الخوارزمية أثناء التنفيذ إلى خوارزمية أخرى إذا جرى تجاوز memory limit.

* full\_sorting\_merge

تُستخدم [Sort-merge algorithm](https://en.wikipedia.org/wiki/Sort-merge_join) مع فرز كامل للجداول المنضمّة قبل تنفيذ join.

* prefer\_partial\_merge

يحاول ClickHouse دائمًا استخدام `partial_merge` join إن أمكن، وإلا فإنه يستخدم `hash`. هذا الخيار *Deprecated*، وهو مماثل لـ `partial_merge,hash`.

* default (deprecated)

قيمة قديمة، يُرجى عدم استخدامها بعد الآن.
وهي مماثلة لـ `direct,hash`، أي محاولة استخدام direct join ثم hash join (بهذا الترتيب).

<div id="join_any_take_last_row">
  ## join\_any\_take\_last\_row
</div>

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

يغيّر سلوك عمليات `JOIN` ذات الصرامة `ANY`.

<Note>
  ينطبق هذا الإعداد فقط على عمليات `JOIN` مع جداول محرك [Join](/ar/reference/engines/table-engines/special/join).
</Note>

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

* 0 — إذا كان الجدول الأيمن يحتوي على أكثر من صف مطابق واحد، فسيُضم أول صف يتم العثور عليه فقط.
* 1 — إذا كان الجدول الأيمن يحتوي على أكثر من صف مطابق واحد، فسيُضم آخر صف يتم العثور عليه فقط.

انظر أيضًا:

* [عبارة JOIN](/ar/reference/statements/select/join)
* [محرك الجدول Join](/ar/reference/engines/table-engines/special/join)
* [join\_default\_strictness](#join_default_strictness)

<div id="join_default_strictness">
  ## join\_default\_strictness
</div>

<SettingsInfoBlock type="JoinStrictness" default_value="ALL" />

يضبط الصرامة الافتراضية لـ [عبارات JOIN](/ar/reference/statements/select/join).

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

* `ALL` — إذا كان الجدول الأيمن يحتوي على عدة صفوف متطابقة، يُنشئ ClickHouse [الجداء الديكارتي](https://en.wikipedia.org/wiki/Cartesian_product) من الصفوف المتطابقة. هذا هو سلوك `JOIN` المعتاد في SQL القياسية.
* `ANY` — إذا كان الجدول الأيمن يحتوي على عدة صفوف متطابقة، فلا يُضمّ إلا أول صف يتم العثور عليه. وإذا كان الجدول الأيمن يحتوي على صف متطابق واحد فقط، فستكون نتائج `ANY` و`ALL` متطابقة.
* `ASOF` — لربط التسلسلات التي تكون المطابقة فيها غير مؤكدة.
* `Empty string` — إذا لم يتم تحديد `ALL` أو `ANY` في الاستعلام، فسيُصدر ClickHouse استثناءً.

<div id="join_on_disk_max_files_to_merge">
  ## join\_on\_disk\_max\_files\_to\_merge
</div>

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

يحدّ من عدد الملفات المسموح به للفرز المتوازي في عمليات MergeJoin عند تنفيذها على القرص.

كلما زادت قيمة هذا الإعداد، زاد استخدام RAM وقلّت الحاجة إلى عمليات الإدخال/الإخراج على القرص.

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

* أي عدد صحيح موجب يبدأ من 2.

<div id="join_output_by_rowlist_perkey_rows_threshold">
  ## join\_output\_by\_rowlist\_perkey\_rows\_threshold
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.9"},{"label": "5"},{"label": "الحد الأدنى لمتوسط عدد الصفوف لكل مفتاح في الجدول الأيمن لتحديد ما إذا كان سيتم الإخراج باستخدام قائمة الصفوف في hash join."}]}]} />

الحد الأدنى لمتوسط عدد الصفوف لكل مفتاح في الجدول الأيمن لتحديد ما إذا كان سيتم الإخراج باستخدام قائمة الصفوف في hash join.

<div id="join_overflow_mode">
  ## join\_overflow\_mode
</div>

<SettingsInfoBlock type="OverflowMode" default_value="throw" />

يحدّد هذا الإعداد الإجراء الذي ينفّذه ClickHouse عندما تصل عملية `join` إلى أيٍّ من الحدود التالية:

* [max\_bytes\_in\_join](/ar/reference/settings/session-settings#max_bytes_in_join)
* [max\_rows\_in\_join](/ar/reference/settings/session-settings#max_rows_in_join)

لا يُراعى هذا الإعداد إلا مع قيم [`join_algorithm`](/ar/reference/settings/session-settings#join_algorithm) من النوعين `hash` و`parallel_hash`. أما الخوارزميات الأخرى (على سبيل المثال، `partial_merge` و`grace_hash` و`auto`) فتتعامل مع هذه الحدود بطريقة مختلفة — مثل الكتابة إلى القرص، أو إعادة التقسيم، أو تبديل الاستراتيجية — راجع [`join_algorithm`](/ar/reference/settings/session-settings#join_algorithm).

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

* `THROW` — يُطلق ClickHouse استثناءً ويوقف الاستعلام.
* `BREAK` — يوقف ClickHouse الاستعلام ولا يُطلق استثناءً.

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

**راجع أيضًا**

* [عبارة JOIN](/ar/reference/statements/select/join)
* [محرك جدول Join](/ar/reference/engines/table-engines/special/join)

<div id="join_runtime_bloom_filter_bytes">
  ## join\_runtime\_bloom\_filter\_bytes
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.10"},{"label": "524288"},{"label": "إعداد جديد"}]}]} />

حجم مرشح bloom، بالبايتات، المستخدم كمرشح وقت التشغيل لعملية JOIN (راجع الإعداد enable\_join\_runtime\_filters).

<div id="join_runtime_bloom_filter_hash_functions">
  ## join\_runtime\_bloom\_filter\_hash\_functions
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.10"},{"label": "3"},{"label": "إعداد جديد"}]}]} />

عدد دوال التجزئة في مرشح bloom المستخدم كـ مرشح وقت التشغيل لعملية JOIN (راجع الإعداد enable\_join\_runtime\_filters).

<div id="join_runtime_bloom_filter_max_ratio_of_set_bits">
  ## join\_runtime\_bloom\_filter\_max\_ratio\_of\_set\_bits
</div>

<SettingsInfoBlock type="Double" default_value="0.7" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.1"},{"label": "0.7"},{"label": "إعداد جديد"}]}]} />

إذا تجاوز عدد البتات المضبوطة في مرشح Bloom وقت التشغيل هذه النسبة، فسيُعطَّل المرشح بالكامل لتقليل الحمل الإضافي.

<div id="join_runtime_filter_blocks_to_skip_before_reenabling">
  ## join\_runtime\_filter\_blocks\_to\_skip\_before\_reenabling
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.1"},{"label": "30"},{"label": "إعداد جديد"}]}]} />

عدد الكتل التي يتم تخطيها قبل محاولة إعادة تفعيل مرشح وقت التشغيل ديناميكيًا، بعد أن كان قد عُطِّل سابقًا بسبب انخفاض نسبة التصفية.

<div id="join_runtime_filter_exact_values_limit">
  ## join\_runtime\_filter\_exact\_values\_limit
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.10"},{"label": "10000"},{"label": "إعداد جديد"}]}]} />

الحد الأقصى لعدد العناصر في مرشّح وقت التشغيل التي تُخزَّن كما هي في مجموعة. عند تجاوز هذه العتبة، يتم التحويل إلى مرشح bloom.

<div id="join_runtime_filter_from_fixed_hash_table">
  ## join\_runtime\_filter\_from\_fixed\_hash\_table
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.6"},{"label": "1"},{"label": "إعداد جديد."}]}]} />

عندما يُحوَّل جانب البناء في `hash join` إلى `FixedHashMap` (راجع `enable_join_fixed_hash_table_conversion`)، استخدم خريطة التجزئة هذه مباشرةً كمرشح وقت التشغيل.

<div id="join_runtime_filter_pass_ratio_threshold_for_disabling">
  ## join\_runtime\_filter\_pass\_ratio\_threshold\_for\_disabling
</div>

<SettingsInfoBlock type="Double" default_value="0.7" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.1"},{"label": "0.7"},{"label": "إعداد جديد"}]}]} />

إذا كانت نسبة الصفوف المارة إلى الصفوف التي تم التحقق منها أكبر من هذه العتبة، فسيُعتبر مرشح وقت التشغيل ضعيف الأداء، ويُعطَّل خلال كتل `join_runtime_filter_blocks_to_skip_before_reenabling` التالية لتقليل الكلفة الإضافية.

<div id="join_to_sort_maximum_table_rows">
  ## join\_to\_sort\_maximum\_table\_rows
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.9"},{"label": "10000"},{"label": "الحد الأقصى لعدد الصفوف في الجدول الأيمن لتحديد ما إذا كان ينبغي إعادة ترتيب الجدول الأيمن حسب المفتاح في حالة left or inner join"}]}]} />

الحد الأقصى لعدد الصفوف في الجدول الأيمن لتحديد ما إذا كان ينبغي إعادة ترتيب الجدول الأيمن حسب المفتاح في حالة left or inner join.

<div id="join_to_sort_minimum_perkey_rows">
  ## join\_to\_sort\_minimum\_perkey\_rows
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.9"},{"label": "40"},{"label": "الحد الأدنى لمتوسط عدد الصفوف لكل مفتاح في الجدول الأيمن لتحديد ما إذا كان ينبغي إعادة ترتيب الجدول الأيمن حسب المفتاح في LEFT JOIN أو INNER JOIN. يضمن هذا الإعداد عدم تطبيق هذا التحسين على مفاتيح الجداول المتناثرة"}]}]} />

الحد الأدنى لمتوسط عدد الصفوف لكل مفتاح في الجدول الأيمن لتحديد ما إذا كان ينبغي إعادة ترتيب الجدول الأيمن حسب المفتاح في LEFT JOIN أو INNER JOIN. يضمن هذا الإعداد عدم تطبيق هذا التحسين على مفاتيح الجداول المتناثرة

<div id="join_use_nulls">
  ## join\_use\_nulls
</div>

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

يحدّد هذا الإعداد سلوك [JOIN](/ar/reference/statements/select/join). عند دمج الجداول، قد تظهر خلايا فارغة. ويقوم ClickHouse بملئها بطرق مختلفة وفقًا لهذا الإعداد.

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

* 0 — تُملأ الخلايا الفارغة بالقيمة الافتراضية لنوع الحقل المقابل.
* 1 — يتصرف `JOIN` بالطريقة نفسها المتّبعة في SQL القياسي. ويُحوَّل نوع الحقل المقابل إلى [Nullable](/ar/reference/data-types/nullable)، وتُملأ الخلايا الفارغة بـ [NULL](/ar/reference/syntax).

<div id="joined_block_split_single_row">
  ## joined\_block\_split\_single\_row
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.10"},{"label": "0"},{"label": "إعداد جديد"}]}]} />

يسمح بتقسيم نتيجة `hash join` إلى أجزاء بحسب الصفوف المرتبطة بصف واحد من الجدول الأيسر.
قد يقلل ذلك من استخدام الذاكرة عندما يكون هناك صف له عدد كبير من المطابقات في الجدول الأيمن، لكنه قد يزيد من استخدام CPU.
لاحظ أن `max_joined_block_size_rows != 0` شرط إلزامي لكي يكون لهذا الإعداد أي تأثير.
كما يساعد `max_joined_block_size_bytes` مع هذا الإعداد على تجنب الاستخدام المفرط للذاكرة في حالات البيانات غير المتوازنة، حيث تحتوي بعض الصفوف الكبيرة على عدد كبير من المطابقات في الجدول الأيمن.

<div id="joined_subquery_requires_alias">
  ## joined\_subquery\_requires\_alias
</div>

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

يفرض استخدام أسماء مستعارة للاستعلامات الفرعية في عمليات join ولدوال الجداول لضمان تأهيل الأسماء بشكل صحيح.

<div id="kafka_disable_num_consumers_limit">
  ## kafka\_disable\_num\_consumers\_limit
</div>

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

يعطّل الحد المفروض على `kafka_num_consumers` والمعتمد على عدد نوى CPU المتاحة.

<div id="kafka_max_wait_ms">
  ## kafka\_max\_wait\_ms
</div>

<SettingsInfoBlock type="Milliseconds" default_value="5000" />

مدة الانتظار، بالمللي ثانية، لقراءة الرسائل من [Kafka](/ar/reference/engines/table-engines/integrations/kafka) قبل إعادة المحاولة.

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

* عدد صحيح موجب.
* 0 — مهلة غير محدودة.

انظر أيضًا:

* [Apache Kafka](https://kafka.apache.org/)

<div id="keeper_map_strict_mode">
  ## keeper\_map\_strict\_mode
</div>

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

يفرض عمليات تحقّق إضافية أثناء تنفيذ العمليات على KeeperMap. على سبيل المثال، يُطلِق استثناءً عند تنفيذ `insert` لمفتاح موجود مسبقًا

<div id="keeper_max_retries">
  ## keeper\_max\_retries
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "10"},{"label": "الحد الأقصى لمرات إعادة المحاولة لعمليات Keeper العامة"}]}]} />

الحد الأقصى لمرات إعادة المحاولة لعمليات Keeper العامة

<div id="keeper_retry_initial_backoff_ms">
  ## keeper\_retry\_initial\_backoff\_ms
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "100"},{"label": "مهلة التراجع الأولي لعمليات Keeper العامة"}]}]} />

مهلة التراجع الأولي لعمليات Keeper العامة

<div id="keeper_retry_max_backoff_ms">
  ## keeper\_retry\_max\_backoff\_ms
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "5000"},{"label": "أقصى مهلة تراجع لعمليات Keeper العامة"}]}]} />

أقصى مهلة تراجع لعمليات Keeper العامة

<div id="least_greatest_legacy_null_behavior">
  ## least\_greatest\_legacy\_null\_behavior
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.12"},{"label": "0"},{"label": "إعداد جديد"}]}]} />

إذا كان مُمكّنًا، تُرجِع الدالتان 'least' و 'greatest' القيمة NULL إذا كانت إحدى وسيطاتهما NULL.

<div id="legacy_column_name_of_tuple_literal">
  ## legacy\_column\_name\_of\_tuple\_literal
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "21.7"},{"label": "0"},{"label": "أُضيف هذا الإعداد لأسباب التوافق فقط. ومن المنطقي ضبطه على 'true' أثناء إجراء تحديث متدرج للعنقود من إصدار أقل من 21.7 إلى إصدار أعلى"}]}]} />

استخدم جميع أسماء عناصر قيم Tuple الحرفية الكبيرة في أسماء الأعمدة بدلًا من التجزئة. هذا الإعداد موجود فقط لأسباب التوافق. ومن المنطقي ضبطه على 'true' أثناء إجراء تحديث متدرج للعنقود من إصدار أقل من 21.7 إلى إصدار أعلى.

<div id="lightweight_delete_mode">
  ## lightweight\_delete\_mode
</div>

<SettingsInfoBlock type="LightweightDeleteMode" default_value="alter_update" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "alter_update"},{"label": "إعداد جديد"}]}]} />

وضع لاستعلام التحديث الداخلي الذي يُنفَّذ كجزء من الحذف خفيف الوزن.

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

* `alter_update` - شغّل استعلام `ALTER UPDATE` الذي ينشئ mutation كثيفة الوزن.
* `lightweight_update` - شغّل تحديثًا خفيف الوزن إن أمكن، وإلا فشغّل `ALTER UPDATE`.
* `lightweight_update_force` - شغّل تحديثًا خفيف الوزن إن أمكن، وإلا فارفع استثناءً.

<div id="lightweight_deletes_sync">
  ## lightweight\_deletes\_sync
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.4"},{"label": "2"},{"label": "مماثل لـ 'mutation_sync'، لكنه يتحكم فقط في تنفيذ عمليات الحذف الخفيف"}]}]} />

مماثل لـ [`mutations_sync`](#mutations_sync)، لكنه يتحكم فقط في تنفيذ عمليات الحذف الخفيف.

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

| القيمة | الوصف                                                                                                                                                                                  |
| ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `0`    | تُنفَّذ عمليات mutation بشكل غير متزامن.                                                                                                                                               |
| `1`    | ينتظر الاستعلام حتى تكتمل عمليات الحذف الخفيف على الخادم الحالي.                                                                                                                       |
| `2`    | ينتظر الاستعلام حتى تكتمل عمليات الحذف الخفيف على جميع النسخ المتماثلة (إن وُجدت).                                                                                                     |
| `3`    | ينتظر الاستعلام اكتمالها على النسخ المتماثلة النشطة فقط. وهو مدعوم فقط لـ `SharedMergeTree`. أما بالنسبة إلى `ReplicatedMergeTree`، فيتصرف بالطريقة نفسها كما في `mutations_sync = 2`. |

**انظر أيضًا**

* [تزامن استعلامات ALTER](/ar/reference/statements/alter/index#synchronicity-of-alter-queries)
* [Mutations](/ar/reference/statements/alter/index#mutations)

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

<div id="limit">
  ## limit
</div>

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

يحدّد الحد الأقصى لعدد الصفوف التي يمكن جلبها من نتيجة الاستعلام. ويضبط القيمة التي تحددها العبارة [LIMIT](/ar/reference/statements/select/limit)، بحيث لا يمكن أن يتجاوز الحد المحدد في الاستعلام الحد الذي يفرضه هذا الإعداد.

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

* 0 — عدد الصفوف غير مقيّد.
* عدد صحيح موجب.

<div id="load_balancing">
  ## load\_balancing
</div>

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

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

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

* [Random](#load_balancing-random) (افتراضيًا)
* [Nearest hostname](#load_balancing-nearest_hostname)
* [Hostname levenshtein distance](#load_balancing-hostname_levenshtein_distance)
* [Hostname longest common prefix](#load_balancing-hostname_longest_common_prefix)
* [Hostname longest common suffix](#load_balancing-hostname_longest_common_suffix)
* [In order](#load_balancing-in_order)
* [First or random](#load_balancing-first_or_random)
* [Round robin](#load_balancing-round_robin)

انظر أيضًا:

* [distributed\_replica\_max\_ignored\_errors](#distributed_replica_max_ignored_errors)

<div id="load_balancing-random">
  ### 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`، لكنه يقارن اسم المضيف بناءً على [مسافة Levenshtein](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` لأنه يطابق أطول لاحقة مشتركة (`.qc.localdomain`، بطول 15) مع `et46gtghn.qc.localdomain`.

تُختار النُسخ المتماثلة ذات اللاحقة المشتركة المتساوية في الطول عشوائيًا. وعلى وجه الخصوص، عندما لا تتشارك أي نسخة متماثلة أي لاحقة مع اسم المضيف المحلي (أي عندما تكون جميع أطوال اللواحق المشتركة صفرًا)، فإن هذه الاستراتيجية تعمل تمامًا مثل `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" />

إلى أي نسخة متماثلة يُفضَّل إرسال الاستعلام عند استخدام استراتيجية موازنة الحمل FIRST\_OR\_RANDOM.

<div id="load_marks_asynchronously">
  ## load\_marks\_asynchronously
</div>

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

تحميل علامات MergeTree بصورة غير متزامنة

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

<div id="local_filesystem_read_method">
  ## local\_filesystem\_read\_method
</div>

<SettingsInfoBlock type="String" default_value="pread_threadpool" />

طريقة قراءة البيانات من نظام الملفات المحلي، وهي إحدى الطرق التالية: read، pread، mmap، io\_uring، pread\_threadpool.

الطريقة 'io\_uring' تجريبية، ولا تعمل مع Log وTinyLog وStripeLog وFile وSet وJoin، ولا مع الجداول الأخرى ذات الملفات القابلة للإلحاق عند وجود عمليات قراءة وكتابة متزامنة.
إذا قرأت مقالات مختلفة عن 'io\_uring' على الإنترنت، فلا تنخدع بها. فهي ليست طريقة أفضل لقراءة الملفات، إلا في حالة وجود عدد كبير من طلبات IO الصغيرة، وهذا ليس هو الحال في ClickHouse. ولا توجد أي أسباب تدعو إلى تمكين 'io\_uring'.

<div id="local_filesystem_read_prefetch">
  ## local\_filesystem\_read\_prefetch
</div>

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

يُستخدم الجلب المسبق عند قراءة البيانات من نظام الملفات المحلي.

<div id="lock_acquire_timeout">
  ## lock\_acquire\_timeout
</div>

<SettingsInfoBlock type="ثوانٍ" default_value="120" />

يحدّد عدد الثواني التي ينتظرها طلب القفل قبل أن يفشل.

تُستخدم مهلة القفل للحماية من حالات الجمود أثناء تنفيذ عمليات القراءة/الكتابة على الجداول. وعند انتهاء المهلة وفشل طلب القفل، يطرح خادم ClickHouse الاستثناء "Locking attempt timed out! Possible deadlock avoided. Client should retry." مع رمز الخطأ `DEADLOCK_AVOIDED`.

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

* عدد صحيح موجب (بالثواني).
* 0 — لا توجد مهلة للقفل.

<div id="log_comment">
  ## log\_comment
</div>

يحدّد قيمة الحقل `log_comment` في جدول [system.query\_log](/ar/reference/system-tables/query_log)، وكذلك نص التعليق في سجل الخادم.

يمكن استخدامه لتحسين سهولة قراءة سجلات الخادم. بالإضافة إلى ذلك، يساعد في تحديد الاستعلامات المرتبطة بالاختبار من `system.query_log` بعد تشغيل [clickhouse-test](/ar/resources/develop-contribute/contribute/tests).

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

* أي سلسلة نصية لا يزيد طولها عن [max\_query\_size](#max_query_size). إذا تم تجاوز max\_query\_size، فإن الخادم يُطلق استثناءً.

**مثال**

الاستعلام:

```sql theme={null}
SET log_comment = 'log_comment test', log_queries = 1;
SELECT 1;
SYSTEM FLUSH LOGS;
SELECT type, query FROM system.query_log WHERE log_comment = 'log_comment test' AND event_date >= yesterday() ORDER BY event_time DESC LIMIT 2;
```

النتيجة:

```text theme={null}
┌─type────────┬─query─────┐
│ QueryStart  │ SELECT 1; │
│ QueryFinish │ SELECT 1; │
└─────────────┴───────────┘
```

<div id="log_formatted_queries">
  ## log\_formatted\_queries
</div>

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

يتيح تسجيل الاستعلامات المنسَّقة في جدول النظام [system.query\_log](/ar/reference/system-tables/query_log) (ويعبّئ العمود `formatted_query` في [system.query\_log](/ar/reference/system-tables/query_log)).

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

* 0 — لا تُسجَّل الاستعلامات المنسَّقة في جدول النظام.
* 1 — تُسجَّل الاستعلامات المنسَّقة في جدول النظام.

<div id="log_processors_profiles">
  ## log\_processors\_profiles
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "1"},{"label": "مُمكّن افتراضيًا"}]}]} />

يكتب الوقت الذي قضاه المعالج أثناء التنفيذ/انتظار البيانات في الجدول `system.processors_profile_log`.

انظر أيضًا:

* [`system.processors_profile_log`](/ar/reference/system-tables/processors_profile_log)
* [`EXPLAIN PIPELINE`](/ar/reference/statements/explain#explain-pipeline)

<div id="log_profile_events">
  ## log\_profile\_events
</div>

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

يسجّل إحصاءات أداء الاستعلام في query\_log وquery\_thread\_log وquery\_views\_log.

<div id="log_queries">
  ## log\_queries
</div>

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

إعداد لتسجيل الاستعلامات.

تُسجَّل الاستعلامات المُرسلة إلى ClickHouse باستخدام هذا الإعداد وفقًا للقواعد المحددة في معلَمة تكوين الخادم [query\_log](/ar/reference/settings/server-settings/settings#query_log).

مثال:

```text theme={null}
log_queries=1
```

<div id="log_queries_cut_to_length">
  ## log\_queries\_cut\_to\_length
</div>

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

إذا كان طول الاستعلام أكبر من عتبة محددة (بالبايت)، فسيُقتطع الاستعلام عند كتابته في سجل الاستعلامات. كما يُقيَّد أيضًا طول الاستعلام المطبوع في السجل النصي العادي.

<div id="log_queries_min_query_duration_ms">
  ## log\_queries\_min\_query\_duration\_ms
</div>

<SettingsInfoBlock type="مللي ثانية" default_value="0" />

إذا كان هذا الإعداد مفعّلًا (بقيمة غير صفرية)، فلن تُسَّجل الاستعلامات التي تكون أسرع من القيمة المحددة فيه (يمكنك اعتباره بمثابة `long_query_time` في [MySQL Slow Query Log](https://dev.mysql.com/doc/refman/5.7/slow-query-log.html))، وهذا يعني عمليًا أنك لن تجدها في الجداول التالية:

* `system.query_log`
* `system.query_thread_log`

لن تُسجَّل إلا الاستعلامات من النوع التالي:

* `QUERY_FINISH`

* `EXCEPTION_WHILE_PROCESSING`

* النوع: مللي ثانية

* القيمة الافتراضية: 0 (أي استعلام)

<div id="log_queries_min_type">
  ## log\_queries\_min\_type
</div>

<SettingsInfoBlock type="LogQueriesType" default_value="QUERY_START" />

النوع الأدنى الذي سيتم تسجيله في `query_log`.

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

* `QUERY_START` (`=1`)
* `QUERY_FINISH` (`=2`)
* `EXCEPTION_BEFORE_START` (`=3`)
* `EXCEPTION_WHILE_PROCESSING` (`=4`)

يمكن استخدامه لتقييد الكيانات التي ستُسجَّل في `query_log`؛ فإذا كنت مهتمًا بالأخطاء فقط، يمكنك استخدام `EXCEPTION_WHILE_PROCESSING`:

```text theme={null}
log_queries_min_type='EXCEPTION_WHILE_PROCESSING'
```

<div id="log_queries_probability">
  ## log\_queries\_probability
</div>

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

يسمح للمستخدم بتسجيل عيّنة فقط من الاستعلامات في جداول النظام [query\_log](/ar/reference/system-tables/query_log) و[query\_thread\_log](/ar/reference/system-tables/query_thread_log) و[query\_views\_log](/ar/reference/system-tables/query_views_log)، بحيث تُختار عشوائيًا وفق الاحتمال المحدد. ويساعد ذلك على تقليل الحمل عند وجود عدد كبير من الاستعلامات في الثانية.

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

* 0 — لا تُسجَّل الاستعلامات في جداول النظام.
* عدد موجب بفاصلة عائمة ضمن النطاق \[0..1]. على سبيل المثال، إذا كانت قيمة الإعداد `0.5`، فسيُسجَّل نحو نصف الاستعلامات في جداول النظام.
* 1 — تُسجَّل جميع الاستعلامات في جداول النظام.

<div id="log_query_settings">
  ## log\_query\_settings
</div>

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

يسجّل إعدادات الاستعلام في `query_log` وفي سجل span الخاص بـ OpenTelemetry.

<div id="log_query_threads">
  ## log\_query\_threads
</div>

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

إعداد لتسجيل خيوط تنفيذ الاستعلامات.

تُسجَّل خيوط تنفيذ الاستعلامات في جدول [system.query\_thread\_log](/ar/reference/system-tables/query_thread_log). لا يسري هذا الإعداد إلا عندما تكون قيمة [log\_queries](#log_queries) هي true. وتُسجَّل خيوط تنفيذ الاستعلامات التي يشغّلها ClickHouse باستخدام هذا الإعداد وفقًا للقواعد المحددة في مَعلَمة تهيئة الخادم [query\_thread\_log](/ar/reference/settings/server-settings/settings#query_thread_log).

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

* 0 — معطّل.
* 1 — مفعّل.

**مثال**

```text theme={null}
log_query_threads=1
```

<div id="log_query_views">
  ## log\_query\_views
</div>

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

إعداد تسجيل عروض الاستعلامات.

عندما يكون للاستعلام الذي ينفّذه ClickHouse، مع تفعيل هذا الإعداد، عروض مرتبطة (العروض المادية أو العروض الحية)، تُسجَّل هذه العروض في مَعلمة تهيئة الخادم [query\_views\_log](/ar/reference/settings/server-settings/settings#query_views_log).

مثال:

```text theme={null}
log_query_views=1
```

<div id="low_cardinality_allow_in_native_format">
  ## low\_cardinality\_allow\_in\_native\_format
</div>

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

يسمح هذا الإعداد باستخدام نوع البيانات [LowCardinality](/ar/reference/data-types/lowcardinality) مع تنسيق [Native](/ar/reference/formats/Native) أو يقيّد ذلك.

إذا كان استخدام `LowCardinality` مقيّدًا، فإن ClickHouse server يحوّل أعمدة `LowCardinality` إلى أعمدة عادية في استعلامات `SELECT`، ويحوّل الأعمدة العادية إلى أعمدة `LowCardinality` في استعلامات `INSERT`.

يكون هذا الإعداد مطلوبًا بشكل أساسي لبرامج client التابعة لجهات خارجية التي لا تدعم نوع البيانات `LowCardinality`.

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

* 1 — استخدام `LowCardinality` غير مقيّد.
* 0 — استخدام `LowCardinality` مقيّد.

<div id="low_cardinality_max_dictionary_size">
  ## low\_cardinality\_max\_dictionary\_size
</div>

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

يحدّد الحد الأقصى لحجم القاموس العام المشترك، بعدد الصفوف، لنوع البيانات [LowCardinality](/ar/reference/data-types/lowcardinality) الذي يمكن كتابته إلى نظام ملفات التخزين. يمنع هذا الإعداد حدوث مشكلات في RAM في حال نمو القاموس بلا حدود. وتكتب ClickHouse جميع البيانات التي يتعذر ترميزها بسبب تقييد الحد الأقصى لحجم القاموس بالطريقة العادية.

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

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

<div id="low_cardinality_use_single_dictionary_for_part">
  ## low\_cardinality\_use\_single\_dictionary\_for\_part
</div>

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

يؤدي إلى تشغيل أو إيقاف استخدام قاموس واحد لجزء البيانات.

بشكل افتراضي، يراقب خادم ClickHouse حجم القواميس، وإذا تجاوز أحدها سعته، يبدأ الخادم في كتابة القاموس التالي. ولمنع إنشاء عدة قواميس، اضبط `low_cardinality_use_single_dictionary_for_part = 1`.

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

* 1 — يُمنع إنشاء عدة قواميس لجزء البيانات.
* 0 — لا يُمنع إنشاء عدة قواميس لجزء البيانات.

<div id="low_priority_query_wait_time_ms">
  ## low\_priority\_query\_wait\_time\_ms
</div>

<SettingsInfoBlock type="مللي ثانية" default_value="1000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.4"},{"label": "1000"},{"label": "إعداد جديد."}]}]} />

عند استخدام آلية تحديد أولوية الاستعلامات (راجع الإعداد `priority`)، تنتظر الاستعلامات منخفضة الأولوية حتى تنتهي الاستعلامات ذات الأولوية الأعلى. يحدّد هذا الإعداد مدة الانتظار.

<div id="make_distributed_plan">
  ## make\_distributed\_plan
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "0"},{"label": "إعداد تجريبي جديد."}]}]} />

إنشاء خطة للاستعلامات الموزعة.

<div id="materialize_skip_indexes_on_insert">
  ## materialize\_skip\_indexes\_on\_insert
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.6"},{"label": "1"},{"label": "أُضيف إعداد جديد يتيح تعطيل إنشاء فهارس التجاوز وتخزينها عند INSERT"}]}]} />

يحدّد ما إذا كانت عمليات INSERT تُنشئ فهارس التجاوز وتُخزّنها. وإذا كان هذا الخيار معطّلًا، فلن تُنشأ فهارس التجاوز ولن تُخزَّن إلا [أثناء عمليات الدمج](/ar/reference/settings/merge-tree-settings#materialize_skip_indexes_on_merge) أو عبر [MATERIALIZE INDEX](/ar/reference/statements/alter/skipping-index#materialize-index) بشكل صريح.

انظر أيضًا [exclude\_materialize\_skip\_indexes\_on\_insert](#exclude_materialize_skip_indexes_on_insert).

<div id="materialize_statistics_on_insert">
  ## materialize\_statistics\_on\_insert
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "0"},{"label": "تعطيل إنشاء الإحصاءات عند INSERT افتراضيًا، والاعتماد بدلًا من ذلك على عمليات الدمج"}]}, {"id": "row-2","items": [{"label": "24.6"},{"label": "1"},{"label": "تمت إضافة إعداد جديد يتيح تعطيل إنشاء الإحصاءات فعليًا عند INSERT"}]}]} />

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

<div id="materialize_ttl_after_modify">
  ## materialize\_ttl\_after\_modify
</div>

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

تطبيق TTL على البيانات القديمة بعد تنفيذ استعلام ALTER MODIFY TTL

<div id="materialized_views_ignore_errors">
  ## materialized\_views\_ignore\_errors
</div>

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

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

يتحكم هذا الإعداد في الإبلاغ عن الأخطاء فقط. فهو لا يتسبب في التراجع عن الكتابة إلى الجدول المصدر، ولا يضمن ما إذا كانت الكتلة الأصلية قد تم commit لها بالفعل إلى الجدول المصدر عند حدوث خطأ في pipeline لعرض تابع. وعند تعطيله (وهو الوضع الافتراضي)، تفشل `INSERT` عند حدوث خطأ في عرض — أعد المحاولة باستخدام إزالة تكرار الإدراج (`insert_deduplicate`, `deduplicate_blocks_in_dependent_materialized_views`) لضمان التسليم مرة واحدة بالضبط إلى الجدول المصدر وجميع العروض التابعة. وعند تفعيله، تُبلّغ `INSERT` عن النجاح رغم التسليم الجزئي إلى العروض التي حدث فيها فشل والسلاسل اللاحقة التابعة لها؛ استخدم هذا فقط عندما يجب ألا تُحجَب عمليات الكتابة إلى الجدول المصدر بسبب مشكلات في جانب العرض (على سبيل المثال، جداول `system.*_log`). راجع وثائق `CREATE VIEW` للاطلاع على الدلالات الكاملة.

<div id="materialized_views_squash_parallel_inserts">
  ## materialized\_views\_squash\_parallel\_inserts
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.10"},{"label": "1"},{"label": "أُضيف هذا الإعداد للحفاظ على السلوك القديم عند الحاجة."}]}]} />

ادمج عمليات INSERT المتوازية الخاصة باستعلام INSERT واحد في الجدول الوجهة للعروض المادية لتقليل عدد الأجزاء المُنشأة.
إذا ضُبط هذا الإعداد على false وكان `parallel_view_processing` مُمكّنًا، فسيُنشئ استعلام INSERT جزءًا في الجدول الوجهة لكل `max_insert_thread`.

<div id="max_analyze_depth">
  ## max\_analyze\_depth
</div>

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

الحد الأقصى لعدد عمليات التحليل التي يُجريها المفسّر.

<div id="max_ast_depth">
  ## max\_ast\_depth
</div>

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

الحد الأقصى لعمق تداخل الشجرة النحوية للاستعلام. وإذا تم تجاوزه، يُرفَع استثناء.

<Note>
  في الوقت الحالي، لا يُتحقَّق من ذلك أثناء التحليل، بل فقط بعد تحليل الاستعلام.
  وهذا يعني أنه يمكن إنشاء شجرة نحوية عميقة جدًا أثناء التحليل،
  لكن الاستعلام سيفشل.
</Note>

<div id="max_ast_elements">
  ## max\_ast\_elements
</div>

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

الحد الأقصى لعدد العناصر في الشجرة النحوية للاستعلام. وإذا تم تجاوزه، فسيُطلق استثناء.

<Note>
  في الوقت الحالي، لا يتم التحقق منه أثناء التحليل، بل بعد تحليل الاستعلام فقط.
  وهذا يعني أنه يمكن إنشاء شجرة نحوية أعمق من اللازم أثناء التحليل،
  لكن الاستعلام سيفشل.
</Note>

<div id="max_autoincrement_series">
  ## max\_autoincrement\_series
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "1000"},{"label": "إعداد جديد"}]}]} />

الحد الأقصى لعدد السلاسل التي تنشئها الدالة `generateSerialID`.

وبما أن كل سلسلة تمثل عقدة في Keeper، يُوصى بألا يتجاوز عددها بضعة ملايين.

<div id="max_backup_bandwidth">
  ## max\_backup\_bandwidth
</div>

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

الحد الأقصى لسرعة القراءة، بالبايت في الثانية، لنسخة احتياطية معيّنة على الخادم. تعني القيمة صفر عدم وجود حد.

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

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

في ClickHouse، تُعالَج البيانات على شكل كتل، وهي مجموعات من أجزاء الأعمدة. وتكون دورات المعالجة الداخلية لكتلة واحدة فعّالة، لكن توجد تكاليف ملحوظة عند معالجة كل كتلة.

يشير الإعداد `max_block_size` إلى الحد الأقصى الموصى به لعدد الصفوف التي ينبغي تضمينها في كتلة واحدة عند تحميل البيانات من الجداول. ولا تُحمَّل كتل بحجم `max_block_size` دائمًا من الجدول: فإذا قرر ClickHouse أن هناك حاجة إلى استرجاع بيانات أقل، فستُعالَج كتلة أصغر.

يجب ألا يكون حجم الكتلة صغيرًا جدًا لتجنّب التكاليف الملحوظة عند معالجة كل كتلة. كما يجب ألا يكون كبيرًا جدًا لضمان تنفيذ الاستعلامات التي تحتوي على عبارة `LIMIT` بسرعة بعد معالجة الكتلة الأولى. عند ضبط `max_block_size`، ينبغي أن يكون الهدف هو تجنّب استهلاك قدر كبير من الذاكرة عند استخراج عدد كبير من الأعمدة باستخدام عدة خيوط، مع الحفاظ على قدرٍ ما على الأقل من محلية ذاكرة التخزين المؤقت.

<div id="max_bytes_before_external_group_by">
  ## max\_bytes\_before\_external\_group\_by
</div>

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

القيمة الافتراضية في Cloud: نصف مقدار الذاكرة لكل نسخة متماثلة.

يُفعّل أو يعطّل تنفيذ عبارات `GROUP BY` باستخدام الذاكرة الخارجية.
(راجع [GROUP BY in external memory](/ar/reference/statements/select/group-by#group-by-in-external-memory))

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

* الحد الأقصى لحجم RAM (بالبايت) الذي يمكن أن تستخدمه عملية [GROUP BY](/ar/reference/statements/select/group-by) واحدة.
* `0` — تعطيل `GROUP BY` في الذاكرة الخارجية.

<Note>
  إذا تجاوز استخدام الذاكرة أثناء عمليات GROUP BY هذه العتبة (بالبايت)،
  فسيتم تفعيل وضع «التجميع الخارجي» (كتابة البيانات المؤقتة إلى القرص).

  القيمة الموصى بها هي نصف ذاكرة النظام المتاحة.
</Note>

<div id="max_bytes_before_external_join">
  ## max\_bytes\_before\_external\_join
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "0"},{"label": "إعداد جديد للتحكم في التفريغ التلقائي لعمليات hash join إلى القرص. تؤدي القيمة غير الصفرية إلى تفعيل التفريغ وتحديد عتبة البايت."}]}]} />

إذا ضُبطت على قيمة غير صفرية وكان `join_algorithm` هو `hash` أو `parallel_hash` أو `default` أو `auto`، فسيتم تحويل hash join تلقائيًا إلى grace hash join لتمكين التفريغ إلى القرص عندما تتجاوز البيانات الموجودة في الجانب الأيمن هذا العدد من البايتات. وعند ضبطها على 0 (الافتراضي)، تُعطَّل عتبة البايت المطلقة هذه، لكن قد يظل التفريغ التلقائي يحدث عبر `max_bytes_ratio_before_external_join` (الذي تكون قيمته الافتراضية `0.5`)؛ اضبط كليهما على `0` لتعطيل التفريغ التلقائي بالكامل. ويمنع ذلك تحسين `read in order through join`.

<div id="max_bytes_before_external_sort">
  ## max\_bytes\_before\_external\_sort
</div>

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

القيمة الافتراضية في Cloud: نصف مقدار الذاكرة لكل نسخة متماثلة.

يؤدي إلى تمكين أو تعطيل تنفيذ عبارات `ORDER BY` في الذاكرة الخارجية. راجع [تفاصيل تنفيذ ORDER BY](/ar/reference/statements/select/order-by#implementation-details)
إذا تجاوز استخدام الذاكرة أثناء عملية `ORDER BY` هذه العتبة، محسوبًا بالبايتات، فسيتم تفعيل وضع "الفرز الخارجي" (كتابة البيانات إلى القرص).

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

* الحد الأقصى لحجم RAM (بالبايتات) الذي يمكن أن تستخدمه عملية [ORDER BY](/ar/reference/statements/select/order-by) واحدة.
  القيمة الموصى بها هي نصف ذاكرة النظام المتاحة
* `0` — تعطيل `ORDER BY` في الذاكرة الخارجية.

<div id="max_bytes_before_remerge_sort">
  ## max\_bytes\_before\_remerge\_sort
</div>

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

في حالة استخدام ORDER BY مع LIMIT، عندما يتجاوز استخدام الذاكرة العتبة المحددة، تُنفَّذ خطوات إضافية لدمج الكتل قبل الدمج النهائي للاحتفاظ فقط بأعلى عدد LIMIT من الصفوف.

<div id="max_bytes_for_lazy_final">
  ## max\_bytes\_for\_lazy\_final
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "256000000"},{"label": "إعداد جديد للحد الأقصى لعدد البايتات في المجموعة من أجل تحسين FINAL الكسول"}]}]} />

الحد الأقصى لعدد البايتات في المجموعة من أجل تحسين FINAL الكسول. وإذا تم تجاوزه، فسيجري الرجوع إلى FINAL العادي.

<div id="max_bytes_in_distinct">
  ## max\_bytes\_in\_distinct
</div>

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

الحد الأقصى لعدد البايتات الخاصة بالحالة (بالبايتات غير المضغوطة) في الذاكرة، والتي يستخدمها جدول التجزئة عند استخدام DISTINCT.

<div id="max_bytes_in_join">
  ## max\_bytes\_in\_join
</div>

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

الحد الأقصى للحجم بالبايت لبنية البيانات الموجودة على الجانب الأيمن (وعادةً ما تكون جدول تجزئة)
المستخدَمة عند ربط الجداول.

ينطبق هذا الإعداد على عمليات [SELECT ... JOIN](/ar/reference/statements/select/join)
وعلى [محرك الجدول Join](/ar/reference/engines/table-engines/special/join).

إذا كان الاستعلام يحتوي على عدة عمليات JOIN، فإن ClickHouse يتحقق من هذا الإعداد لكل
نتيجة وسيطة. وعند بلوغ الحد، يعتمد الإجراء على
[`join_algorithm`](/ar/reference/settings/session-settings#join_algorithm) المختار — راجع
ذلك الإعداد لمعرفة السلوك الخاص بكل خوارزمية (spill، أو إعادة التقسيم، أو التبديل، أو
throw/break وفقًا لـ [`join_overflow_mode`](/ar/reference/settings/session-settings#join_overflow_mode)).

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

* عدد صحيح موجب.
* 0 — يتم تعطيل التحكم في الذاكرة.

<div id="max_bytes_in_set">
  ## max\_bytes\_in\_set
</div>

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

الحد الأقصى لعدد البايتات (من البيانات غير المضغوطة) التي تستخدمها مجموعة في جملة IN
التي أُنشئت من استعلام فرعي.

<div id="max_bytes_ratio_before_external_group_by">
  ## max\_bytes\_ratio\_before\_external\_group\_by
</div>

<SettingsInfoBlock type="Double" default_value="0.5" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "0.5"},{"label": "تمكين التفريغ التلقائي إلى القرص افتراضيًا."}]}, {"id": "row-2","items": [{"label": "24.12"},{"label": "0"},{"label": "إعداد جديد."}]}]} />

النسبة من الذاكرة المتاحة المسموح باستخدامها مع `GROUP BY`. وعند بلوغ هذا الحد،
تُستخدم الذاكرة الخارجية للتجميع.

على سبيل المثال، إذا ضُبطت على `0.6`، فسيسمح `GROUP BY` باستخدام 60% من الذاكرة المتاحة
(`server`/`user`/`merges`) في بداية التنفيذ، وبعد ذلك سيبدأ
باستخدام التجميع الخارجي.

<div id="max_bytes_ratio_before_external_join">
  ## max\_bytes\_ratio\_before\_external\_join
</div>

<SettingsInfoBlock type="Double" default_value="0.5" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "0.5"},{"label": "إعداد جديد: نسبة الذاكرة المتاحة التي تُستخدم كعتبة للتفريغ إلى القرص في `hash joins`. تكون مفعّلة افتراضيًا عند `0.5`، بما يماثل `max_bytes_ratio_before_external_group_by` و`max_bytes_ratio_before_external_sort`. وتُستخدم مع `max_bytes_before_external_join` المطلق (ويُطبَّق الأصغر من القيمتين)."}]}]} />

نسبة الذاكرة المتاحة المسموح باستخدامها لـ `JOIN`. وعند الوصول إليها، سيُحوَّل `hash join` إلى `grace hash join` لتفريغ بيانات الجانب الأيمن إلى القرص.

على سبيل المثال، إذا ضُبطت على `0.6`، فسيسمح `JOIN` باستخدام `60%` من الذاكرة المتاحة (لـ server/user/merges) لجدول التجزئة الخاص بالجانب الأيمن في بداية التنفيذ؛ وبعد ذلك يبدأ التفريغ إلى القرص.

إذا كان كلٌّ من `max_bytes_before_external_join` و`max_bytes_ratio_before_external_join` مضبوطَين، فستُستخدم عتبة النتيجة الأصغر. وإذا كانت النسبة `0`، فلن يُطبَّق إلا الإعداد المطلق.

لا يكون له تأثير إلا عندما تكون قيمة `join_algorithm` هي `hash` أو `parallel_hash` أو `default` أو `auto`، وعندما يكون مسار بيانات مؤقت مُهيّأً.

<div id="max_bytes_ratio_before_external_sort">
  ## max\_bytes\_ratio\_before\_external\_sort
</div>

<SettingsInfoBlock type="Double" default_value="0.5" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "0.5"},{"label": "تمكين التفريغ التلقائي إلى القرص افتراضيًا."}]}, {"id": "row-2","items": [{"label": "24.12"},{"label": "0"},{"label": "إعداد جديد."}]}]} />

هي نسبة الذاكرة المتاحة المسموح باستخدامها مع `ORDER BY`. وعند بلوغها، يُستخدم الفرز الخارجي.

على سبيل المثال، إذا ضُبطت على `0.6`، فسيسمح `ORDER BY` باستخدام `60%` من الذاكرة المتاحة (على مستوى server/user/merges) في بداية التنفيذ، وبعد ذلك سيبدأ باستخدام الفرز الخارجي.

لاحظ أن `max_bytes_before_external_sort` يظل مُطبَّقًا، ولن يتم التفريغ إلى القرص إلا إذا كانت كتلة الفرز أكبر من `max_bytes_before_external_sort`.

<div id="max_bytes_to_read">
  ## max\_bytes\_to\_read
</div>

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

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

<div id="max_bytes_to_read_leaf">
  ## max\_bytes\_to\_read\_leaf
</div>

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

الحد الأقصى لعدد البايتات (من البيانات غير المضغوطة) التي يمكن قراءتها من
جدول محلي على عقدة طرفية عند تنفيذ استعلام موزع. ومع أن الاستعلامات الموزعة
قد ترسل عدة استعلامات فرعية إلى كل shard ‏(leaf)، فلن يُتحقق من هذا الحد
إلا في مرحلة القراءة على العقد الطرفية، وسيُتجاهل في مرحلة دمج النتائج على
العقدة الجذرية.

على سبيل المثال، يتكون الـ cluster من shardين، ويحتوي كل shard على جدول
فيه 100 بايت من البيانات. إن استعلامًا موزعًا من المفترض أن يقرأ جميع
البيانات من كلا الجدولين مع الإعداد `max_bytes_to_read=150` سيفشل لأن
الإجمالي سيكون 200 بايت. أما الاستعلام الذي يستخدم
`max_bytes_to_read_leaf=150` فسينجح لأن العقد الطرفية ستقرأ 100 بايت كحد
أقصى.

يُتحقق من هذا القيد لكل chunk من البيانات تتم معالجته.

<Note>
  هذا الإعداد غير مستقر مع `prefer_localhost_replica=1`.
</Note>

<div id="max_bytes_to_sort">
  ## max\_bytes\_to\_sort
</div>

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

الحد الأقصى لعدد البايتات قبل الفرز. إذا استلزم تنفيذ عملية ORDER BY معالجة كمية من البايتات غير المضغوطة تتجاوز المقدار المحدد، فسيُحدَّد السلوك وفقًا للإعداد `sort_overflow_mode`، والذي يكون مضبوطًا افتراضيًا على `throw`.

<div id="max_bytes_to_transfer">
  ## max\_bytes\_to\_transfer
</div>

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

الحد الأقصى لعدد البايتات (البيانات غير المضغوطة) التي يمكن تمريرها إلى
خادم بعيد أو حفظها في جدول مؤقت عند تنفيذ قسم GLOBAL IN/JOIN.

<div id="max_columns_to_read">
  ## max\_columns\_to\_read
</div>

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

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

<Tip>
  هذا الإعداد مفيد لمنع الاستعلامات المعقدة أكثر من اللازم.
</Tip>

تعني القيمة `0` عدم وجود حد.

<div id="max_compress_block_size">
  ## max\_compress\_block\_size
</div>

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

الحد الأقصى لحجم كتل البيانات غير المضغوطة قبل ضغطها عند الكتابة إلى جدول. القيمة الافتراضية هي 1,048,576 ‏(1 MiB). ويؤدي تحديد حجم كتلة أصغر، بشكل عام، إلى انخفاض طفيف في نسبة الضغط، مع زيادة طفيفة في سرعة الضغط وفك الضغط بسبب محلية ذاكرة التخزين المؤقت، إضافةً إلى تقليل استهلاك الذاكرة.

<Note>
  هذا إعداد مخصّص للمستخدمين الخبراء، ولا ينبغي تغييره إذا كنت لا تزال في بداية استخدام ClickHouse.
</Note>

لا تخلط بين الكتل المستخدمة للضغط (جزء من الذاكرة يتكوّن من بايتات) والكتل المستخدمة في معالجة الاستعلامات (مجموعة من الصفوف من جدول).

<div id="max_concurrent_queries_for_all_users">
  ## max\_concurrent\_queries\_for\_all\_users
</div>

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

يُصدر استثناءً إذا كانت قيمة هذا الإعداد أقل من أو تساوي العدد الحالي للاستعلامات التي تُعالَج بالتزامن.

مثال: يمكن ضبط `max_concurrent_queries_for_all_users` على 99 لجميع المستخدمين، ويمكن لمسؤول قاعدة البيانات ضبطه على 100 لنفسه لتشغيل استعلامات الاستقصاء حتى عندما يكون الخادم محمّلًا فوق طاقته.

لا يؤثر تعديل هذا الإعداد لاستعلام واحد أو لمستخدم واحد على الاستعلامات الأخرى.

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

* عدد صحيح موجب.
* 0 — بلا حد.

**مثال**

```xml theme={null}
<max_concurrent_queries_for_all_users>99</max_concurrent_queries_for_all_users>
```

**راجع أيضًا**

* [max\_concurrent\_queries](/ar/reference/settings/server-settings/settings#max_concurrent_queries)

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

<div id="max_concurrent_queries_for_user">
  ## max\_concurrent\_queries\_for\_user
</div>

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

الحد الأقصى لعدد الاستعلامات التي تُعالَج في الوقت نفسه لكل مستخدم.

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

* عدد صحيح موجب.
* 0 — بدون حد.

**مثال**

```xml theme={null}
<max_concurrent_queries_for_user>5</max_concurrent_queries_for_user>
```

<div id="max_consume_snapshots">
  ## max\_consume\_snapshots
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "0"},{"label": "إعداد جديد."}]}]} />

الحد الأقصى لعدد لقطات Paimon التي يمكن استهلاكها في كل قراءة تزايدية. 0 تعني عدم وجود حد.

<div id="max_distributed_connections">
  ## max\_distributed\_connections
</div>

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

الحد الأقصى لعدد الاتصالات المتزامنة مع الخوادم البعيدة للمعالجة الموزعة لاستعلام واحد على جدول Distributed واحد. نوصي بتعيين قيمة لا تقل عن عدد الخوادم في العنقود.

لا تُستخدَم المعلمات التالية إلا عند إنشاء جداول Distributed (وعند تشغيل خادم)، لذلك لا داعي لتغييرها في وقت التشغيل.

<div id="max_distributed_depth">
  ## max\_distributed\_depth
</div>

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

يحدّد الحد الأقصى لعمق الاستعلامات التكرارية لجداول [Distributed](/ar/reference/engines/table-engines/special/distributed).

إذا تم تجاوز هذه القيمة، يرفع الخادم استثناءً.

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

* عدد صحيح موجب.
* 0 — عمق غير محدود.

<div id="max_download_buffer_size">
  ## max\_download\_buffer\_size
</div>

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

الحد الأقصى لحجم المخزن المؤقت للتنزيل المتوازي (مثلًا لمحرك URL) لكل خيط تنفيذ.

<div id="max_download_threads">
  ## max\_download\_threads
</div>

<SettingsInfoBlock type="MaxThreads" default_value="4" />

الحد الأقصى لعدد سلاسل التنفيذ لتنزيل البيانات (مثلًا لمحرك URL).

<div id="max_estimated_execution_time">
  ## max\_estimated\_execution\_time
</div>

<SettingsInfoBlock type="ثوان" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.1"},{"label": "0"},{"label": "فصل max_execution_time و max_estimated_execution_time"}]}]} />

الحد الأقصى للوقت التقديري لتنفيذ الاستعلام، بالثواني. ويُتحقَّق منه عند كل كتلة بيانات
عند انقضاء [`timeout_before_checking_execution_speed`](/ar/reference/settings/session-settings#timeout_before_checking_execution_speed).

<div id="max_execution_speed">
  ## max\_execution\_speed
</div>

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

الحد الأقصى لعدد صفوف التنفيذ في الثانية. يُتحقَّق من ذلك عند كل كتلة بيانات عند انتهاء مهلة
[`timeout_before_checking_execution_speed`](/ar/reference/settings/session-settings#timeout_before_checking_execution_speed).
إذا كانت سرعة التنفيذ مرتفعة، فستُخفَّض.

<div id="max_execution_speed_bytes">
  ## max\_execution\_speed\_bytes
</div>

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

الحد الأقصى لعدد بايتات التنفيذ في الثانية. يُتحقَّق منه عند كل كتلة بيانات عند انتهاء
[`timeout_before_checking_execution_speed`](/ar/reference/settings/session-settings#timeout_before_checking_execution_speed).
إذا كانت سرعة التنفيذ مرتفعة، فستُخفَّض.

<div id="max_execution_time">
  ## max\_execution\_time
</div>

<SettingsInfoBlock type="ثوانٍ" default_value="0" />

الحد الأقصى لوقت تنفيذ الاستعلام، بالثواني.

قد يكون فهم المعلَمة `max_execution_time` مربكًا بعض الشيء.
فهي تعمل بالاستناد إلى الاستيفاء وفقًا لسرعة تنفيذ الاستعلام الحالية
(ويُتحكَّم في هذا السلوك بواسطة [`timeout_before_checking_execution_speed`](/ar/reference/settings/session-settings#timeout_before_checking_execution_speed)).

سيقوم ClickHouse بإيقاف الاستعلام إذا تجاوز وقت التنفيذ المقدَّر
قيمة `max_execution_time` المحددة. افتراضيًا، تُضبط `timeout_before_checking_execution_speed`
على 10 ثوانٍ. وهذا يعني أنه بعد مرور 10 ثوانٍ على تنفيذ الاستعلام، سيبدأ ClickHouse
في تقدير إجمالي وقت التنفيذ. فإذا كانت `max_execution_time`، على سبيل المثال،
مضبوطة على 3600 ثانية (ساعة واحدة)، فسينهي ClickHouse الاستعلام إذا تجاوز الوقت المقدَّر
هذا الحد البالغ 3600 ثانية. وإذا ضبطت `timeout_before_checking_execution_speed`
على 0، فسيستخدم ClickHouse الوقت الفعلي أساسًا لـ `max_execution_time`.

إذا تجاوز وقت تشغيل الاستعلام عدد الثواني المحدد، فسيتحدد السلوك
بواسطة `timeout_overflow_mode`، والتي تُضبط افتراضيًا على `throw`.

<Note>
  تُفحَص المهلة، ولا يمكن إيقاف الاستعلام إلا عند نقاط محددة أثناء معالجة البيانات.
  وحاليًا، لا يمكن إيقافه أثناء دمج حالات التجميع أو أثناء تحليل الاستعلام،
  ولذلك سيكون وقت التشغيل الفعلي أعلى من قيمة هذا الإعداد.
</Note>

<div id="max_execution_time_leaf">
  ## max\_execution\_time\_leaf
</div>

<SettingsInfoBlock type="ثوانٍ" default_value="0" />

مشابه من حيث المعنى لـ [`max_execution_time`](#max_execution_time)، لكنه يُطبَّق فقط
على العقد الطرفية في الاستعلامات الموزعة أو البعيدة.

على سبيل المثال، إذا أردنا تقييد وقت التنفيذ على عقدة طرفية إلى `10s`، ولكن
من دون أي حد على العقدة الأولية، فبدلًا من وضع `max_execution_time` في
إعدادات الاستعلام الفرعي المتداخل:

```sql theme={null}
SELECT count()
FROM cluster(cluster, view(SELECT * FROM t SETTINGS max_execution_time = 10));
```

يمكننا استخدام `max_execution_time_leaf` ضمن إعدادات الاستعلام:

```sql theme={null}
SELECT count()
FROM cluster(cluster, view(SELECT * FROM t)) SETTINGS max_execution_time_leaf = 10;
```

<div id="max_expanded_ast_elements">
  ## max\_expanded\_ast\_elements
</div>

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

الحد الأقصى لحجم شجرة البنية النحوية للاستعلام، من حيث عدد العُقد، بعد توسيع الأسماء المستعارة وعلامة النجمة.

<div id="max_fetch_partition_retries_count">
  ## max\_fetch\_partition\_retries\_count
</div>

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

عدد مرات إعادة المحاولة عند جلب partition من مضيف آخر.

<div id="max_final_threads">
  ## max\_final\_threads
</div>

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

يحدّد الحد الأقصى لعدد خيوط التنفيذ المتوازية لمرحلة قراءة البيانات في استعلام `SELECT` مع المُعدِّل [FINAL](/ar/reference/statements/select/from#final-modifier).

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

* عدد صحيح موجب.
* 0 أو 1 — معطّل. تُنفَّذ استعلامات `SELECT` باستخدام خيط تنفيذ واحد.

<div id="max_http_get_redirects">
  ## max\_http\_get\_redirects
</div>

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

الحد الأقصى لعدد قفزات إعادة التوجيه المسموح بها لطلبات HTTP GET. يضمن ذلك تطبيق تدابير أمان إضافية لمنع خادم خبيث من إعادة توجيه طلباتك إلى خدمات غير متوقعة.\n\nتحدث هذه الحالة عندما يعيد خادم خارجي التوجيه إلى عنوان آخر، لكن هذا العنوان يبدو داخليًا ضمن البنية التحتية للشركة. وعند إرسال طلب HTTP إلى خادم داخلي، قد تتمكن من طلب واجهة برمجة تطبيقات داخلية من الشبكة الداخلية، متجاوزًا المصادقة، أو حتى إجراء استعلامات على خدمات أخرى مثل Redis أو Memcached. إذا لم تكن لديك بنية تحتية داخلية (بما في ذلك أي شيء يعمل على localhost)، أو كنت تثق بالخادم، فمن الآمن السماح بإعادات التوجيه. ومع ذلك، ضع في اعتبارك أنه إذا كان الـ URL يستخدم HTTP بدلًا من HTTPS، فسيتعين عليك الوثوق ليس فقط بالخادم البعيد، بل أيضًا بمزوّد خدمة الإنترنت لديك وبكل شبكة تقع بينكما.

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

<div id="max_hyperscan_regexp_length">
  ## max\_hyperscan\_regexp\_length
</div>

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

يحدّد الحد الأقصى لطول كل تعبير نمطي في [دوال hyperscan multi-match](/ar/reference/functions/regular-functions/string-search-functions#multiMatchAny).

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

* عدد صحيح موجب.
* 0 - الطول غير محدود.

**مثال**

الاستعلام:

```sql theme={null}
SELECT multiMatchAny('abcd', ['ab','bcd','c','d']) SETTINGS max_hyperscan_regexp_length = 3;
```

النتيجة:

```text theme={null}
┌─multiMatchAny('abcd', ['ab', 'bcd', 'c', 'd'])─┐
│                                              1 │
└────────────────────────────────────────────────┘
```

الاستعلام:

```sql theme={null}
SELECT multiMatchAny('abcd', ['ab','bcd','c','d']) SETTINGS max_hyperscan_regexp_length = 2;
```

النتيجة:

```text theme={null}
Exception: Regexp length too large.
```

**انظر أيضًا**

* [max\_hyperscan\_regexp\_total\_length](#max_hyperscan_regexp_total_length)

<div id="max_hyperscan_regexp_total_length">
  ## max\_hyperscan\_regexp\_total\_length
</div>

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

يحدِّد الحد الأقصى لإجمالي أطوال جميع التعبيرات النمطية في كل [hyperscan multi-match function](/ar/reference/functions/regular-functions/string-search-functions#multiMatchAny).

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

* عدد صحيح موجب.
* 0 - الطول غير مقيَّد.

**مثال**

الاستعلام:

```sql theme={null}
SELECT multiMatchAny('abcd', ['a','b','c','d']) SETTINGS max_hyperscan_regexp_total_length = 5;
```

النتيجة:

```text theme={null}
┌─multiMatchAny('abcd', ['a', 'b', 'c', 'd'])─┐
│                                           1 │
└─────────────────────────────────────────────┘
```

الاستعلام:

```sql theme={null}
SELECT multiMatchAny('abcd', ['ab','bc','c','d']) SETTINGS max_hyperscan_regexp_total_length = 5;
```

النتيجة:

```text theme={null}
Exception: Total regexp lengths too large.
```

**انظر أيضًا**

* [max\_hyperscan\_regexp\_length](#max_hyperscan_regexp_length)

<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 protocol)، يتم إصدار الكتل عند:

   * الوصول إلى كلٍّ من 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 وعندما تتدفق البيانات عبر العروض المادية، يعتمد سلوك هذا الإعداد على `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 أو 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" />

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

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

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

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

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

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

* 0 (أو 1) — ‏`INSERT SELECT` بدون تنفيذ متوازٍ.
* عدد صحيح موجب أكبر من 1.

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

* `1` للعُقد التي تحتوي على ذاكرة بحجم 8 GiB
* `2` للعُقد التي تحتوي على ذاكرة بحجم 16 GiB
* `4` للعُقد الأكبر

لا يكون لـ `INSERT SELECT` المتوازي تأثير إلا إذا كان جزء `SELECT` يُنفَّذ على التوازي. راجع إعداد [`max_threads`](#max_threads).
ستؤدي القيم الأعلى إلى زيادة استخدام الذاكرة.

<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": "إعداد جديد لتقييد عدد خيوط insert استنادًا إلى الذاكرة الحرة المتاحة"}]}]} />

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

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

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

<div id="max_joined_block_size_bytes">
  ## max\_joined\_block\_size\_bytes
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "إعداد جديد"},{"label": "4194304"}]}]} />

الحد الأقصى لحجم الكتلة، بالبايت، لنتيجة JOIN (إذا كانت خوارزمية JOIN تدعم ذلك). وتعني القيمة 0 عدم وجود حد.

<div id="max_joined_block_size_rows">
  ## max\_joined\_block\_size\_rows
</div>

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

الحد الأقصى لحجم الكتلة لنتيجة JOIN (إذا كانت خوارزمية JOIN تدعم ذلك). وتعني القيمة 0 عدم وجود حد.

<div id="max_limit_for_vector_search_queries">
  ## max\_limit\_for\_vector\_search\_queries
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "1000"},{"label": "إعداد جديد"}]}]} />

لا يمكن لاستعلامات SELECT التي تحتوي على LIMIT أكبر من هذا الإعداد استخدام فهارس تشابه المتجهات. يساعد ذلك على منع تجاوز سعة الذاكرة في فهارس تشابه المتجهات.

<div id="max_local_read_bandwidth">
  ## max\_local\_read\_bandwidth
</div>

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

الحد الأقصى لمعدل القراءة المحلية بالبايت في الثانية.

<div id="max_local_write_bandwidth">
  ## max\_local\_write\_bandwidth
</div>

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

السرعة القصوى لعمليات الكتابة المحلية، بالبايت في الثانية.

<div id="max_memory_usage">
  ## max\_memory\_usage
</div>

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

القيمة الافتراضية في Cloud: تعتمد على مقدار RAM في النسخة المتماثلة.

الحد الأقصى لمقدار RAM الذي يمكن استخدامه لتشغيل استعلام على خادم واحد.
وتعني القيمة `0` عدم وجود حد.

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

يمكنك استخدام `SHOW PROCESSLIST` لمعرفة استهلاك الذاكرة الحالي لكل استعلام.
ويتم تتبّع ذروة استهلاك الذاكرة لكل استعلام وكتابتها في السجل.

لا يتم تتبّع استخدام الذاكرة بالكامل لحالات الدوال التجميعية
التالية من الوسيطات `String` و`Array`:

* `min`
* `max`
* `any`
* `anyLast`
* `argMin`
* `argMax`

كما يُقيَّد استهلاك الذاكرة أيضًا بواسطة المعلمتين [`max_memory_usage_for_user`](/ar/reference/settings/session-settings#max_memory_usage_for_user)
و[`max_server_memory_usage`](/ar/reference/settings/server-settings/settings#max_server_memory_usage).

<div id="max_memory_usage_for_user">
  ## max\_memory\_usage\_for\_user
</div>

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

الحد الأقصى لذاكرة RAM المسموح باستخدامها لتشغيل استعلامات المستخدم على خادم واحد. ويعني الصفر عدم وجود حد.

بشكل افتراضي، لا يكون هذا المقدار مقيّدًا (`max_memory_usage_for_user = 0`).

راجع أيضًا وصف [`max_memory_usage`](/ar/reference/settings/session-settings#max_memory_usage).

على سبيل المثال، إذا أردت ضبط `max_memory_usage_for_user` على 1000 بايت لمستخدم باسم `clickhouse_read`، يمكنك استخدام عبارة statement

```sql theme={null}
ALTER USER clickhouse_read SETTINGS max_memory_usage_for_user = 1000;
```

يمكنك التحقق من نجاح ذلك عبر تسجيل الخروج من عميلك، ثم تسجيل الدخول مجددًا، ثم استخدام الدالة `getSetting`:

```sql theme={null}
SELECT getSetting('max_memory_usage_for_user');
```

<div id="max_network_bandwidth">
  ## max\_network\_bandwidth
</div>

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

يحدّ من سرعة نقل البيانات عبر الشبكة بالبايت في الثانية. ينطبق هذا الإعداد على كل استعلام.

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

* عدد صحيح موجب.
* 0 — يكون التحكم في عرض النطاق الترددي معطّلًا.

<div id="max_network_bandwidth_for_all_users">
  ## max\_network\_bandwidth\_for\_all\_users
</div>

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

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

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

* عدد صحيح موجب.
* 0 — يكون التحكم في سرعة نقل البيانات معطّلًا.

<div id="max_network_bandwidth_for_user">
  ## max\_network\_bandwidth\_for\_user
</div>

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

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

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

* عدد صحيح موجب.
* 0 — يكون التحكّم في سرعة نقل البيانات معطّلًا.

<div id="max_network_bytes">
  ## max\_network\_bytes
</div>

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

يحدّد حجم البيانات (بالبايت) التي يتم استقبالها أو إرسالها عبر الشبكة عند تنفيذ استعلام. ينطبق هذا الإعداد على كل استعلام على حدة.

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

* عدد صحيح موجب.
* 0 — يكون التحكّم في حجم البيانات معطّلًا.

<div id="max_number_of_partitions_for_independent_aggregation">
  ## max\_number\_of\_partitions\_for\_independent\_aggregation
</div>

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

الحد الأقصى لعدد التقسيمات في الجدول لتطبيق التحسي

<div id="max_os_cpu_wait_time_ratio_to_throw">
  ## max\_os\_cpu\_wait\_time\_ratio\_to\_throw
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "0"},{"label": "تم تغيير قيم الإعدادات وإجراء backport لها إلى 25.4"}]}, {"id": "row-2","items": [{"label": "25.4"},{"label": "0"},{"label": "إعداد جديد"}]}]} />

أقصى نسبة بين وقت انتظار CPU في نظام التشغيل (المقياس OSCPUWaitMicroseconds) ووقت الانشغال (المقياس OSCPUVirtualTimeMicroseconds) التي يُعتد بها لرفض الاستعلامات. ويُستخدم الاستيفاء الخطي بين الحدين الأدنى والأقصى لهذه النسبة لحساب الاحتمال؛ ويبلغ الاحتمال 1 عند هذه القيمة.

<div id="max_parallel_replicas">
  ## max\_parallel\_replicas
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "1000"},{"label": "استخدم ما يصل إلى 1000 نسخة متماثلة متوازية افتراضيًا."}]}]} />

الحد الأقصى لعدد النسخ المتماثلة لكل شريحة عند تنفيذ استعلام.

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

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

**معلومات إضافية**

سينتج هذا الخيار نتائج مختلفة بحسب الإعدادات المستخدمة.

<div id="parallel-processing-using-sample-key">
  ### المعالجة المتوازية باستخدام مفتاح `SAMPLE`
</div>

قد تتم معالجة الاستعلام بشكل أسرع إذا نُفِّذ على عدة خوادم بالتوازي. لكن قد يتدهور أداء الاستعلام في الحالات التالية:

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

<div id="parallel-processing-using-parallel_replicas_custom_keyparallel_replicas_custom_key">
  ### المعالجة المتوازية باستخدام [parallel\_replicas\_custom\_key](#parallel_replicas_custom_key)
</div>

هذا الإعداد مفيد لأي جدول مُنسَّخ.

<div id="max_parser_backtracks">
  ## max\_parser\_backtracks
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "1000000"},{"label": "تقييد تعقيد عملية التحليل"}]}]} />

الحد الأقصى للتراجع في المُحلِّل (عدد المرات التي يجرّب فيها بدائل مختلفة أثناء عملية التحليل التنازلي التعاودي).

<div id="max_parser_depth">
  ## max\_parser\_depth
</div>

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

يحدّد الحد الأقصى لعمق الاستدعاء التعاودي في محلّل النزول التعاودي، ويتيح التحكّم في حجم المكدّس.

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

* عدد صحيح موجب.
* 0 — عمق الاستدعاء التعاودي غير محدود.

<div id="max_parsing_threads">
  ## max\_parsing\_threads
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.4"},{"label": "0"},{"label": "إضافة إعداد منفصل للتحكم في عدد الخيوط عند تحليل البيانات من الملفات بالتوازي"}]}]} />

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

<div id="max_partition_size_to_drop">
  ## max\_partition\_size\_to\_drop
</div>

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

قيد على إسقاط الأقسام أثناء تنفيذ الاستعلام. تعني القيمة `0` أنه يمكنك إسقاط الأقسام دون أي قيود.

Cloud default value: 1 تيرابايت.

<Note>
  يحلّ إعداد الاستعلام هذا محل إعداد الخادم المكافئ له، راجع [max\_partition\_size\_to\_drop](/ar/reference/settings/server-settings/settings#max_partition_size_to_drop)
</Note>

<div id="max_partitions_per_insert_block">
  ## max\_partitions\_per\_insert\_block
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "19.5"},{"label": "100"},{"label": "إضافة حدّ لعدد الأقسام في كتلة واحدة"}]}]} />

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

* عدد صحيح موجب.
* `0` — عدد غير محدود من الأقسام.

**التفاصيل**

عند إدراج البيانات، يحسب ClickHouse عدد الأقسام في
الكتلة المُدرجة. وإذا كان عدد الأقسام أكبر من
`max_partitions_per_insert_block`، فإن ClickHouse إمّا يسجّل تحذيرًا أو يطرح
استثناءً استنادًا إلى `throw_on_max_partitions_per_insert_block`. ويكون نص الاستثناء
كما يلي:

> "عدد الأقسام كبير جدًا بالنسبة إلى كتلة INSERT واحدة (عدد الأقسام `partitions_count`، والحد هو " + toString(max\_partitions) + ").
> يتم التحكم في هذا الحد بواسطة الإعداد 'max\_partitions\_per\_insert\_block'.
> يُعد العدد الكبير من الأقسام من المفاهيم الخاطئة الشائعة. وسيؤدي ذلك إلى
> تأثير سلبي حاد على الأداء، بما في ذلك بطء تشغيل server، وبطء استعلامات INSERT
> وبطء استعلامات SELECT. العدد الإجمالي الموصى به للأقسام في table هو
> أقل من 1000..10000. يرجى ملاحظة أن partitioning ليس مخصصًا لتسريع
> استعلامات SELECT (يكفي order by key لجعل الاستعلامات النطاقية سريعة).
> الأقسام مخصصة لمعالجة البيانات (DROP PARTITION، إلخ)."

<Note>
  هذا الإعداد هو safety threshold لأن استخدام عدد كبير من الأقسام يُعد من المفاهيم الخاطئة الشائعة.
</Note>

<div id="max_partitions_to_read">
  ## max\_partitions\_to\_read
</div>

<SettingsInfoBlock type="Int64" default_value="-1" />

يحدّد الحد الأقصى لعدد الأقسام التي يمكن الوصول إليها في استعلام واحد.

يمكن تجاوز قيمة الإعداد المحددة عند إنشاء الجدول باستخدام إعداد على مستوى الاستعلام.

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

* عدد صحيح موجب
* `-1` - غير محدود (الافتراضي)

<Note>
  يمكنك أيضًا تحديد إعداد MergeTree [`max_partitions_to_read`](/ar/reference/settings/session-settings#max_partitions_to_read) ضمن إعدادات الجدول.
</Note>

<div id="max_parts_to_move">
  ## max\_parts\_to\_move
</div>

<SettingsInfoBlock type="UInt64" default_value="1000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.10"},{"label": "1000"},{"label": "إعداد جديد"}]}]} />

يحدّد عدد الأجزاء التي يمكن نقلها في استعلام واحد. ويعني الصفر عدم وجود حد.

<div id="max_projection_rows_to_use_projection_index">
  ## max\_projection\_rows\_to\_use\_projection\_index
</div>

<SettingsInfoBlock type="UInt64" default_value="1000000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.11"},{"label": "1000000"},{"label": "إعداد جديد"}]}]} />

إذا كان عدد الصفوف المراد قراءتها من فهرس الإسقاط أقل من هذه العتبة أو مساويًا لها، فسيحاول ClickHouse استخدام فهرس الإسقاط أثناء تنفيذ الاستعلام.

<div id="max_query_size">
  ## max\_query\_size
</div>

<SettingsInfoBlock type="UInt64" default_value="262144" />

الحد الأقصى لعدد البايتات في سلسلة الاستعلام التي يُحلّلها مُحلِّل SQL.
تُعالَج البيانات في عبارة VALUES ضمن استعلامات INSERT بواسطة مُحلِّل دفق منفصل (يستهلك O(1) من RAM)، ولا تتأثر بهذا القيد.

<Note>
  لا يمكن تعيين `max_query_size` داخل استعلام SQL (على سبيل المثال، `SELECT now() SETTINGS max_query_size=10000`) لأن ClickHouse يحتاج إلى تخصيص مخزن مؤقت لتحليل الاستعلام، ويُحدَّد حجم هذا المخزن المؤقت بواسطة الإعداد `max_query_size`، الذي يجب تهيئته قبل تنفيذ الاستعلام.
</Note>

<div id="max_rand_distribution_parameter">
  ## max\_rand\_distribution\_parameter
</div>

<SettingsInfoBlock type="Float" default_value="1000000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "1000000"},{"label": "إعداد جديد لتقييد معاملات الشكل في دوال التوزيعات العشوائية، مما يمنع التعليق عند استخدام مُدخلات شديدة التطرف."}]}]} />

الحد الأقصى لمعاملات شكل التوزيع في دوال التوزيعات العشوائية مثل `randChiSquared` و`randStudentT` و`randFisherF`. يمنع ذلك فترات حساب طويلة جدًا عند استخدام قيم معاملات شديدة التطرف.

<div id="max_rand_distribution_trials">
  ## max\_rand\_distribution\_trials
</div>

<SettingsInfoBlock type="UInt64" default_value="1000000000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "1000000000"},{"label": "إعداد جديد لتقييد عدد المحاولات في دوال التوزيعات العشوائية، مما يمنع التعطل عند استخدام مُدخلات متطرفة."}]}]} />

الحد الأقصى لعدد المحاولات المسموح به في دوال التوزيعات العشوائية مثل `randBinomial` و`randNegativeBinomial`. يساعد ذلك على تجنب أزمنة حساب طويلة جدًا عند وجود عدد كبير من المحاولات.

<div id="max_read_buffer_size">
  ## max\_read\_buffer\_size
</div>

<SettingsInfoBlock type="NonZeroUInt64" default_value="1048576" />

أقصى حجم للمخزن المؤقت المستخدم للقراءة من نظام الملفات.

<div id="max_read_buffer_size_local_fs">
  ## max\_read\_buffer\_size\_local\_fs
</div>

<SettingsInfoBlock type="UInt64" default_value="131072" />

الحد الأقصى لحجم المخزن المؤقت للقراءة من نظام الملفات المحلي. إذا ضُبطت على 0، فسيُستخدم `max_read_buffer_size`.

<div id="max_read_buffer_size_remote_fs">
  ## max\_read\_buffer\_size\_remote\_fs
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

الحد الأقصى لحجم المخزن المؤقت المستخدم للقراءة من نظام الملفات البعيد. إذا ضُبطت القيمة على 0، فسيُستخدم `max_read_buffer_size`.

<div id="max_recursive_cte_evaluation_depth">
  ## max\_recursive\_cte\_evaluation\_depth
</div>

<SettingsInfoBlock type="UInt64" default_value="1000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.4"},{"label": "1000"},{"label": "الحد الأقصى لعمق تقييم CTE التكراري"}]}]} />

الحد الأقصى لعمق تقييم CTE التكراري

<div id="max_remote_read_network_bandwidth">
  ## max\_remote\_read\_network\_bandwidth
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

الحد الأقصى لمعدل نقل البيانات عبر الشبكة، بالبايت في الثانية، لعمليات القراءة.

<div id="max_remote_write_network_bandwidth">
  ## max\_remote\_write\_network\_bandwidth
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

الحد الأقصى لسرعة نقل البيانات عبر الشبكة، بالبايت في الثانية، لعمليات الكتابة.

<div id="max_replica_delay_for_distributed_queries">
  ## max\_replica\_delay\_for\_distributed\_queries
</div>

<SettingsInfoBlock type="UInt64" default_value="300" />

يعطّل النسخ المتماثلة المتأخرة في الاستعلامات الموزعة. راجع [النسخ المتماثل](/ar/reference/engines/table-engines/mergetree-family/replication).

يحدّد الزمن بالثواني. إذا كان تأخر النسخة المتماثلة أكبر من القيمة المحددة أو مساويًا لها، فلن تُستخدم هذه النسخة المتماثلة.

القيم الممكنة:

* عدد صحيح موجب.
* 0 — لا يتم التحقق من تأخر النسخ المتماثلة.

لمنع استخدام أي نسخة متماثلة لديها تأخر أكبر من صفر، اضبط هذه المعلمة على 1.

يُستخدم عند تنفيذ `SELECT` على جدول موزّع يشير إلى جداول متماثلة.

<div id="max_result_bytes">
  ## max\_result\_bytes
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

يفرض حدًا على حجم النتيجة بالبايت (غير مضغوط). سيتوقف الاستعلام بعد معالجة كتلة من البيانات إذا تم بلوغ العتبة،
لكنه لن يقتطع آخر كتلة من النتيجة، لذلك قد يكون حجم النتيجة أكبر من العتبة.

**محاذير**

يُؤخَذ في الاعتبار حجم النتيجة في الذاكرة عند تطبيق هذه العتبة.
حتى إذا كان حجم النتيجة صغيرًا، فقد يشير إلى هياكل بيانات أكبر في الذاكرة،
مثل Dictionaries الخاصة بأعمدة LowCardinality، وساحات أعمدة AggregateFunction،
لذلك قد تُتجاوز العتبة رغم صِغر حجم النتيجة.

<Warning>
  هذا الإعداد منخفض المستوى نسبيًا، ويجب استخدامه بحذر
</Warning>

<div id="max_result_rows">
  ## max\_result\_rows
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

قيمة Cloud الافتراضية: `0`.

يحدّ من عدد الصفوف في النتيجة. ويُتحقَّق منه أيضًا في الاستعلامات الفرعية، وعلى الخوادم البعيدة عند تشغيل أجزاء من استعلام موزّع.
لا يُطبَّق أي حدّ عندما تكون القيمة `0`.

سيتوقف الاستعلام بعد معالجة كتلة من البيانات إذا تم بلوغ العتبة، لكنه
لن يقتطع آخر كتلة من النتيجة، لذلك قد يكون حجم النتيجة
أكبر من العتبة.

<div id="max_reverse_dictionary_lookup_cache_size_bytes">
  ## max\_reverse\_dictionary\_lookup\_cache\_size\_bytes
</div>

<SettingsInfoBlock type="UInt64" default_value="104857600" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "104857600"},{"label": "إعداد جديد. الحد الأقصى للحجم بالبايت لذاكرة التخزين المؤقت لعملية lookup العكسي في القاموس على مستوى كل استعلام، والمستخدمة بواسطة الدالة `dictGetKeys`. تخزّن ذاكرة التخزين المؤقت Tupleات المفاتيح المُسلسلة لكل قيمة attribute لتجنّب إعادة فحص القاموس ضمن الاستعلام نفسه."}]}]} />

الحد الأقصى للحجم بالبايت لذاكرة التخزين المؤقت لعملية lookup العكسي في القاموس على مستوى كل استعلام، والمستخدمة بواسطة الدالة `dictGetKeys`. تخزّن ذاكرة التخزين المؤقت Tupleات المفاتيح المُسلسلة لكل قيمة attribute لتجنّب إعادة فحص القاموس ضمن الاستعلام نفسه. عند بلوغ الحد الأقصى، تُزال العناصر وفق سياسة LRU. اضبطها على 0 لتعطيل التخزين المؤقت.

<div id="max_rows_for_lazy_final">
  ## max\_rows\_for\_lazy\_final
</div>

<SettingsInfoBlock type="UInt64" default_value="10000000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "10000000"},{"label": "إعداد جديد للحد الأقصى لعدد الصفوف في المجموعة من أجل تحسين FINAL الكسول"}]}]} />

الحد الأقصى لعدد الصفوف في المجموعة من أجل تحسين FINAL الكسول. وإذا تم تجاوزه، فسيتم الرجوع إلى FINAL العادي.

<div id="max_rows_in_distinct">
  ## max\_rows\_in\_distinct
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

الحد الأقصى لعدد الصفوف المميزة عند استخدام DISTINCT.

<div id="max_rows_in_join">
  ## max\_rows\_in\_join
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

يحدّ من عدد الصفوف في بنية البيانات الموجودة على الجانب الأيمن (وعادةً ما تكون جدول
hash) والمستخدمة عند ربط الجداول.

ينطبق هذا الإعداد على عمليات [SELECT ... JOIN](/ar/reference/statements/select/join)
وعلى محرك الجدول [Join](/ar/reference/engines/table-engines/special/join).

إذا كان الاستعلام يحتوي على عدة عمليات join، فإن ClickHouse يفحص هذا الإعداد لكل
نتيجة وسيطة. وعند بلوغ الحد، يعتمد الإجراء المتخذ على
[`join_algorithm`](/ar/reference/settings/session-settings#join_algorithm) المحدد — راجع
هذا الإعداد لمعرفة السلوك الخاص بكل خوارزمية (spill، أو إعادة partition، أو التبديل، أو
throw/break وفقًا لـ [`join_overflow_mode`](/ar/reference/settings/session-settings#join_overflow_mode)).

القيم الممكنة:

* عدد صحيح موجب.
* `0` — عدد غير محدود من الصفوف.

<div id="max_rows_in_set">
  ## max\_rows\_in\_set
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

الحد الأقصى لعدد الصفوف في مجموعة البيانات داخل عبارة IN المُنشأة من استعلام فرعي.

<div id="max_rows_in_set_to_optimize_join">
  ## max\_rows\_in\_set\_to\_optimize\_join
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.1"},{"label": "0"},{"label": "تعطيل تحسين الضم لأنه يمنع تحسين القراءة بالترتيب"}]}]} />

الحد الأقصى لحجم المجموعة المستخدمة لتصفية الجداول المضمومة استنادًا إلى مجموعات صفوف بعضها البعض قبل إجراء عملية الضم.

القيم الممكنة:

* 0 — تعطيل.
* أي عدد صحيح موجب.

<div id="max_rows_to_group_by">
  ## max\_rows\_to\_group\_by
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

الحد الأقصى لعدد المفاتيح الفريدة الناتجة عن التجميع. يتيح لك هذا الإعداد
الحد من استهلاك الذاكرة عند إجراء التجميع.

إذا كان التجميع أثناء `GROUP BY` يُنتج عددًا من
الصفوف (مفاتيح `GROUP BY` الفريدة) أكبر من العدد المحدد، فسيُحدَّد السلوك بواسطة
`group_by_overflow_mode`، التي تكون قيمتها الافتراضية `throw`، ولكن يمكن أيضًا التبديل
إلى وضع `GROUP BY` تقريبي.

<div id="max_rows_to_read">
  ## max\_rows\_to\_read
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

الحد الأقصى لعدد الصفوف التي يمكن قراءتها من جدول عند تنفيذ استعلام.
يُتحقق من هذا القيد لكل دفعة بيانات مُعالجة، ويُطبَّق فقط على
تعبير الجدول الأعمق، وعند القراءة من خادم بعيد، لا يُتحقق منه إلا على
الخادم البعيد.

<div id="max_rows_to_read_leaf">
  ## max\_rows\_to\_read\_leaf
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

الحد الأقصى لعدد الصفوف التي يمكن قراءتها من جدول محلي على عقدة طرفية عند
تشغيل استعلام موزّع. ورغم أن الاستعلامات الموزّعة قد تُصدر عدة استعلامات فرعية
إلى كل شظية (طرفية)، فلن يُتحقق من هذا الحد إلا في مرحلة القراءة على
العُقد الطرفية، وسيُتجاهل في مرحلة دمج النتائج على العقدة الجذرية.

على سبيل المثال، يتكوّن العنقود من 2 شظية، ويحتوي كل شظية على جدول فيه
100 صف. سيفشل الاستعلام الموزّع الذي يُفترض أن يقرأ جميع البيانات من كلا
الجدولين مع الإعداد `max_rows_to_read=150`، لأن العدد الإجمالي سيكون
200 صف. أما الاستعلام مع `max_rows_to_read_leaf=150` فسينجح، لأن العُقد الطرفية
لن تقرأ أكثر من 100 صف.

يُتحقق من هذا القيد لكل دفعة بيانات مُعالَجة.

<Note>
  هذا الإعداد غير مستقر مع `prefer_localhost_replica=1`.
</Note>

<div id="max_rows_to_sort">
  ## max\_rows\_to\_sort
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

الحد الأقصى لعدد الصفوف قبل الفرز. يتيح لك هذا الحد من استهلاك الذاكرة عند الفرز.
إذا كانت عملية ORDER BY تتطلب معالجة عدد من السجلات يتجاوز المقدار المحدد،
فسيُحدَّد السلوك بواسطة `sort_overflow_mode`، والذي يكون مضبوطًا افتراضيًا على `throw`.

<div id="max_rows_to_transfer">
  ## max\_rows\_to\_transfer
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

الحد الأقصى لعدد الصفوف التي يمكن تمريرها إلى خادم بعيد أو حفظها في
جدول مؤقت عند تنفيذ جزء GLOBAL IN/JOIN.

<div id="max_sessions_for_user">
  ## max\_sessions\_for\_user
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

الحد الأقصى لعدد الجلسات المتزامنة لكل مستخدم موثَّق على خادم ClickHouse.

مثال:

```xml theme={null}
<profiles>
    <single_session_profile>
        <max_sessions_for_user>1</max_sessions_for_user>
    </single_session_profile>
    <two_sessions_profile>
        <max_sessions_for_user>2</max_sessions_for_user>
    </two_sessions_profile>
    <unlimited_sessions_profile>
        <max_sessions_for_user>0</max_sessions_for_user>
    </unlimited_sessions_profile>
</profiles>
<users>
    <!-- User Alice can connect to a ClickHouse server no more than once at a time. -->
    <Alice>
        <profile>single_session_user</profile>
    </Alice>
    <!-- User Bob can use 2 simultaneous sessions. -->
    <Bob>
        <profile>two_sessions_profile</profile>
    </Bob>
    <!-- User Charles can use arbitrarily many of simultaneous sessions. -->
    <Charles>
        <profile>unlimited_sessions_profile</profile>
    </Charles>
</users>
```

القيم الممكنة:

* عدد صحيح موجب
* `0` - عدد غير محدود من الجلسات المتزامنة (الافتراضي)

<div id="max_size_to_preallocate_for_aggregation">
  ## max\_size\_to\_preallocate\_for\_aggregation
</div>

<SettingsInfoBlock type="UInt64" default_value="1000000000000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.12"},{"label": "1000000000000"},{"label": "تمكين التحسين للجداول الأكبر."}]}, {"id": "row-2","items": [{"label": "22.12"},{"label": "100000000"},{"label": "يؤدي هذا إلى تحسين الأداء."}]}]} />

لعدد العناصر التي يُسمح من أجلها بالتخصيص المسبق للمساحة في جميع جداول التجزئة إجمالًا قبل التجمي

<div id="max_size_to_preallocate_for_joins">
  ## max\_size\_to\_preallocate\_for\_joins
</div>

<SettingsInfoBlock type="UInt64" default_value="1000000000000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.7"},{"label": "100000000"},{"label": "إعداد جديد."}]}, {"id": "row-2","items": [{"label": "24.12"},{"label": "1000000000000"},{"label": "تمكين التحسين للجداول الأكبر حجمًا."}]}]} />

عدد العناصر المسموح بالحجز المسبق للمساحة لها في جميع جداول التجزئة إجمالًا قبل joi

<div id="max_skip_unavailable_shards_num">
  ## max\_skip\_unavailable\_shards\_num
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": "0"},{"label": "إعداد جديد لتحديد عدد الشظايا التي يمكن تخطيها بصمت عند تمكين skip_unavailable_shards."}]}]} />

عند تمكين `skip_unavailable_shards`، يحدد هذا الإعداد الحد الأقصى لعدد الشظايا التي يمكن تخطيها بصمت.
إذا تجاوز عدد الشظايا غير المتاحة هذه القيمة، يُثار استثناء بدلًا من تخطيها بصمت.

تعني القيمة 0 عدم وجود حد (وهو السلوك الافتراضي — إذ يمكن تخطي جميع الشظايا غير المتاحة).

<div id="max_skip_unavailable_shards_ratio">
  ## max\_skip\_unavailable\_shards\_ratio
</div>

<SettingsInfoBlock type="Float" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": "0"},{"label": "إعداد جديد لتحديد نسبة الشظايا التي يمكن تخطيها بصمت عند تمكين skip_unavailable_shards."}]}]} />

عند تمكين `skip_unavailable_shards`، يحدد هذا الإعداد الحد الأقصى للنسبة (من 0 إلى 1) للشظايا التي يمكن تخطيها بصمت.
إذا تجاوزت نسبة الشظايا غير المتاحة إلى إجمالي الشظايا هذه القيمة، فسيتم إطلاق استثناء بدلًا من التخطي بصمت.

تعني القيمة 0 عدم وجود حد (السلوك الافتراضي — يمكن تخطي جميع الشظايا غير المتاحة).

<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": "إضافة إعداد جديد يتيح تقييد عدد التدفقات لمعالجة الملفات في *دوال الجداول العنقودية*"}]}]} />

إذا لم تكن قيمته صفراً، فسيُقيِّد عدد الخيوط التي تقرأ البيانات من الملفات في *دوال الجداول العنقودية*.

<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. ستُوزَّع التدفقات على الجداول التي يستخدمها جدول Merge. يتيح ذلك توزيعًا أكثر توازنًا للعمل عبر الخيوط، ويكون مفيدًا بشكل خاص عندما تختلف أحجام هذه الجداول.

<div id="max_streams_to_max_threads_ratio">
  ## max\_streams\_to\_max\_threads\_ratio
</div>

<SettingsInfoBlock type="Float" default_value="1" />

يتيح لك استخدام عدد من المصادر يفوق عدد خيوط التنفيذ، بهدف توزيع العمل على خيوط التنفيذ بشكل أكثر توازنًا. ويُفترض أن هذا حل مؤقت، إذ سيكون من الممكن مستقبلًا جعل عدد المصادر مساويًا لعدد خيوط التنفيذ، على أن يختار كل مصدر العمل المتاح له بشكل ديناميكي.

<div id="max_subquery_depth">
  ## max\_subquery\_depth
</div>

<SettingsInfoBlock type="UInt64" default_value="100" />

إذا كان الاستعلام يحتوي على عدد من الاستعلامات الفرعية المتداخلة يتجاوز العدد المحدد، فسيتم طرح
استثناء.

<Tip>
  يتيح لك هذا إجراء فحص احترازي للحماية من قيام مستخدمي
  العنقود لديك بكتابة استعلامات معقدة بشكل مفرط.
</Tip>

<div id="max_table_size_to_drop">
  ## max\_table\_size\_to\_drop
</div>

<SettingsInfoBlock type="UInt64" default_value="50000000000" />

قيد على حذف الجداول وقت تنفيذ الاستعلام. تعني القيمة `0` أنه يمكنك حذف جميع الجداول دون أي قيود.

Cloud default value: 1 TB.

<Note>
  يتجاوز إعداد الاستعلام هذا إعداد الخادم المكافئ له، راجع [max\_table\_size\_to\_drop](/ar/reference/settings/server-settings/settings#max_table_size_to_drop)
</Note>

<div id="max_temporary_columns">
  ## max\_temporary\_columns
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

الحد الأقصى لعدد الأعمدة المؤقتة التي يجب الاحتفاظ بها في RAM في الوقت نفسه
عند تنفيذ استعلام، بما في ذلك الأعمدة الثابتة. إذا ولّد الاستعلام عددًا من
الأعمدة المؤقتة في الذاكرة يتجاوز العدد المحدد نتيجةً لعمليات
حسابٍ وسيطة، فسيتم رفع استثناء.

<Tip>
  يفيد هذا الإعداد في منع الاستعلامات شديدة التعقيد.
</Tip>

تعني القيمة `0` عدم وجود حد.

<div id="max_temporary_data_on_disk_size_for_query">
  ## max\_temporary\_data\_on\_disk\_size\_for\_query
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

الحد الأقصى لكمية البيانات، بالبايت، التي تستهلكها الملفات المؤقتة على القرص عبر جميع
الاستعلامات المتزامنة قيد التشغيل.

القيم الممكنة:

* عدد صحيح موجب.
* `0` — غير محدود (الافتراضي)

<div id="max_temporary_data_on_disk_size_for_user">
  ## max\_temporary\_data\_on\_disk\_size\_for\_user
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

الحد الأقصى لكمية البيانات التي تستهلكها الملفات المؤقتة على القرص، بالبايت، عبر جميع
استعلامات المستخدم التي تعمل بالتوازي.

القيم الممكنة:

* عدد صحيح موجب.
* `0` — غير محدود (الافتراضي)

<div id="max_temporary_non_const_columns">
  ## max\_temporary\_non\_const\_columns
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

مثل `max_temporary_columns`، هذا هو الحد الأقصى لعدد الأعمدة المؤقتة التي يجب
الاحتفاظ بها في RAM في آنٍ واحد عند تنفيذ استعلام، ولكن من دون احتساب الأعمدة
الثابتة.

<Note>
  غالبًا ما تتكوّن الأعمدة الثابتة عند تنفيذ استعلام، لكنها لا تتطلب عمليًا
  أي موارد حوسبة تُذكر.
</Note>

<div id="max_threads">
  ## max\_threads
</div>

<SettingsInfoBlock type="MaxThreads" default_value="'auto(N)'" />

الحد الأقصى لعدد خيوط معالجة الاستعلام، باستثناء الخيوط المخصّصة لاسترجاع البيانات من الخوادم البعيدة (راجع المعلمة ['max\_distributed\_connections'](/ar/reference/settings/session-settings#max_distributed_connections)).

تنطبق هذه المعلمة على خيوط التنفيذ التي تنفّذ المراحل نفسها من مسار معالجة الاستعلام بالتوازي.
على سبيل المثال، عند القراءة من جدول، إذا كان من الممكن تقييم التعبيرات التي تتضمن دوال، والتصفية باستخدام `WHERE`، وإجراء التجميع المسبق لـ `GROUP BY` بالتوازي باستخدام عدد لا يقل عن 'max\_threads' من خيوط التنفيذ، فسيُستخدم 'max\_threads'.

بالنسبة إلى الاستعلامات التي تكتمل بسرعة بسبب LIMIT، يمكنك ضبط 'max\_threads' على قيمة أقل.
على سبيل المثال، إذا كان العدد المطلوب من الإدخالات موجودًا في كل كتلة وكان max\_threads = 8، فسيجري استرجاع 8 كتل، رغم أن قراءة كتلة واحدة فقط كانت ستكفي.
وكلما صغرت قيمة `max_threads`، قلّ استهلاك الذاكرة.

يتوافق الإعداد `max_threads` افتراضيًا مع عدد الخيوط العتادية (عدد أنوية CPU) المتاحة لـ ClickHouse.
وكحالة خاصة، بالنسبة إلى معالجات x86 التي تحتوي على أقل من 32 نواة CPU وتدعم SMT (مثل Intel HyperThreading)، يستخدم ClickHouse افتراضيًا عدد الأنوية المنطقية (= 2 × عدد الأنوية الفعلية).

في حال عدم وجود SMT (مثل Intel HyperThreading)، فإن ذلك يتوافق مع عدد أنوية CPU.

بالنسبة إلى مستخدمي ClickHouse Cloud، ستظهر القيمة الافتراضية على شكل `auto(N)` حيث يطابق N حجم vCPU الخاص بالخدمة لديك، مثل 2vCPU/8GiB و4vCPU/16GiB وما إلى ذلك.
راجع علامة تبويب الإعدادات في Cloud Console للحصول على قائمة بجميع أحجام الخدمات.

<div id="max_threads_for_indexes">
  ## max\_threads\_for\_indexes
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

الحد الأقصى لعدد الخيوط التي تعالج الفهارس.

<div id="max_threads_min_free_memory_per_thread">
  ## max\_threads\_min\_free\_memory\_per\_thread
</div>

<SettingsInfoBlock type="UInt64" default_value="1073741824" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "1073741824"},{"label": "إعداد جديد للحد من عدد الخيوط استنادًا إلى الذاكرة الحرة المتاحة"}]}]} />

يُخفِّض `max_threads` عندما يكون الخادم تحت ضغط الذاكرة، لتجنّب بدء استعلامات عالية التوازي يُرجَّح أن تتجاوز حد الذاكرة.

تُحتسب الذاكرة الحرة على أنها `max_server_memory_usage` الخاص بالخادم مطروحًا منه الذاكرة التي يتتبعها حاليًا متتبّع الذاكرة العام. وإذا كانت هذه الذاكرة الحرة أقل من `max_threads` مضروبًا في هذه القيمة، فسيُخفَّض `max_threads` إلى أكبر قيمة N بحيث يكون `N * value <= free_memory`، على ألا يقل عن `1`.

اضبطها على `0` لتعطيل هذا القيد.

على سبيل المثال، مع القيمة الافتراضية البالغة 1 GiB و32 GiB من الذاكرة الحرة، يُحدَّد الحد الأقصى لـ `max_threads` عند 32؛ ومع 1 GiB من الذاكرة الحرة ينخفض إلى 1.

ينطبق هذا الإعداد على التوازي في جانب القراءة (`SELECT` و`UNION` و`INTERSECT`/`EXCEPT`، وكذلك جانب `SELECT` من `INSERT ... SELECT`). أمّا بالنسبة إلى جانب الكتابة، فانظر `max_insert_threads_min_free_memory_per_thread`.

<div id="max_untracked_memory">
  ## max\_untracked\_memory
</div>

<SettingsInfoBlock type="UInt64" default_value="4194304" />

تُجمَّع عمليات تخصيص الذاكرة الصغيرة وإلغاء تخصيصها في متغير محلي على مستوى الخيط، ولا تُتتبَّع أو تُحلَّل إلا عندما يصبح المقدار (من حيث القيمة المطلقة) أكبر من القيمة المحددة. إذا كانت القيمة أعلى من `memory_profiler_step`، فسيتم خفضها فعليًا إلى `memory_profiler_step`.

<div id="max_wkb_geometry_elements">
  ## max\_wkb\_geometry\_elements
</div>

<SettingsInfoBlock type="UInt64" default_value="1000000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "1000000"},{"label": "إعداد جديد لتقييد عدد العناصر في تحليل هندسة WKB، مما يمنع التخصيص المفرط للذاكرة عند وجود بيانات تالفة."}]}]} />

الحد الأقصى لعدد النقاط أو الحلقات أو المضلعات المسموح بها في عنصر هندسة WKB واحد أثناء التحليل بواسطة `readWKB` والدوال ذات الصلة. يوفّر ذلك حماية من التخصيص المفرط للذاكرة الناتج عن بيانات WKB تالفة. اضبطه على 0 لاستخدام الحد المضمّن في الشيفرة (100 مليون).

<div id="memory_overcommit_ratio_denominator">
  ## memory\_overcommit\_ratio\_denominator
</div>

<SettingsInfoBlock type="UInt64" default_value="1073741824" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "22.5"},{"label": "1073741824"},{"label": "تفعيل ميزة memory overcommit افتراضيًا"}]}]} />

يمثل هذا الحد المرن للذاكرة عند بلوغ الحد الصارم على المستوى العام.
تُستخدم هذه القيمة لحساب نسبة overcommit للاستعلام.
تعني القيمة صفر تجاهل الاستعلام.
اقرأ المزيد عن [memory overcommit](/ar/concepts/features/configuration/settings/memory-overcommit).

<div id="memory_overcommit_ratio_denominator_for_user">
  ## memory\_overcommit\_ratio\_denominator\_for\_user
</div>

<SettingsInfoBlock type="UInt64" default_value="1073741824" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "22.5"},{"label": "1073741824"},{"label": "تفعيل ميزة memory overcommit افتراضيًا"}]}]} />

يمثل حد الذاكرة المرن عند بلوغ الحد الصارم على مستوى المستخدم.
تُستخدم هذه القيمة لاحتساب نسبة overcommit للاستعلام.
تعني القيمة صفرًا تخطي الاستعلام.
اقرأ المزيد عن [memory overcommit](/ar/concepts/features/configuration/settings/memory-overcommit).

<div id="memory_profiler_sample_max_allocation_size">
  ## memory\_profiler\_sample\_max\_allocation\_size
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

يجمع تخصيصات ذاكرة عشوائية يكون حجمها أقل من القيمة المحددة أو مساويًا لها، باحتمال يساوي `memory_profiler_sample_probability`. وتعني القيمة 0 أن هذا الإعداد معطّل. قد ترغب في ضبط `max_untracked_memory` على 0 لكي تعمل هذه العتبة كما هو متوقع.

<div id="memory_profiler_sample_min_allocation_size">
  ## memory\_profiler\_sample\_min\_allocation\_size
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

اجمع تخصيصات ذاكرة عشوائية بحجم أكبر من القيمة المحددة أو مساوٍ لها، باحتمال يساوي `memory_profiler_sample_probability`. تعني القيمة 0 أن هذا الخيار معطّل. قد ترغب في تعيين `max_untracked_memory` إلى 0 لكي تعمل هذه العتبة كما هو متوقّع.

<div id="memory_profiler_sample_probability">
  ## memory\_profiler\_sample\_probability
</div>

<SettingsInfoBlock type="Float" default_value="0" />

اجمع عمليات تخصيص الذاكرة وتحريرها العشوائية، واكتبها في system.trace\_log مع `trace_type` بالقيمة 'MemorySample'. تُطبَّق هذه الاحتمالية على كل عملية alloc/free بغضّ النظر عن حجم التخصيص (ويمكن تغيير ذلك باستخدام `memory_profiler_sample_min_allocation_size` و `memory_profiler_sample_max_allocation_size`). لاحظ أن أخذ العينات يحدث فقط عندما تتجاوز كمية الذاكرة غير المتعقَّبة القيمة 'max\_untracked\_memory'. وقد ترغب في ضبط 'max\_untracked\_memory' على 0 للحصول على أخذ عينات أكثر دقة.

<div id="memory_profiler_step">
  ## memory\_profiler\_step
</div>

<SettingsInfoBlock type="UInt64" default_value="4194304" />

يضبط قيمة `step` الخاصة بمُحلِّل الذاكرة. كلما أصبح استخدام الذاكرة في الاستعلام أكبر من كل خطوة تالية محسوبة بعدد البايتات، سيجمع مُحلِّل الذاكرة `stacktrace` الخاص بالتخصيص ويكتبه في [trace\_log](/ar/reference/system-tables/trace_log).

القيم الممكنة:

* عدد صحيح موجب من البايتات.

* القيمة 0 لإيقاف مُحلِّل الذاكرة.

<div id="memory_tracker_fault_probability">
  ## memory\_tracker\_fault\_probability
</div>

<SettingsInfoBlock type="Float" default_value="0" />

لاختبار `exception safety`، أطلق استثناءً في كل مرة يجري فيها تخصيص الذاكرة بالاحتمال المحدد.

<div id="memory_usage_overcommit_max_wait_microseconds">
  ## memory\_usage\_overcommit\_max\_wait\_microseconds
</div>

<SettingsInfoBlock type="UInt64" default_value="5000000" />

الحد الأقصى للمدة التي سينتظرها خيط التنفيذ حتى تتحرر الذاكرة في حالة memory overcommit على مستوى المستخدم.
إذا انتهت المهلة ولم تتحرر الذاكرة، فسيُرمى استثناء.
اقرأ المزيد عن [memory overcommit](/ar/concepts/features/configuration/settings/memory-overcommit).

<div id="merge_table_max_tables_to_look_for_schema_inference">
  ## merge\_table\_max\_tables\_to\_look\_for\_schema\_inference
</div>

<SettingsInfoBlock type="UInt64" default_value="1000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "1000"},{"label": "إعداد جديد"}]}]} />

عند إنشاء جدول `Merge` بدون مخطط محدد صراحةً، أو عند استخدام table function ‏`merge`، يُستنتج المخطط على أنه اتحاد لما لا يزيد على العدد المحدد من الجداول المتطابقة.
إذا كان عدد الجداول أكبر من ذلك، فسيُستنتج المخطط من أول عدد محدد من الجداول.

<div id="merge_tree_coarse_index_granularity">
  ## merge\_tree\_coarse\_index\_granularity
</div>

<SettingsInfoBlock type="UInt64" default_value="8" />

عند البحث عن البيانات، يفحص ClickHouse العلامات في ملف الفهرس. وإذا تبيّن لـ ClickHouse أن المفاتيح المطلوبة تقع ضمن نطاق معيّن، فإنه يقسم هذا النطاق إلى `merge_tree_coarse_index_granularity` نطاقات فرعية ويبحث فيها عن المفاتيح المطلوبة على نحوٍ تكراري.

القيم الممكنة:

* أي عدد صحيح زوجي موجب.

<div id="merge_tree_compact_parts_min_granules_to_multibuffer_read">
  ## merge\_tree\_compact\_parts\_min\_granules\_to\_multibuffer\_read
</div>

<SettingsInfoBlock type="UInt64" default_value="16" />

لا يكون لهذا الإعداد تأثير إلا في ClickHouse Cloud. يحدد عدد الـ حبيبات في stripe ضمن compact part في MergeTree tables اللازم لاستخدام قارئ متعدد المخازن المؤقتة، الذي يدعم القراءة المتوازية وprefetch. عند القراءة من remote fs، يؤدي استخدام قارئ متعدد المخازن المؤقتة إلى زيادة عدد read request.

<div id="merge_tree_determine_task_size_by_prewhere_columns">
  ## merge\_tree\_determine\_task\_size\_by\_prewhere\_columns
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

ما إذا كان ينبغي استخدام حجم أعمدة `prewhere` فقط لتحديد حجم مهمة القراءة.

<div id="merge_tree_max_bytes_to_use_cache">
  ## merge\_tree\_max\_bytes\_to\_use\_cache
</div>

<SettingsInfoBlock type="UInt64" default_value="2013265920" />

إذا كان ClickHouse سيقرأ أكثر من `merge_tree_max_bytes_to_use_cache` بايت في استعلام واحد، فلن يستخدم ذاكرة التخزين المؤقت للكتل غير المضغوطة.

تخزّن ذاكرة التخزين المؤقت للكتل غير المضغوطة البيانات المستخرجة للاستعلامات. ويستخدم ClickHouse هذه الذاكرة لتسريع الاستجابة للاستعلامات الصغيرة المتكررة. يحمي هذا الإعداد ذاكرة التخزين المؤقت من الامتلاء غير المفيد بسبب الاستعلامات التي تقرأ كميات كبيرة من البيانات. ويحدّد إعداد الخادم [uncompressed\_cache\_size](/ar/reference/settings/server-settings/settings#uncompressed_cache_size) حجم ذاكرة التخزين المؤقت للكتل غير المضغوطة.

القيم المحتملة:

* أي عدد صحيح موجب.

<div id="merge_tree_max_rows_to_use_cache">
  ## merge\_tree\_max\_rows\_to\_use\_cache
</div>

<SettingsInfoBlock type="UInt64" default_value="1048576" />

إذا كان ClickHouse سيقرأ أكثر من `merge_tree_max_rows_to_use_cache` صفًا في استعلام واحد، فلن يستخدم ذاكرة التخزين المؤقت للكتل غير المضغوطة.

تخزّن ذاكرة التخزين المؤقت للكتل غير المضغوطة البيانات المستخرجة للاستعلامات. يستخدم ClickHouse ذاكرة التخزين المؤقت هذه لتسريع الاستجابة للاستعلامات الصغيرة المتكررة. يحمي هذا الإعداد ذاكرة التخزين المؤقت من التدهور بسبب الاستعلامات التي تقرأ كمية كبيرة من البيانات. يحدّد إعداد الخادم [uncompressed\_cache\_size](/ar/reference/settings/server-settings/settings#uncompressed_cache_size) حجم ذاكرة التخزين المؤقت للكتل غير المضغوطة.

القيم الممكنة:

* أي عدد صحيح موجب.

<div id="merge_tree_min_bytes_for_concurrent_read">
  ## merge\_tree\_min\_bytes\_for\_concurrent\_read
</div>

<SettingsInfoBlock type="UInt64" default_value="251658240" />

إذا تجاوز عدد البايتات المراد قراءتها من ملف واحد في جدول يستخدم محرك [MergeTree](/ar/reference/engines/table-engines/mergetree-family/mergetree) القيمة `merge_tree_min_bytes_for_concurrent_read`، فسيحاول ClickHouse إجراء قراءة متزامنة لهذا الملف باستخدام عدة خيوط تنفيذ.

القيمة الممكنة:

* عدد صحيح موجب.

<div id="merge_tree_min_bytes_for_concurrent_read_for_remote_filesystem">
  ## merge\_tree\_min\_bytes\_for\_concurrent\_read\_for\_remote\_filesystem
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.10"},{"label": "0"},{"label": "تم إهمال الإعداد"}]}]} />

الحد الأدنى لعدد البايتات التي يجب قراءتها من ملف واحد قبل أن يتمكن محرك [MergeTree](/ar/reference/engines/table-engines/mergetree-family/mergetree) من موازاة القراءة عند القراءة من نظام ملفات بعيد. لا نوصي باستخدام هذا الإعداد.

القيم الممكنة:

* عدد صحيح موجب.

<div id="merge_tree_min_bytes_for_seek">
  ## merge\_tree\_min\_bytes\_for\_seek
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

إذا كانت المسافة بين كتلتَي بيانات مطلوب قراءتهما من ملف واحد أقل من `merge_tree_min_bytes_for_seek` بايت، فسيقرأ ClickHouse تسلسليًا نطاقًا من الملف يضم كلتا الكتلتين، متجنبًا بذلك إجراء seek إضافي.

القيم الممكنة:

* أي عدد صحيح موجب.

<div id="merge_tree_min_bytes_per_task_for_remote_reading">
  ## merge\_tree\_min\_bytes\_per\_task\_for\_remote\_reading
</div>

**الأسماء البديلة**: `filesystem_prefetch_min_bytes_for_single_read_task`

<SettingsInfoBlock type="UInt64" default_value="2097152" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.8"},{"label": "2097152"},{"label": "تم توحيد القيمة مع `filesystem_prefetch_min_bytes_for_single_read_task`"}]}]} />

الحد الأدنى لعدد البايتات المطلوب قراءتها لكل مهمة.

<div id="merge_tree_min_read_task_size">
  ## merge\_tree\_min\_read\_task\_size
</div>

<SettingsInfoBlock type="NonZeroUInt64" default_value="8" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.10"},{"label": "8"},{"label": "إعداد جديد"}]}]} />

حد أدنى صارم لحجم المهمة (حتى عندما يكون عدد الحبيبات منخفضًا وعدد خيوط التنفيذ المتاحة مرتفعًا، فلن نخصص مهامًا أصغر

<div id="merge_tree_min_rows_for_concurrent_read">
  ## merge\_tree\_min\_rows\_for\_concurrent\_read
</div>

<SettingsInfoBlock type="UInt64" default_value="163840" />

إذا تجاوز عدد الصفوف المطلوب قراءتها من ملف لجدول [MergeTree](/ar/reference/engines/table-engines/mergetree-family/mergetree) القيمة `merge_tree_min_rows_for_concurrent_read`، فسيحاول ClickHouse إجراء قراءة متزامنة من هذا الملف باستخدام عدة خيوط تنفيذ.

القيم الممكنة:

* عدد صحيح موجب.

<div id="merge_tree_min_rows_for_concurrent_read_for_remote_filesystem">
  ## merge\_tree\_min\_rows\_for\_concurrent\_read\_for\_remote\_filesystem
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.10"},{"label": "0"},{"label": "تم إهمال الإعداد"}]}]} />

الحد الأدنى لعدد الأسطر المطلوب قراءتها من ملف واحد قبل أن يتمكن محرك [MergeTree](/ar/reference/engines/table-engines/mergetree-family/mergetree) من موازاة القراءة عند القراءة من نظام ملفات بعيد. لا نوصي باستخدام هذا الإعداد.

القيم الممكنة:

* عدد صحيح موجب.

<div id="merge_tree_min_rows_for_seek">
  ## merge\_tree\_min\_rows\_for\_seek
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

إذا كانت المسافة بين كتلتَي بيانات مطلوب قراءتهما من ملف واحد أقل من `merge_tree_min_rows_for_seek` صفًا، فلن يُجري ClickHouse عملية seek داخل الملف، بل سيقرأ البيانات بشكل متسلسل.

القيم الممكنة:

* أي عدد صحيح موجب.

<div id="merge_tree_read_split_ranges_into_intersecting_and_non_intersecting_injection_probability">
  ## merge\_tree\_read\_split\_ranges\_into\_intersecting\_and\_non\_intersecting\_injection\_probability
</div>

<SettingsInfoBlock type="Float" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "0"},{"label": "لاختبار `PartsSplitter` — تقسيم نطاقات القراءة إلى نطاقات متداخلة وغير متداخلة في كل مرة تتم فيها القراءة من MergeTree، وذلك بالاحتمال المحدد."}]}]} />

لاختبار `PartsSplitter` — تقسيم نطاقات القراءة إلى نطاقات متداخلة وغير متداخلة في كل مرة تتم فيها القراءة من MergeTree، وذلك بالاحتمال المحدد.

<div id="merge_tree_storage_snapshot_sleep_ms">
  ## merge\_tree\_storage\_snapshot\_sleep\_ms
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.6"},{"label": "0"},{"label": "إعداد جديد لتصحيح اتساق لقطة التخزين في query"}]}]} />

يُدرج تأخيرًا اصطناعيًا (بالمللي ثانية) عند إنشاء لقطة تخزين لجداول MergeTree.
يُستخدم فقط لأغراض الاختبار وتصحيح الأخطاء.

القيم الممكنة:

* 0 - بدون تأخير (الافتراضي)
* N - تأخير بالمللي ثانية

<div id="merge_tree_use_const_size_tasks_for_remote_reading">
  ## merge\_tree\_use\_const\_size\_tasks\_for\_remote\_reading
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

ما إذا كان سيتم استخدام مهام ثابتة الحجم للقراءة من جدول بعيد.

<div id="merge_tree_use_deserialization_prefixes_cache">
  ## merge\_tree\_use\_deserialization\_prefixes\_cache
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.2"},{"label": "1"},{"label": "إعداد جديد للتحكم في استخدام ذاكرة التخزين المؤقت لبادئات فك التسلسل في MergeTree"}]}]} />

يُمكّن التخزين المؤقت للبيانات الوصفية للأعمدة من بادئات الملفات عند القراءة من الأقراص البعيدة في MergeTree.

<div id="merge_tree_use_prefixes_deserialization_thread_pool">
  ## merge\_tree\_use\_prefixes\_deserialization\_thread\_pool
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.2"},{"label": "1"},{"label": "إعداد جديد يتحكم في استخدام مجمّع خيوط التنفيذ لفك تسلسل البادئات بشكل متوازٍ في MergeTree"}]}]} />

يُمكّن استخدام مجمّع خيوط التنفيذ لقراءة البادئات بالتوازي في الأجزاء العريضة في MergeTree. ويُتحكَّم في حجم مجمّع خيوط التنفيذ هذا من خلال إعداد الخادم `max_prefixes_deserialization_thread_pool_size`.

<div id="merge_tree_use_v1_object_and_dynamic_serialization">
  ## merge\_tree\_use\_v1\_object\_and\_dynamic\_serialization
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.11"},{"label": "0"},{"label": "إضافة الإصدار الجديد V2 للتسلسل لأنواع JSON وDynamic"}]}]} />

عند التمكين، سيُستخدم الإصدار V1 من التسلسل لأنواع JSON وDynamic في MergeTree بدلًا من V2. ولا يسري تغيير هذا الإعداد إلا بعد إعادة تشغيل الخادم.

<div id="metrics_perf_events_enabled">
  ## metrics\_perf\_events\_enabled
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

إذا كان هذا الإعداد مفعّلًا، فسيُقاس بعض أحداث `perf` أثناء تنفيذ الاستعلامات.

<div id="metrics_perf_events_list">
  ## metrics\_perf\_events\_list
</div>

قائمة بمقاييس perf مفصولة بفواصل، وسيُجرى قياسها أثناء تنفيذ الاستعلامات. تعني القيمة الفارغة جميع الأحداث. راجع PerfEventInfo في الشيفرة المصدرية للاطلاع على الأحداث المتاحة.

<div id="min_bytes_to_use_direct_io">
  ## min\_bytes\_to\_use\_direct\_io
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

الحد الأدنى لحجم البيانات المطلوب لاستخدام الإدخال/الإخراج المباشر إلى قرص التخزين.

يستخدم ClickHouse هذا الإعداد عند قراءة البيانات من الجداول. إذا تجاوز الحجم الإجمالي لجميع البيانات المراد قراءتها من التخزين `min_bytes_to_use_direct_io` بايت، فسيقرأ ClickHouse البيانات من قرص التخزين باستخدام الخيار `O_DIRECT`.

القيم الممكنة:

* 0 — الإدخال/الإخراج المباشر معطّل.
* عدد صحيح موجب.

<div id="min_bytes_to_use_mmap_io">
  ## min\_bytes\_to\_use\_mmap\_io
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

هذا إعداد تجريبي. يحدد الحد الأدنى من الذاكرة لقراءة الملفات الكبيرة دون نسخ البيانات من النواة إلى فضاء المستخدم. القيمة الحدّية الموصى بها هي نحو 64 ميغابايت، لأن [mmap/munmap](https://en.wikipedia.org/wiki/Mmap) بطيء. ولا يكون ذلك مجديًا إلا مع الملفات الكبيرة، ولا يساعد إلا إذا كانت البيانات موجودة في ذاكرة التخزين المؤقت للصفحات.

القيم الممكنة:

* عدد صحيح موجب.
* 0 — تُقرأ الملفات الكبيرة فقط مع نسخ البيانات من النواة إلى فضاء المستخدم.

<div id="min_chunk_bytes_for_parallel_parsing">
  ## min\_chunk\_bytes\_for\_parallel\_parsing
</div>

<SettingsInfoBlock type="NonZeroUInt64" default_value="10485760" />

* النوع: عدد صحيح غير موقّع
* القيمة الافتراضية: 1 MiB

الحد الأدنى لحجم الجزء بالبايتات الذي سيحلّله كل خيط تنفيذ بالتوازي.

<div id="min_compress_block_size">
  ## min\_compress\_block\_size
</div>

<SettingsInfoBlock type="UInt64" default_value="65536" />

ينطبق على جداول [MergeTree](/ar/reference/engines/table-engines/mergetree-family/mergetree). لتقليل زمن الاستجابة عند معالجة الاستعلامات، تُضغط كتلة عند كتابة العلامة التالية إذا كان حجمها لا يقل عن `min_compress_block_size`. والقيمة الافتراضية هي 65,536.

أما الحجم الفعلي للكتلة، فإذا كانت البيانات غير المضغوطة أقل من `max_compress_block_size`، فلن يكون أقل من هذه القيمة، ولا أقل من حجم البيانات الخاص بعلامة واحدة.

لننظر إلى مثال. افترض أن `index_granularity` ضُبط على 8192 عند إنشاء الجدول.

لنكتب عمودًا من النوع UInt32 ‏(4 بايت لكل قيمة). عند كتابة 8192 صفًا، يكون الإجمالي 32 كيلوبايت من البيانات. وبما أن min\_compress\_block\_size = 65,536، فستتكوّن كتلة مضغوطة لكل علامتين.

ولنكتب عمود URL من النوع String ‏(بمتوسط حجم 60 بايت لكل قيمة). عند كتابة 8192 صفًا، يكون المتوسط أقل قليلًا من 500 كيلوبايت من البيانات. وبما أن هذا أكبر من 65,536، فستتكوّن كتلة مضغوطة لكل علامة. في هذه الحالة، عند قراءة البيانات من القرص ضمن نطاق علامة واحدة، لن يلزم فك ضغط بيانات إضافية.

<Note>
  هذا إعداد مخصص للمستخدمين الخبراء، ولا ينبغي تغييره إذا كنت لا تزال في بداية استخدام ClickHouse.
</Note>

<div id="min_count_to_compile_aggregate_expression">
  ## min\_count\_to\_compile\_aggregate\_expression
</div>

<SettingsInfoBlock type="UInt64" default_value="3" />

الحد الأدنى لعدد التعبيرات التجميعية المتطابقة اللازمة لبدء الترجمة الفورية JIT. لا يعمل هذا إلا إذا كان الإعداد [compile\_aggregate\_expressions](#compile_aggregate_expressions) ممكّنًا.

القيم الممكنة:

* عدد صحيح موجب.
* 0 — تُترجَم التعبيرات التجميعية المتطابقة دائمًا ترجمة فورية باستخدام JIT.

<div id="min_count_to_compile_expression">
  ## min\_count\_to\_compile\_expression
</div>

<SettingsInfoBlock type="UInt64" default_value="3" />

الحد الأدنى لعدد مرات تنفيذ التعبير نفسه قبل أن يُجمَّع.

<div id="min_count_to_compile_sort_description">
  ## min\_count\_to\_compile\_sort\_description
</div>

<SettingsInfoBlock type="UInt64" default_value="3" />

عدد أوصاف الترتيب المتطابقة قبل تجميعها باستخدام JIT

<div id="min_execution_speed">
  ## min\_execution\_speed
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

الحد الأدنى لسرعة التنفيذ، مقاسًا بعدد الصفوف في الثانية. يُتحقَّق منها عند كل كتلة بيانات بعد انقضاء
[`timeout_before_checking_execution_speed`](/ar/reference/settings/session-settings#timeout_before_checking_execution_speed)
. إذا كانت سرعة التنفيذ أقل من ذلك، يتم طرح استثناء.

<div id="min_execution_speed_bytes">
  ## min\_execution\_speed\_bytes
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

الحد الأدنى لعدد بايتات التنفيذ في الثانية. يُتحقَّق من ذلك عند كل كتلة بيانات عند انتهاء مهلة
[`timeout_before_checking_execution_speed`](/ar/reference/settings/session-settings#timeout_before_checking_execution_speed).
إذا كانت سرعة التنفيذ أقل من ذلك، يُرفَع استثناء.

<div id="min_external_table_block_size_bytes">
  ## min\_external\_table\_block\_size\_bytes
</div>

<SettingsInfoBlock type="UInt64" default_value="268402944" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.2"},{"label": "268402944"},{"label": "ادمج الكتل المُمرَّرة إلى الجدول الخارجي بحيث تصل إلى الحجم المحدد بالبايت، إذا لم تكن كبيرة بما يكفي."}]}]} />

ادمج الكتل المُمرَّرة إلى الجدول الخارجي بحيث تصل إلى الحجم المحدد بالبايت، إذا لم تكن كبيرة بما يكفي.

<div id="min_external_table_block_size_rows">
  ## min\_external\_table\_block\_size\_rows
</div>

<SettingsInfoBlock type="UInt64" default_value="1048449" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.2"},{"label": "1048449"},{"label": "دمج الكتل المُمرَّرة إلى الجدول الخارجي لتصل إلى الحجم المحدد من حيث عدد الصفوف، إذا لم تكن كبيرة بما يكفي"}]}]} />

دمج الكتل المُمرَّرة إلى الجدول الخارجي لتصل إلى الحجم المحدد من حيث عدد الصفوف، إذا لم تكن كبيرة بما يكفي.

<div id="min_filtered_ratio_for_lazy_final">
  ## min\_filtered\_ratio\_for\_lazy\_final
</div>

<SettingsInfoBlock type="Float" default_value="0.5" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "0.5"},{"label": "إعداد جديد للحد الأدنى لنسبة العلامات المُصفّاة اللازمة لمتابعة تحسين FINAL الكسول"}]}]} />

الحد الأدنى لنسبة العلامات التي يُصفّيها تحليل الفهرس من أجل تحسين FINAL الكسول. إذا كانت نسبة العلامات المُصفّاة أقل من هذه القيمة، فسيتم الرجوع إلى FINAL العادي. تؤدي القيمة 0 إلى تعطيل هذا الفحص.

<div id="min_free_disk_bytes_to_perform_insert">
  ## min\_free\_disk\_bytes\_to\_perform\_insert
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.9"},{"label": "0"},{"label": "الإبقاء على قدر من المساحة الحرة على القرص لعمليات الإدراج، مع السماح في الوقت نفسه بالكتابة المؤقتة."}]}, {"id": "row-2","items": [{"label": "24.10"},{"label": "0"},{"label": "إعداد جديد."}]}]} />

الحد الأدنى من بايتات المساحة الحرة على القرص المطلوبة لتنفيذ عملية إدراج.

<div id="min_free_disk_ratio_to_perform_insert">
  ## min\_free\_disk\_ratio\_to\_perform\_insert
</div>

<SettingsInfoBlock type="Float" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.9"},{"label": "0"},{"label": "الاحتفاظ بجزء من مساحة القرص الحرة، مُعبَّراً عنه كنسبة من إجمالي مساحة القرص، أثناء عمليات الإدراج مع الاستمرار في السماح بالكتابة المؤقتة."}]}, {"id": "row-2","items": [{"label": "24.10"},{"label": "0"},{"label": "إعداد جديد."}]}]} />

الحد الأدنى لنسبة المساحة الحرة على القرص اللازمة لتنفيذ عملية إدراج.

<div id="min_free_disk_space_for_temporary_data">
  ## min\_free\_disk\_space\_for\_temporary\_data
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

الحد الأدنى من مساحة القرص التي يجب الإبقاء عليها عند كتابة البيانات المؤقتة المستخدمة في الفرز الخارجي والتجميع.

<div id="min_hit_rate_to_use_consecutive_keys_optimization">
  ## min\_hit\_rate\_to\_use\_consecutive\_keys\_optimization
</div>

<SettingsInfoBlock type="Float" default_value="0.5" />

الحد الأدنى لمعدل الإصابة لذاكرة التخزين المؤقت المستخدمة في تحسين المفاتيح المتتالية في التجميع، للإبقاء على هذا التحسين مفعّلًا

<div id="min_insert_block_size_bytes">
  ## min\_insert\_block\_size\_bytes
</div>

<SettingsInfoBlock type="UInt64" default_value="268402944" />

الحد الأدنى لحجم الكتل (بالبايت) المطلوب تكوينها لإدراجها في جدول.

يعمل هذا الإعداد مع min\_insert\_block\_size\_rows، ويتحكم في تكوين الكتل ضمن السياقات نفسها (تحليل التنسيق وعمليات INSERT). راجع min\_insert\_block\_size\_rows للحصول على معلومات تفصيلية حول متى وكيفية تطبيق هذه الإعدادات.

القيم الممكنة:

* عدد صحيح موجب.
* 0 — لا يشارك الإعداد في تكوين الكتل.

<div id="min_insert_block_size_bytes_for_materialized_views">
  ## min\_insert\_block\_size\_bytes\_for\_materialized\_views
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

يحدّد الحد الأدنى لعدد البايتات في الكتلة التي يمكن إدراجها في جدول عبر استعلام `INSERT`. وتُدمج الكتل الأصغر حجمًا في كتل أكبر. لا يُطبَّق هذا الإعداد إلا على الكتل المُدرجة في [العرض المادي](/ar/reference/statements/create/view). ومن خلال ضبط هذا الإعداد، يمكنك التحكّم في دمج الكتل أثناء الدفع إلى العرض المادي وتجنّب الاستهلاك المفرط للذاكرة.

القيم الممكنة:

* أي عدد صحيح موجب.
* 0 — تعطيل الدمج.

**انظر أيضًا**

* [min\_insert\_block\_size\_bytes](#min_insert_block_size_bytes)

<div id="min_insert_block_size_rows">
  ## min\_insert\_block\_size\_rows
</div>

<SettingsInfoBlock type="UInt64" default_value="1048449" />

الحد الأدنى لحجم الكتل (بالصفوف) التي يجب تكوينها للإدراج في جدول.

يتحكم هذا الإعداد في تكوين الكتل ضمن سياقين:

1. تحليل التنسيق: عندما يحلّل الخادم تنسيقات الإدخال المعتمدة على الصفوف (CSV وTSV وJSONEachRow وغيرها) من أي واجهة (HTTP أو clickhouse-client مع بيانات Inline أو gRPC أو PostgreSQL wire protocol)، تُخرَج الكتل عندما:

   * يتم بلوغ كلٍّ من 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 وعندما تتدفق البيانات عبر العروض المادية، يعتمد سلوك هذا الإعداد على `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

   * عند التعطيل (default): تُخرَج الكتل عند بلوغ min\_insert\_block\_size\_rows أو min\_insert\_block\_size\_bytes. ولا يتم فرض إعدادات max\_insert\_block\_size.

القيم الممكنة:

* عدد صحيح موجب.
* 0 — لا يشارك الإعداد في تكوين الكتل.

<div id="min_insert_block_size_rows_for_materialized_views">
  ## min\_insert\_block\_size\_rows\_for\_materialized\_views
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

يحدّد الحد الأدنى لعدد الصفوف في الكتلة التي يمكن إدراجها في جدول بواسطة استعلام `INSERT`. وتُدمَج الكتل الأصغر حجمًا في كتل أكبر. لا يُطبَّق هذا الإعداد إلا على الكتل المُدرجة في [العرض المادي](/ar/reference/statements/create/view). ومن خلال ضبط هذا الإعداد، يمكنك التحكّم في دمج الكتل عند الإرسال إلى العرض المادي وتجنّب الاستخدام المفرط للذاكرة.

القيم الممكنة:

* أي عدد صحيح موجب.
* 0 — الدمج معطّل.

**انظر أيضًا**

* [min\_insert\_block\_size\_rows](#min_insert_block_size_rows)

<div id="min_joined_block_size_bytes">
  ## min\_joined\_block\_size\_bytes
</div>

<SettingsInfoBlock type="UInt64" default_value="524288" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.11"},{"label": "524288"},{"label": "إعداد جديد."}]}]} />

الحد الأدنى لحجم الكتلة بالبايت لكتل الإدخال والإخراج الخاصة بـ JOIN (إذا كانت خوارزمية JOIN تدعم ذلك). ستُدمَج الكتل الصغيرة. 0 تعني غير محدود.

<div id="min_joined_block_size_rows">
  ## min\_joined\_block\_size\_rows
</div>

<SettingsInfoBlock type="UInt64" default_value="65409" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.7"},{"label": "65409"},{"label": "إعداد جديد."}]}]} />

الحد الأدنى لحجم الكتلة، محسوبًا بعدد الصفوف، لكتل الإدخال والإخراج الخاصة بـ `JOIN` (إذا كانت خوارزمية `JOIN` تدعم ذلك). ستُدمَج الكتل الصغيرة. وتعني القيمة 0 عدم وجود حد.

<div id="min_os_cpu_wait_time_ratio_to_throw">
  ## min\_os\_cpu\_wait\_time\_ratio\_to\_throw
</div>

<SettingsInfoBlock type="Float" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "0"},{"label": "تم تغيير قيم الإعداد وإرجاعها إلى 25.4"}]}, {"id": "row-2","items": [{"label": "25.4"},{"label": "0"},{"label": "إعداد جديد"}]}]} />

الحد الأدنى للنسبة بين وقت انتظار CPU في نظام التشغيل (المقياس `OSCPUWaitMicroseconds`) ووقت الانشغال (المقياس `OSCPUVirtualTimeMicroseconds`) الذي عنده يبدأ النظر في رفض الاستعلامات. ويُستخدم الاستيفاء الخطي بين الحدين الأدنى والأقصى لهذه النسبة لحساب الاحتمال، ويكون الاحتمال 0 عند هذه النقطة.

<div id="min_outstreams_per_resize_after_split">
  ## min\_outstreams\_per\_resize\_after\_split
</div>

<SettingsInfoBlock type="UInt64" default_value="24" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.6"},{"label": "24"},{"label": "إعداد جديد."}]}]} />

يحدّد الحد الأدنى لعدد تدفقات الإخراج لمعالج `Resize` أو `StrictResize` بعد تنفيذ عملية التقسيم أثناء توليد خط المعالجة. وإذا كان عدد التدفقات الناتج أقل من هذه القيمة، فلن تُنفَّذ عملية التقسيم.

<div id="what-is-a-resize-node">
  ### ما هي عقدة Resize
</div>

عقدة `Resize` هي معالج ضمن خط المعالجة للاستعلام يضبط عدد تدفقات البيانات المارة عبره. ويمكنها زيادة عدد التدفقات أو تقليله لموازنة عبء العمل بين عدة خيوط تنفيذ أو معالجات. فعلى سبيل المثال، إذا كان الاستعلام يتطلب قدرًا أكبر من التوازي، يمكن لعقدة `Resize` تقسيم تدفق واحد إلى عدة تدفقات. وبالمقابل، يمكنها دمج عدة تدفقات في عدد أقل لتوحيد معالجة البيانات.

تضمن عقدة `Resize` توزيع البيانات بالتساوي بين التدفقات مع الحفاظ على بنية كتل البيانات. ويساعد ذلك على تحسين استخدام الموارد ورفع أداء الاستعلام.

<div id="why-the-resize-node-needs-to-be-split">
  ### لماذا يلزم تقسيم عقدة Resize
</div>

أثناء تنفيذ خط المعالجة، يشهد `status_mutex` الخاص بـ ExecutingGraph::Node في عقدة `Resize` المركزية تَزاحمًا شديدًا، ولا سيما في البيئات ذات الأعداد الكبيرة من الأنوية، ويؤدي هذا التزاحم إلى:

1. زيادة زمن الاستجابة في ExecutingGraph::updateNode، مما يؤثر مباشرةً في أداء الاستعلام.
2. إهدار مفرط لدورات CPU في التزاحم على القفل الدوراني (native\_queued\_spin\_lock\_slowpath)، مما يضعف الكفاءة.
3. انخفاض استغلال CPU، مما يحدّ من التوازي ومعدل النقل.

<div id="how-the-resize-node-gets-split">
  ### كيفية تقسيم عقدة Resize
</div>

1. يُتحقَّق من عدد تدفقات الإخراج لضمان إمكانية إجراء التقسيم: بحيث تفي تدفقات الإخراج لكل `معالج` مُقسَّم بعتبة `min_outstreams_per_resize_after_split` أو تتجاوزها.
2. تُقسَّم عقدة `Resize` إلى عقد `Resize` أصغر بعدد متساوٍ من المنافذ، بحيث تتولى كل منها مجموعة فرعية من تدفقات الإدخال والإخراج.
3. تُعالَج كل مجموعة بشكل مستقل، مما يقلل التزاحم على القفل.

<div id="splitting-resize-node-with-arbitrary-inputsoutputs">
  ### تقسيم عقدة Resize بمدخلات/مخرجات غير قابلة للتقسيم بالتساوي
</div>

في بعض الحالات، عندما لا تكون المدخلات/المخرجات قابلة للقسمة بالتساوي على عدد عقد `Resize` المقسّمة، تُوصَل بعض المدخلات بـ `NullSource` وتُوصَل بعض المخرجات بـ `NullSink`. يتيح ذلك إجراء التقسيم من دون التأثير في التدفق العام للبيانات.

<div id="purpose-of-the-setting">
  ### الغرض من الإعداد
</div>

يضمن الإعداد `min_outstreams_per_resize_after_split` أن يكون تقسيم عُقد `Resize` مجديًا، ويمنع إنشاء عدد قليل جدًا من التدفقات، مما قد يؤدي إلى معالجة متوازية غير فعّالة. ومن خلال فرض حد أدنى لعدد تدفقات الإخراج، يساعد هذا الإعداد في الحفاظ على توازن بين التوازي والعبء الإضافي، مما يحسّن تنفيذ الاستعلام في السيناريوهات التي تتضمن تقسيم التدفقات ودمجها.

<div id="disabling-the-setting">
  ### تعطيل هذا الإعداد
</div>

لتعطيل تقسيم عُقد `Resize`، اضبط هذا الإعداد على 0. سيؤدي ذلك إلى منع تقسيم عُقد `Resize` أثناء إنشاء خط المعالجة، مما يسمح لها بالاحتفاظ ببنيتها الأصلية دون تقسيمها إلى عُقد أصغر.

<div id="min_table_rows_to_use_projection_index">
  ## min\_table\_rows\_to\_use\_projection\_index
</div>

<SettingsInfoBlock type="UInt64" default_value="1000000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.11"},{"label": "1000000"},{"label": "إعداد جديد"}]}]} />

إذا كان العدد المُقدَّر للصفوف المراد قراءتها من الجدول أكبر من هذه العتبة أو مساويًا لها، فسيحاول ClickHouse استخدام فهرس الإسقاط أثناء تنفيذ الاستعلام.

<div id="mongodb_throw_on_unsupported_query">
  ## mongodb\_throw\_on\_unsupported\_query
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.9"},{"label": "1"},{"label": "إعداد جديد."}]}, {"id": "row-2","items": [{"label": "24.10"},{"label": "1"},{"label": "إعداد جديد."}]}]} />

إذا كان مفعّلًا، فستُرجِع جداول MongoDB خطأً عندما يتعذر تكوين استعلام MongoDB. وإلا، يقرأ ClickHouse الجدول بالكامل ويعالجه محليًا. لا يسري هذا الخيار عندما تكون 'allow\_experimental\_analyzer=0'.

<div id="move_all_conditions_to_prewhere">
  ## move\_all\_conditions\_to\_prewhere
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

انقل جميع الشروط التي يمكن نقلها من WHERE إلى PREWHERE

<div id="move_primary_key_columns_to_end_of_prewhere">
  ## move\_primary\_key\_columns\_to\_end\_of\_prewhere
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

انقل شروط PREWHERE التي تتضمن أعمدة المفتاح الأساسي إلى نهاية سلسلة AND. ومن المرجح أن تكون هذه الشروط قد أُخذت بالفعل في الاعتبار أثناء تحليل المفتاح الأساسي، ولذلك لن تسهم كثيرًا في التصفية داخل PREWHERE.

<div id="multiple_joins_try_to_keep_original_names">
  ## multiple\_joins\_try\_to\_keep\_original\_names
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

لا تُضِف أسماءً مستعارة إلى قائمة التعبيرات على المستوى الأعلى عند إعادة كتابة عمليات الربط المتعددة

<div id="mutations_execute_nondeterministic_on_initiator">
  ## mutations\_execute\_nondeterministic\_on\_initiator
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

إذا كانت القيمة `true`، فستُنفَّذ الدوال الثابتة غير الحتمية (مثل الدالة `now()`) على المُبادِر، وتُستبدل بقيم حرفية في استعلامات `UPDATE` و`DELETE`. يساعد ذلك على إبقاء البيانات متزامنة عبر النسخ المتماثلة عند تنفيذ الطفرات باستخدام دوال ثابتة غير حتمية. القيمة الافتراضية: `false`.

<div id="mutations_execute_subqueries_on_initiator">
  ## mutations\_execute\_subqueries\_on\_initiator
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

إذا كانت القيمة `true`، تُنفَّذ الاستعلامات الفرعية القيَمية على المُبادِر وتُستبدل بقيم حرفية في استعلامات `UPDATE` و`DELETE`. القيمة الافتراضية: `false`.

<div id="mutations_max_literal_size_to_replace">
  ## mutations\_max\_literal\_size\_to\_replace
</div>

<SettingsInfoBlock type="UInt64" default_value="16384" />

الحد الأقصى لحجم القيمة الحرفية المُسلسلة، بالبايت، التي يمكن استبدالها في استعلامات `UPDATE` و`DELETE`. لا يسري هذا إلا إذا كان أحد الإعدادين المذكورين أعلاه مُمكّنًا على الأقل. القيمة الافتراضية: 16384 ‏(16 KiB).

<div id="mutations_sync">
  ## mutations\_sync
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

يسمح بتنفيذ استعلامات `ALTER TABLE ... UPDATE|DELETE|MATERIALIZE INDEX|MATERIALIZE PROJECTION|MATERIALIZE COLUMN|MATERIALIZE STATISTICS` ([الطفرات](/ar/reference/statements/alter/index#mutations)) بشكل متزامن.

القيم الممكنة:

| القيمة | الوصف                                                                                                                                                         |
| ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `0`    | تُنفَّذ الطفرات بشكل غير متزامن.                                                                                                                              |
| `1`    | ينتظر الاستعلام حتى تكتمل جميع الطفرات على الخادم الحالي.                                                                                                     |
| `2`    | ينتظر الاستعلام حتى تكتمل جميع الطفرات على جميع النُسخ المتماثلة (إن وُجدت).                                                                                  |
| `3`    | ينتظر الاستعلام فقط النُسخ المتماثلة النشطة. وهذا مدعوم فقط لـ `SharedMergeTree`. أما في `ReplicatedMergeTree`، فيكون السلوك مماثلًا لـ `mutations_sync = 2`. |

<div id="mysql_datatypes_support_level">
  ## mysql\_datatypes\_support\_level
</div>

<SettingsInfoBlock type="MySQLDataTypesSupport" default_value="decimal,datetime64,date2Date32" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": "decimal,datetime64,date2Date32"},{"label": "تمكين تعيينات أنواع MySQL الحديثة افتراضيًا."}]}]} />

يحدّد كيفية تحويل أنواع MySQL إلى أنواع ClickHouse المقابلة. وهي قائمة مفصولة بفواصل يمكن أن تتضمن أي تركيبة من `decimal` أو `datetime64` أو `date2Date32` أو `date2String`. جميع التعيينات الحديثة (`decimal` و`datetime64` و`date2Date32`) مفعّلة افتراضيًا.

* `decimal`: تحويل النوعين `NUMERIC` و`DECIMAL` إلى `Decimal` عندما تسمح precision بذلك.
* `datetime64`: تحويل النوعين `DATETIME` و`TIMESTAMP` إلى `DateTime64` بدلًا من `DateTime` عندما لا تكون precision `0`.
* `date2Date32`: تحويل `DATE` إلى `Date32` بدلًا من `Date`. وله أولوية على `date2String`.
* `date2String`: تحويل `DATE` إلى `String` بدلًا من `Date`. وتتجاوزه `datetime64`.

<div id="mysql_map_fixed_string_to_text_in_show_columns">
  ## mysql\_map\_fixed\_string\_to\_text\_in\_show\_columns
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.2"},{"label": "1"},{"label": "تقليل الجهد اللازم لإعداد اتصال ClickHouse بأدوات BI."}]}]} />

عند التمكين، سيُعرض نوع البيانات [FixedString](/ar/reference/data-types/fixedstring) في ClickHouse كـ `TEXT` في [SHOW COLUMNS](/ar/reference/statements/show#show_columns).

يسري ذلك فقط عند إنشاء الاتصال عبر MySQL wire protocol.

* 0 - استخدم `BLOB`.
* 1 - استخدم `TEXT`.

<div id="mysql_map_string_to_text_in_show_columns">
  ## mysql\_map\_string\_to\_text\_in\_show\_columns
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.2"},{"label": "1"},{"label": "تقليل الجهد اللازم لإعداد ربط ClickHouse بأدوات BI."}]}]} />

عند التمكين، سيُعرض نوع البيانات [String](/ar/reference/data-types/string) في ClickHouse على أنه `TEXT` في [SHOW COLUMNS](/ar/reference/statements/show#show_columns).

لا يؤثر هذا إلا عند إنشاء الاتصال عبر بروتوكول MySQL wire.

* 0 - استخدم `BLOB`.
* 1 - استخدم `TEXT`.

<div id="mysql_max_rows_to_insert">
  ## mysql\_max\_rows\_to\_insert
</div>

<SettingsInfoBlock type="UInt64" default_value="65536" />

الحد الأقصى لعدد الصفوف في عملية الإدراج الدفعي في MySQL ضمن محرك تخزين MySQL

<div id="network_compression_method">
  ## network\_compression\_method
</div>

<SettingsInfoBlock type="String" default_value="LZ4" />

ترميز الضغط المستخدم لاتصالات العميل/الخادم والخادم/الخادم.

القيم الممكنة:

* `NONE` — بدون ضغط.
* `LZ4` — استخدم ترميز `LZ4`.
* `LZ4HC` — استخدم ترميز `LZ4HC`.
* `ZSTD` — استخدم ترميز `ZSTD`.

**انظر أيضًا**

* [network\_zstd\_compression\_level](#network_zstd_compression_level)

<div id="network_zstd_compression_level">
  ## network\_zstd\_compression\_level
</div>

<SettingsInfoBlock type="Int64" default_value="1" />

يحدّد مستوى ضغط ZSTD. يُستخدم فقط عندما يكون [network\_compression\_method](#network_compression_method) مضبوطًا على `ZSTD`.

القيم الممكنة:

* عدد صحيح موجب من 1 إلى 15.

<div id="normalize_function_names">
  ## normalize\_function\_names
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "21.3"},{"label": "1"},{"label": "طبّع أسماء الدوال إلى صيغها القياسية، وكان ذلك مطلوبًا لتوجيه استعلامات الإسقاط"}]}]} />

طبّع أسماء الدوال إلى صيغها القياسية

<div id="number_of_mutations_to_delay">
  ## number\_of\_mutations\_to\_delay
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

إذا كان الجدول المُطبَّق عليه طفرة يحتوي على هذا العدد أو أكثر من الطفرات غير المكتملة، فسيتم إبطاء عمليات الطفرة الخاصة بالجدول بشكل مصطنع. 0 - معطّل

<div id="number_of_mutations_to_throw">
  ## number\_of\_mutations\_to\_throw
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

إذا كان الجدول الذي طُبِّقت عليه طفرات يحتوي على هذا العدد أو أكثر من الطفرات غير المكتملة، فسيتم طرح الاستثناء 'Too many mutations ...'. 0 - معطّل

<div id="odbc_bridge_connection_pool_size">
  ## odbc\_bridge\_connection\_pool\_size
</div>

<SettingsInfoBlock type="UInt64" default_value="16" />

حجم تجمّع الاتصالات لكل سلسلة إعدادات اتصال في ODBC bridge.

<div id="odbc_bridge_use_connection_pooling">
  ## odbc\_bridge\_use\_connection\_pooling
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

استخدم تجمّع الاتصالات في جسر ODBC. إذا ضُبط هذا الإعداد على false، فسيُنشأ اتصال جديد في كل مرة.

<div id="offset">
  ## offset
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

يحدّد عدد الصفوف التي يجب تخطيها قبل البدء في إرجاع الصفوف من الاستعلام. ويعدّل قيمة الإزاحة المحددة بواسطة عبارة [OFFSET](/ar/reference/statements/select/offset)، بحيث تُجمع هاتان القيمتان.

القيم الممكنة:

* 0 — لا يتم تخطي أي صفوف.
* عدد صحيح موجب.

**مثال**

جدول الإدخال:

```sql theme={null}
CREATE TABLE test (i UInt64) ENGINE = MergeTree() ORDER BY i;
INSERT INTO test SELECT number FROM numbers(500);
```

الاستعلام:

```sql theme={null}
SET limit = 5;
SET offset = 7;
SELECT * FROM test LIMIT 10 OFFSET 100;
```

النتيجة:

```text theme={null}
┌───i─┐
│ 107 │
│ 108 │
│ 109 │
└─────┘
```

<div id="opentelemetry_start_keeper_trace_probability">
  ## opentelemetry\_start\_keeper\_trace\_probability
</div>

<SettingsInfoBlock type="FloatAuto" default_value="auto" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "auto"},{"label": "إعداد جديد"}]}]} />

احتمال بدء تتبّع لطلب ZooKeeper، سواء كان هناك تتبّع أصل أم لا.

القيم الممكنة:

* 'auto' - يساوي الإعداد opentelemetry\_start\_trace\_probability
* 0 — يكون التتبّع معطّلًا
* من 0 إلى 1 — الاحتمال (على سبيل المثال، 1.0 = مفعّل دائمًا)

<div id="opentelemetry_start_trace_probability">
  ## opentelemetry\_start\_trace\_probability
</div>

<SettingsInfoBlock type="Float" default_value="0" />

يحدّد احتمال أن يتمكّن ClickHouse من بدء تتبّع للاستعلامات المنفّذة (إذا لم يتم تمرير [trace context](https://www.w3.org/TR/trace-context/) أصل).

Possible values:

* 0 — يكون التتبّع معطّلًا لجميع الاستعلامات المنفّذة (إذا لم يتم تمرير trace context أصل).
* عدد موجب بفاصلة عائمة ضمن النطاق \[0..1]. على سبيل المثال، إذا كانت قيمة الإعداد `0,5`، يمكن لـ ClickHouse في المتوسط بدء تتبّع لنصف الاستعلامات.
* 1 — يكون التتبّع مفعّلًا لجميع الاستعلامات المنفّذة.

<div id="opentelemetry_trace_cpu_scheduling">
  ## opentelemetry\_trace\_cpu\_scheduling
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "0"},{"label": "إعداد جديد لتتبّع ميزة `cpu_slot_preemption`."}]}]} />

اجمع سبانات OpenTelemetry لجدولة CPU الاستباقية لأعباء العمل.

<div id="opentelemetry_trace_processors">
  ## opentelemetry\_trace\_processors
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

يجمع سبان OpenTelemetry الخاصة بالمعالجات.

<div id="optimize_aggregation_in_order">
  ## optimize\_aggregation\_in\_order
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

يُمكّن تحسين [GROUP BY](/ar/reference/statements/select/group-by) في استعلامات [SELECT](/ar/reference/statements/select/index) لتجميع البيانات بالترتيب المقابل في جداول [MergeTree](/ar/reference/engines/table-engines/mergetree-family/mergetree).

القيم الممكنة:

* 0 — تحسين `GROUP BY` معطّل.
* 1 — تحسين `GROUP BY` مفعّل.

**راجع أيضًا**

* [تحسين GROUP BY](/ar/reference/statements/select/group-by#group-by-optimization-depending-on-table-sorting-key)

<div id="optimize_aggregators_of_group_by_keys">
  ## optimize\_aggregators\_of\_group\_by\_keys
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

يزيل دوال التجميع min/max/any/anyLast من مفاتيح GROUP BY في قسم SELECT

<div id="optimize_and_compare_chain">
  ## optimize\_and\_compare\_chain
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.2"},{"label": "1"},{"label": "إعداد جديد"}]}]} />

يُولِّد مقارنات ثابتة في سلاسل AND لتحسين قدرة التصفية. ويدعم المعاملات `<` و `<=` و `>` و `>=` و `=` وأي مزيج منها. على سبيل المثال، `(a < b) AND (b < c) AND (c < 5)` ستصبح `(a < b) AND (b < c) AND (c < 5) AND (b < 5) AND (a < 5)`.

<div id="optimize_append_index">
  ## optimize\_append\_index
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

استخدم [القيود](/ar/reference/statements/create/table#constraints) لإضافة شرط الفهرس. القيمة الافتراضية هي `false`.

القيم الممكنة:

* true, false

<div id="optimize_arithmetic_operations_in_aggregate_functions">
  ## optimize\_arithmetic\_operations\_in\_aggregate\_functions
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

أخرج العمليات الحسابية من دوال التجميع

<div id="optimize_const_name_size">
  ## optimize\_const\_name\_size
</div>

<SettingsInfoBlock type="Int64" default_value="256" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.11"},{"label": "256"},{"label": "يستبدل الثوابت الكبيرة بقيمة scalar ويستخدم hash اسمًا لها (يُقدَّر الحجم بطول الاسم)"}]}]} />

يستبدل الثوابت الكبيرة بقيمة scalar ويستخدم hash اسمًا لها (يُقدَّر الحجم بطول الاسم).

القيم الممكنة:

* عدد صحيح موجب - الحد الأقصى لطول الاسم،
* 0 — دائمًا،
* عدد صحيح سالب - أبدًا.

<div id="optimize_count_from_files">
  ## optimize\_count\_from\_files
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

يؤدي إلى تفعيل أو تعطيل تحسين حساب عدد الصفوف من الملفات عبر تنسيقات الإدخال المختلفة. وينطبق ذلك على دوال/محركات الجداول `file`/`s3`/`url`/`hdfs`/`azureBlobStorage`.

القيم الممكنة:

* 0 — التحسين معطّل.
* 1 — التحسين مفعّل.

<div id="optimize_dictget_tuple_element">
  ## optimize\_dictget\_tuple\_element
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "1"},{"label": "إعادة كتابة tupleElement(dictGet(..., tuple_of_attrs, ...), N) كاستدعاء dictGet لسمة واحدة."}]}]} />

حوِّل `tupleElement(dictGet('dict', ('a', 'b', 'c'), key), 2)` إلى `dictGet('dict', 'b', key)` لتجنّب جلب سمات القاموس غير الضرورية. يدعم الوصول الموضعي (`.1`, `.2`, ...) والمسمّى (`.b`)، ويُطبَّق أيضًا على `dictGetOrDefault` عندما تكون وسيطة القيمة الافتراضية tuple ثابتة أو `tuple(...)` من الثوابت.

<div id="optimize_distinct_in_order">
  ## optimize\_distinct\_in\_order
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

فعِّل تحسين DISTINCT إذا كانت بعض الأعمدة فيه تُشكّل بادئة لمفتاح الترتيب. على سبيل المثال، بادئة مفتاح الترتيب في MergeTree أو في عبارة ORDER BY

<div id="optimize_distributed_group_by_sharding_key">
  ## optimize\_distributed\_group\_by\_sharding\_key
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

يُحسِّن استعلامات `GROUP BY sharding_key` عبر تجنّب التجميع المكلف على الخادم المُبادِر (مما يقلّل استخدام الذاكرة لهذا الاستعلام على الخادم المُبادِر).

أنواع الاستعلامات التالية مدعومة (بما في ذلك جميع التركيبات بينها):

* `SELECT DISTINCT [..., ]sharding_key[, ...] FROM dist`
* `SELECT ... FROM dist GROUP BY sharding_key[, ...]`
* `SELECT ... FROM dist GROUP BY sharding_key[, ...] ORDER BY x`
* `SELECT ... FROM dist GROUP BY sharding_key[, ...] LIMIT 1`
* `SELECT ... FROM dist GROUP BY sharding_key[, ...] LIMIT 1 BY x`

أنواع الاستعلامات التالية غير مدعومة (وقد يُضاف دعم بعضها لاحقًا):

* `SELECT ... GROUP BY sharding_key[, ...] WITH TOTALS`
* `SELECT ... GROUP BY sharding_key[, ...] WITH ROLLUP`
* `SELECT ... GROUP BY sharding_key[, ...] WITH CUBE`
* `SELECT ... GROUP BY sharding_key[, ...] SETTINGS extremes=1`

القيم الممكنة:

* 0 — معطّل.
* 1 — مفعّل.

انظر أيضًا:

* [distributed\_group\_by\_no\_merge](#distributed_group_by_no_merge)
* [distributed\_push\_down\_limit](#distributed_push_down_limit)
* [optimize\_skip\_unused\_shards](#optimize_skip_unused_shards)

<Note>
  حاليًا، يتطلب هذا `optimize_skip_unused_shards` (والسبب هو أنه قد يُفعَّل افتراضيًا يومًا ما، ولن يعمل بشكل صحيح إلا إذا أُدرجت البيانات عبر جدول Distributed، أي إذا وُزِّعت البيانات وفقًا لـ `sharding_key`).
</Note>

<div id="optimize_dry_run_check_part">
  ## optimize\_dry\_run\_check\_part
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "1"},{"label": "إعداد جديد"}]}]} />

عند التفعيل، يتحقق `OPTIMIZE ... DRY RUN` من صحة الجزء المدمج الناتج باستخدام `checkDataPart`. وإذا فشل التحقق، يتم طرح استثناء.

<div id="optimize_empty_string_comparisons">
  ## optimize\_empty\_string\_comparisons
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.10"},{"label": "1"},{"label": "إعداد جديد."}]}]} />

حوِّل التعبيرات مثل `col = ''` أو `'' = col` إلى `empty(col)`، و`col != ''` أو `'' != col` إلى `notEmpty(col)`،
وذلك فقط عندما يكون `col` من النوع `String` أو `FixedString`.

<div id="optimize_extract_common_expressions">
  ## optimize\_extract\_common\_expressions
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "1"},{"label": "تحسين تعبيرات WHERE وPREWHERE وON وHAVING وQUALIFY عبر استخراج التعبيرات المشتركة من حالات OR بين الاقترانات."}]}, {"id": "row-2","items": [{"label": "24.12"},{"label": "0"},{"label": "إضافة إعداد لتحسين تعبيرات WHERE وPREWHERE وON وHAVING وQUALIFY عبر استخراج التعبيرات المشتركة من حالات OR بين الاقترانات."}]}]} />

يسمح باستخراج التعبيرات المشتركة من حالات OR في تعبيرات WHERE وPREWHERE وON وHAVING وQUALIFY. يمكن إعادة كتابة تعبير منطقي مثل `(A AND B) OR (A AND C)` إلى `A AND (B OR C)`، مما قد يساعد في الاستفادة من:

* الفهارس في تعبيرات التصفية البسيطة
* تحسين تحويل cross إلى inner join

<div id="optimize_functions_to_subcolumns">
  ## optimize\_functions\_to\_subcolumns
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.8"},{"label": "1"},{"label": "الإعداد مُمكَّن افتراضيًا"}]}]} />

يُمكّن هذا الخيار التحسين أو يعطّله من خلال تحويل بعض الدوال إلى قراءة الأعمدة الفرعية. وهذا يقلّل مقدار البيانات المطلوب قراءتها.

يمكن تحويل هذه الدوال:

* [length](/ar/reference/functions/regular-functions/array-functions#length) لقراءة العمود الفرعي [size0](/ar/reference/data-types/array#array-size).
* [empty](/ar/reference/functions/regular-functions/array-functions#empty) لقراءة العمود الفرعي [size0](/ar/reference/data-types/array#array-size).
* [notEmpty](/ar/reference/functions/regular-functions/array-functions#notEmpty) لقراءة العمود الفرعي [size0](/ar/reference/data-types/array#array-size).
* [isNull](/ar/reference/functions/regular-functions/functions-for-nulls#isNull) لقراءة العمود الفرعي [null](/ar/reference/data-types/nullable#finding-null).
* [isNotNull](/ar/reference/functions/regular-functions/functions-for-nulls#isNotNull) لقراءة العمود الفرعي [null](/ar/reference/data-types/nullable#finding-null).
* [count](/ar/reference/functions/aggregate-functions/count) لقراءة العمود الفرعي [null](/ar/reference/data-types/nullable#finding-null).
* [mapKeys](/ar/reference/functions/regular-functions/tuple-map-functions#mapKeys) لقراءة العمود الفرعي [keys](/ar/reference/data-types/map#reading-subcolumns-of-map).
* [mapValues](/ar/reference/functions/regular-functions/tuple-map-functions#mapValues) لقراءة العمود الفرعي [values](/ar/reference/data-types/map#reading-subcolumns-of-map).

القيم الممكنة:

* 0 — التحسين معطّل.
* 1 — التحسين مُمكَّن.

<div id="optimize_group_by_constant_keys">
  ## optimize\_group\_by\_constant\_keys
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "23.9"},{"label": "1"},{"label": "تحسين GROUP BY حسب المفاتيح الثابتة افتراضيًا"}]}]} />

تحسين GROUP BY عندما تكون جميع المفاتيح في الكتلة ثابتة

<div id="optimize_group_by_function_keys">
  ## optimize\_group\_by\_function\_keys
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

يُزيل دوالّ المفاتيح الأخرى في قسم GROUP BY

<div id="optimize_if_chain_to_multiif">
  ## optimize\_if\_chain\_to\_multiif
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

يستبدل سلاسل `if(cond1, then1, if(cond2, ...))` بـ `multiIf`. لا يفيد ذلك حاليًا مع الأنواع الرقمية.

<div id="optimize_if_transform_strings_to_enum">
  ## optimize\_if\_transform\_strings\_to\_enum
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

يستبدل الوسيطات من النوع String في If وTransform إلى enum. يكون معطّلًا افتراضيًا لأنه قد يتسبب في تغيير غير متسق في الاستعلام الموزع، مما يؤدي إلى فشله.

<div id="optimize_injective_functions_in_group_by">
  ## optimize\_injective\_functions\_in\_group\_by
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.1"},{"label": "1"},{"label": "استبدال الدوال الحقنية بمعاملاتها في عبارة GROUP BY في المحلل"}]}]} />

يستبدل الدوال الحقنية بمعاملاتها في عبارة GROUP BY

<div id="optimize_injective_functions_in_limit_by">
  ## optimize\_injective\_functions\_in\_limit\_by
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.6"},{"label": "1"},{"label": "إعداد جديد يستبدل الدوال الحقنية بوسائطها في مفاتيح LIMIT BY."}]}]} />

يستبدل الدوال الحقنية بوسائطها في عبارة LIMIT BY.

مثال: `LIMIT 5 BY toString(x)` تصبح `LIMIT 5 BY x`.

<div id="optimize_injective_functions_inside_uniq">
  ## optimize\_injective\_functions\_inside\_uniq
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

يحذف الدوال الحقنية أحادية الوسيط داخل دوال uniq\*().

<div id="optimize_inverse_dictionary_lookup">
  ## optimize\_inverse\_dictionary\_lookup
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "1"},{"label": "إعداد جديد"}]}]} />

تجنّب تكرار عمليات البحث العكسي في القاموس من خلال إجراء عمليات بحث أسرع ضمن مجموعة مُحتسبة مسبقًا من قيم المفاتيح المحتملة.

<div id="optimize_limit_by_function_keys">
  ## optimize\_limit\_by\_function\_keys
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.6"},{"label": "1"},{"label": "إعداد جديد يزيل مفاتيح LIMIT BY التي تكون دوالًا لمفاتيح LIMIT BY أخرى."}]}]} />

يزيل المفاتيح التي تكون دوالًا لمفاتيح أخرى في قسم LIMIT BY.

مثال: `LIMIT 5 BY x, f(x)` تصبح `LIMIT 5 BY x`.

<div id="optimize_limit_by_in_order">
  ## optimize\_limit\_by\_in\_order
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.6"},{"label": "1"},{"label": "إعداد جديد لتحسين استعلامات `LIMIT BY` عندما تكون أعمدة `BY` بادئة لمفتاح فرز الجدول."}]}]} />

يُحسِّن استعلامات `SELECT ... LIMIT N BY <cols>` عندما كانت `<cols>` (بأي ترتيب) تُشكّل بادئة لمفتاح فرز الجدول، أو تصبح كذلك بعد أن يثبّت الشرط `WHERE col = const` الأعمدةَ الأولى. عند تفعيل هذا الإعداد، يقرأ المصدر البيانات بترتيب المفتاح الأساسي، بحيث تصل الصفوف ذات القيم المتساوية في أعمدة `BY` متجاورة داخل كل تدفّق. وعندما تصل البيانات ضمن تدفّق واحد مرتّب، يرشّح `LIMIT BY` هذه البيانات في وضع streaming باستخدام ذاكرة بحجم O(1)، بدلًا من إنشاء hash table لكل تركيبة مميّزة من أعمدة `BY` تمّت رؤيتها. وعندما تصل البيانات المرتّبة عبر عدة تدفّقات، ويمكن أن تظهر قيم `BY` نفسها في أكثر من تدفّق واحد، يُرشَّح كل تدفّق أولًا مسبقًا في وضع streaming إلى حد أقصى قدره `LIMIT + OFFSET` من الصفوف لكل مجموعة، ثم تُدمَج التدفّقات ويُجري `LIMIT BY` نهائي قائم على hash إزالة التكرار للمجموعات الممتدة عبر عدة تدفّقات. وتحتفظ هذه المرحلة النهائية مع ذلك بـ entry لكل تركيبة مميّزة من أعمدة `BY`، لكنها لا تعالج إلا الصفوف التي خضعت للتصفية المسبقة.

<div id="optimize_min_equality_disjunction_chain_length">
  ## optimize\_min\_equality\_disjunction\_chain\_length
</div>

<SettingsInfoBlock type="UInt64" default_value="3" />

الحد الأدنى لطول التعبير `expr = x1 OR ... expr = xN` من أجل التحسي

<div id="optimize_min_inequality_conjunction_chain_length">
  ## optimize\_min\_inequality\_conjunction\_chain\_length
</div>

<SettingsInfoBlock type="UInt64" default_value="3" />

الحد الأدنى لطول التعبير `expr <> x1 AND ... expr <> xN` اللازم لإجراء التحسين

<div id="optimize_move_to_prewhere">
  ## optimize\_move\_to\_prewhere
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

يتيح تفعيل أو تعطيل التحسين التلقائي لـ [PREWHERE](/ar/reference/statements/select/prewhere) في استعلامات [SELECT](/ar/reference/statements/select/index).

يعمل فقط مع جداول [\*MergeTree](/ar/reference/engines/table-engines/mergetree-family/index).

القيم الممكنة:

* 0 — يكون التحسين التلقائي لـ `PREWHERE` معطّلًا.
* 1 — يكون التحسين التلقائي لـ `PREWHERE` مفعّلًا.

<div id="optimize_move_to_prewhere_if_final">
  ## optimize\_move\_to\_prewhere\_if\_final
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

يُفعِّل أو يعطِّل تحسين [PREWHERE](/ar/reference/statements/select/prewhere) التلقائي في استعلامات [SELECT](/ar/reference/statements/select/index) التي تستخدم المُعدِّل [FINAL](/ar/reference/statements/select/from#final-modifier).

يعمل فقط مع جداول [\*MergeTree](/ar/reference/engines/table-engines/mergetree-family/index).

القيم الممكنة:

* 0 — يكون تحسين `PREWHERE` التلقائي في استعلامات `SELECT` التي تستخدم المُعدِّل `FINAL` معطّلًا.
* 1 — يكون تحسين `PREWHERE` التلقائي في استعلامات `SELECT` التي تستخدم المُعدِّل `FINAL` مفعّلًا.

**انظر أيضًا**

* الإعداد [optimize\_move\_to\_prewhere](#optimize_move_to_prewhere)

<div id="optimize_multiif_to_if">
  ## optimize\_multiif\_to\_if
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

استبدال 'multiIf' الذي يتضمن شرطًا واحدًا فقط بـ 'if'.

<div id="optimize_normalize_count_variants">
  ## optimize\_normalize\_count\_variants
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "21.3"},{"label": "1"},{"label": "إعادة صياغة الدوال التجميعية المكافئة دلاليًا لـ count() إلى count() افتراضيًا"}]}]} />

إعادة صياغة الدوال التجميعية المكافئة دلاليًا لـ count() إلى count().

<div id="optimize_on_insert">
  ## optimize\_on\_insert
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "21.1"},{"label": "1"},{"label": "تمكين تحسين البيانات عند INSERT افتراضيًا لتحسين تجربة المستخدم"}]}]} />

يُمكّن أو يعطّل تحويل البيانات قبل الإدراج، كما لو أُجريت عملية دمج على هذه الكتلة (بحسب محرك الجدول).

القيم الممكنة:

* 0 — معطّل.
* 1 — مفعّل.

**مثال**

الفرق بين حالتي التمكين والتعطيل:

الاستعلام:

```sql theme={null}
SET optimize_on_insert = 1;

CREATE TABLE test1 (`FirstTable` UInt32) ENGINE = ReplacingMergeTree ORDER BY FirstTable;

INSERT INTO test1 SELECT number % 2 FROM numbers(5);

SELECT * FROM test1;

SET optimize_on_insert = 0;

CREATE TABLE test2 (`SecondTable` UInt32) ENGINE = ReplacingMergeTree ORDER BY SecondTable;

INSERT INTO test2 SELECT number % 2 FROM numbers(5);

SELECT * FROM test2;
```

النتيجة:

```text theme={null}
┌─FirstTable─┐
│          0 │
│          1 │
└────────────┘

┌─SecondTable─┐
│           0 │
│           0 │
│           0 │
│           1 │
│           1 │
└─────────────┘
```

لاحظ أن هذا الإعداد يؤثر في طريقة عمل [العرض المادي](/ar/reference/statements/create/view#materialized-view).

<div id="optimize_or_like_chain">
  ## optimize\_or\_like\_chain
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

يعمل على تحسين عبارات OR LIKE المتعددة بتحويلها إلى multiMatchAny. لا ينبغي تمكين هذا التحسين افتراضيًا، لأنه يتعارض مع تحليل الفهارس في بعض الحالات.

<div id="optimize_prewhere_after_pushdown">
  ## optimize\_prewhere\_after\_pushdown
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.6"},{"label": "0"},{"label": "إعداد جديد يفعّل تمريرة ثانية لترقية `PREWHERE` لدمج عوامل التصفية التي تضعها التحسينات اللاحقة فوق خطوة قراءة `MergeTree` (مثل دفع الشروط عبر `JOIN` وإعادة كتابة الإسقاطات) ضمن سلسلة `PREWHERE` الحالية."}]}]} />

شغّل تمريرة ثانية لترقية `PREWHERE` بعد أن تكون تحسينات خطة الاستعلام اللاحقة قد
أضافت عوامل تصفية إضافية فوق خطوة قراءة `MergeTree` (على سبيل المثال، دفع الشروط عبر
`JOIN` وإعادة كتابة الإسقاطات). وعند وجود `PREWHERE` بالفعل، يُدمَج عامل
التصفية الجديد فيه باستخدام `AND` بدلًا من أن يبقى كخطوة تصفية منفصلة.

<div id="optimize_qbit_distance_function_reads">
  ## optimize\_qbit\_distance\_function\_reads
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.10"},{"label": "1"},{"label": "إعداد جديد"}]}]} />

استبدِل دوال المسافة المستخدمة مع نوع البيانات `QBit` بنظيرات مكافئة لا تقرأ من التخزين إلا الأعمدة اللازمة للحساب.

<div id="optimize_read_in_order">
  ## optimize\_read\_in\_order
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

يؤدي إلى تفعيل تحسين [ORDER BY](/ar/reference/statements/select/order-by#optimization-of-data-reading) في استعلامات [SELECT](/ar/reference/statements/select/index) عند قراءة البيانات من جداول [MergeTree](/ar/reference/engines/table-engines/mergetree-family/mergetree).

القيم الممكنة:

* 0 — يكون تحسين `ORDER BY` معطّلًا.
* 1 — يكون تحسين `ORDER BY` مفعّلًا.

**انظر أيضًا**

* [عبارة ORDER BY](/ar/reference/statements/select/order-by#optimization-of-data-reading)

<div id="optimize_redundant_functions_in_order_by">
  ## optimize\_redundant\_functions\_in\_order\_by
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

أزل الدوال من ORDER BY إذا كانت وسيطاتها مُدرجة أيضًا في ORDER BY

<div id="optimize_respect_aliases">
  ## optimize\_respect\_aliases
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

إذا تم ضبطه على true، فسيأخذ الأسماء المستعارة في WHERE/GROUP BY/ORDER BY في الاعتبار، مما يساعد في تقليم الأقسام/الفهارس الثانوية/optimize\_aggregation\_in\_order/optimize\_read\_in\_order/optimize\_trivial\_count

<div id="optimize_rewrite_aggregate_function_with_if">
  ## optimize\_rewrite\_aggregate\_function\_with\_if
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

يعيد كتابة الدوال التجميعية التي تستخدم تعبير if كوسيطة عندما تكون مكافئة منطقيًا.
على سبيل المثال، يمكن إعادة كتابة `avg(if(cond, col, null))` إلى `avgOrNullIf(cond, col)`. وقد يؤدي ذلك إلى تحسين الأداء.

<Note>
  مدعوم فقط مع المحلّل (`enable_analyzer = 1`).
</Note>

<div id="optimize_rewrite_array_exists_to_has">
  ## optimize\_rewrite\_array\_exists\_to\_has
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "1"},{"label": "تفعيل تحسين إعادة كتابة arrayExists إلى has افتراضيًا، بعد التحقق من توافق النوع قبل إعادة الكتابة."}]}]} />

أعِد كتابة دوال `arrayExists()` إلى `has()` عندما تكون متكافئة منطقيًا. على سبيل المثال، يمكن إعادة كتابة `arrayExists(x -> x = 1, arr)` إلى `has(arr, 1)`

<div id="optimize_rewrite_has_to_in">
  ## optimize\_rewrite\_has\_to\_in
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.6"},{"label": "1"},{"label": "إعداد جديد"}]}]} />

أعِد كتابة دوال `has` إلى `IN` عندما تكون الوسيطة الأولى مصفوفة ثابتة. على سبيل المثال، يمكن إعادة صياغة `has([1, 2, 3], x)` إلى `x IN [1, 2, 3]` لتحسين الأداء مع المصفوفات الثابتة

<div id="optimize_rewrite_like_perfect_affix">
  ## optimize\_rewrite\_like\_perfect\_affix
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.10"},{"label": "1"},{"label": "إعداد جديد"}]}]} />

أعِد كتابة تعبيرات LIKE ذات البادئة أو اللاحقة المطابقة تمامًا (مثل `col LIKE 'ClickHouse%'`) إلى الدالتين startsWith أو endsWith (مثل `startsWith(col, 'ClickHouse')`).

<div id="optimize_rewrite_regexp_functions">
  ## optimize\_rewrite\_regexp\_functions
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "1"},{"label": "إعداد جديد"}]}]} />

أعِد كتابة الدوال المرتبطة بالتعبيرات النمطية إلى صيغ أبسط وأكثر كفاءة

<div id="optimize_rewrite_sum_if_to_count_if">
  ## optimize\_rewrite\_sum\_if\_to\_count\_if
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.4"},{"label": "1"},{"label": "متاح فقط للمحلّل، حيث يعمل على نحو صحيح"}]}]} />

إعادة كتابة sumIf() و sum(if()) إلى countIf() عندما تكون الدالتان متكافئتين منطقيًا

<div id="optimize_skip_merged_partitions">
  ## optimize\_skip\_merged\_partitions
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

يُمكّن هذا الإعداد أو يعطّل التحسين لاستعلام [OPTIMIZE TABLE ... FINAL](/ar/reference/statements/optimize) إذا كان هناك part واحد فقط بمستوى > 0 ولم تنتهِ صلاحية TTL الخاصة به.

* `OPTIMIZE TABLE ... FINAL SETTINGS optimize_skip_merged_partitions=1`

بشكل افتراضي، يعيد استعلام `OPTIMIZE TABLE ... FINAL` كتابة هذا الـpart حتى إذا كان هناك part واحد فقط.

القيم الممكنة:

* 1 - تمكين التحسين.
* 0 - تعطيل التحسين.

<div id="optimize_skip_unused_shards">
  ## optimize\_skip\_unused\_shards
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

يُمكّن أو يعطّل تخطي الشظايا غير المستخدمة في استعلامات [SELECT](/ar/reference/statements/select/index) التي تحتوي على شرط لمفتاح التقسيم في `WHERE/PREWHERE`، كما يفعّل التحسينات المرتبطة بالاستعلامات الموزعة (مثل التجميع حسب مفتاح التقسيم).

<Note>
  يفترض أن البيانات موزعة بحسب مفتاح التقسيم، وإلا فسيُرجع الاستعلام نتيجة غير صحيحة.
</Note>

القيم الممكنة:

* 0 — معطّل.
* 1 — مفعّل.

<div id="optimize_skip_unused_shards_limit">
  ## optimize\_skip\_unused\_shards\_limit
</div>

<SettingsInfoBlock type="UInt64" default_value="1000" />

الحد الأقصى لعدد قيم مفتاح التقسيم؛ ويُعطِّل `optimize_skip_unused_shards` عند بلوغ هذا الحد.

قد يتطلب العدد الكبير جدًا من القيم قدرًا ملحوظًا من المعالجة، بينما تكون الفائدة منه محل شك، لأنه إذا كان لديك عدد هائل من القيم في `IN (...)`، فمن المرجح في هذه الحالة أن يُرسَل الاستعلام إلى جميع الشظايا على أي حال.

<div id="optimize_skip_unused_shards_nesting">
  ## optimize\_skip\_unused\_shards\_nesting
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

يتحكم هذا الإعداد في [`optimize_skip_unused_shards`](#optimize_skip_unused_shards) — مع العلم أنه لا يزال يتطلب تفعيل [`optimize_skip_unused_shards`](#optimize_skip_unused_shards) — وذلك بحسب مستوى تداخل الاستعلام الموزع (أي في الحالة التي يكون لديك فيها جدول `Distributed` يشير إلى جدول `Distributed` آخر).

القيم الممكنة:

* 0 — معطّل، ويعمل `optimize_skip_unused_shards` دائمًا.
* 1 — يفعّل `optimize_skip_unused_shards` للمستوى الأول فقط.
* 2 — يفعّل `optimize_skip_unused_shards` حتى المستوى الثاني.

<div id="optimize_skip_unused_shards_rewrite_in">
  ## optimize\_skip\_unused\_shards\_rewrite\_in
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

إعادة كتابة `IN` في الاستعلام الخاص بالشظايا البعيدة لاستبعاد القيم التي لا تنتمي إلى الشظية (يتطلب `optimize_skip_unused_shards`).

القيم الممكنة:

* 0 — معطّل.
* 1 — مفعّل.

<div id="optimize_sorting_by_input_stream_properties">
  ## optimize\_sorting\_by\_input\_stream\_properties
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

تحسين الفرز استنادًا إلى خصائص فرز تدفق الإدخال

<div id="optimize_substitute_columns">
  ## optimize\_substitute\_columns
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

استخدم [القيود](/ar/reference/statements/create/table#constraints) لاستبدال الأعمدة. القيمة الافتراضية هي `false`.

القيم الممكنة:

* true, false

<div id="optimize_syntax_fuse_functions">
  ## optimize\_syntax\_fuse\_functions
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": "1"},{"label": "هذا التحسين جاهز لبيئات الإنتاج"}]}]} />

يتيح دمج الدوال التجميعية ذات الوسيط المتماثل. ويُعيد كتابة أي query يحتوي على دالتين تجميعيتين على الأقل من [sum](/ar/reference/functions/aggregate-functions/sum) أو [count](/ar/reference/functions/aggregate-functions/count) أو [avg](/ar/reference/functions/aggregate-functions/avg) لها الوسيط نفسه إلى [sumCount](/ar/reference/functions/aggregate-functions/sumCount).

القيم الممكنة:

* 0 — لا يتم دمج الدوال ذات الوسيط المتماثل.
* 1 — يتم دمج الدوال ذات الوسيط المتماثل.

**مثال**

الاستعلام:

```sql theme={null}
CREATE TABLE fuse_tbl(a Int8, b Int8) Engine = Log;
SET optimize_syntax_fuse_functions = 1;
EXPLAIN SYNTAX run_query_tree_passes = 1 SELECT sum(a), sum(b), count(b), avg(b) from fuse_tbl FORMAT TSV;
```

النتيجة:

```text theme={null}
SELECT
    sum(__table1.a) AS `sum(a)`,
    tupleElement(sumCount(__table1.b), 1) AS `sum(b)`,
    tupleElement(sumCount(__table1.b), 2) AS `count(b)`,
    divide(tupleElement(sumCount(__table1.b), 1), toFloat64(tupleElement(sumCount(__table1.b), 2))) AS `avg(b)`
FROM default.fuse_tbl AS __table1
```

<div id="optimize_throw_if_noop">
  ## optimize\_throw\_if\_noop
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

يُمكّن أو يعطّل إصدار استثناء إذا لم يُجرِ استعلام [OPTIMIZE](/ar/reference/statements/optimize) عملية دمج.

بشكل افتراضي، يُرجع `OPTIMIZE` نجاحًا حتى إذا لم يفعل شيئًا. يتيح لك هذا الإعداد التمييز بين هذه الحالات ومعرفة السبب من خلال رسالة الاستثناء.

القيم الممكنة:

* 1 — إصدار استثناء مُمكّن.
* 0 — إصدار استثناء معطّل.

<div id="optimize_time_filter_with_preimage">
  ## optimize\_time\_filter\_with\_preimage
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.2"},{"label": "1"},{"label": "تحسين شروط Date وDateTime عبر تحويل الدوال إلى مقارنات مكافئة من دون تحويلات (مثل: toYear(col) = 2023 -> col >= '2023-01-01' AND col <= '2023-12-31')"}]}]} />

تحسين شروط Date وDateTime عبر تحويل الدوال إلى مقارنات مكافئة من دون تحويلات (مثل: `toYear(col) = 2023 -> col >= '2023-01-01' AND col <= '2023-12-31'`)

<div id="optimize_trivial_approximate_count_query">
  ## optimize\_trivial\_approximate\_count\_query
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

استخدم قيمة تقديرية لتحسين عمليات العدّ البسيطة في وحدات التخزين التي تدعم هذا النوع من التقدير، مثل EmbeddedRocksDB.

القيم الممكنة:

* 0 — التحسين معطّل.
  * 1 — التحسين مفعّل.

<div id="optimize_trivial_count_query">
  ## optimize\_trivial\_count\_query
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

يُمكّن هذا الإعداد أو يعطّل تحسين الاستعلام البسيط `SELECT count() FROM table` باستخدام البيانات الوصفية من MergeTree. إذا كنت بحاجة إلى استخدام أمان على مستوى الصفوف، فعطّل هذا الإعداد.

القيم الممكنة:

* 0 — التحسين معطّل.
  * 1 — التحسين مفعّل.

انظر أيضًا:

* [optimize\_functions\_to\_subcolumns](#optimize_functions_to_subcolumns)

<div id="optimize_trivial_group_by_limit_query">
  ## optimize\_trivial\_group\_by\_limit\_query
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "1"},{"label": "إعداد جديد يقيّد التجميع بحيث لا يتجاوز عدد المفاتيح المميّزة LIMIT في استعلامات `SELECT key_expr FROM t GROUP BY key_expr LIMIT n`."}]}]} />

يعمل هذا الإعداد على تمكين أو تعطيل تحسين الاستعلام البسيط `SELECT key_expr FROM table GROUP BY key_expr LIMIT n` (من دون دوال تجميعية في الإسقاط، ومن دون عبارات `HAVING`/`ORDER BY`/`LIMIT BY`/window، ومن دون modifiers لـ `GROUP BY`) وذلك عبر تعيين `max_rows_to_group_by = n + offset` مع `group_by_overflow_mode = 'any'`. ويتوقف التجميع بمجرد إنتاج `n + offset` من المفاتيح المميّزة.

يُوقَف هذا التحسين عندما يكون المستخدم قد عيّن `group_by_overflow_mode` صراحةً إلى قيمة غير `any` (للحفاظ على سلوك `throw`/`break` الذي حدّده صراحةً)، وكذلك عندما يكون المستخدم قد عيّن بالفعل قيمة أكثر تقييدًا لـ `max_rows_to_group_by` (إذ سيكون التحسين عندها no-op).

القيم الممكنة:

* 0 — التحسين معطّل.
  * 1 — التحسين مفعّل.

<div id="optimize_trivial_insert_select">
  ## optimize\_trivial\_insert\_select
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.7"},{"label": "0"},{"label": "هذا التحسين غير منطقي في كثير من الحالات."}]}]} />

تحسين استعلام 'INSERT INTO table SELECT ... FROM TABLES' البسيط

<div id="optimize_truncate_order_by_after_group_by_keys">
  ## optimize\_truncate\_order\_by\_after\_group\_by\_keys
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "1"},{"label": "أزل عناصر ORDER BY اللاحقة بمجرد أن تغطي بادئة ORDER BY جميع مفاتيح GROUP BY."}]}]} />

أزل عناصر ORDER BY اللاحقة بمجرد أن تغطي بادئة ORDER BY جميع مفاتيح GROUP BY.

<div id="optimize_uniq_to_count">
  ## optimize\_uniq\_to\_count
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

أعِد كتابة `uniq` وصِيَغه المختلفة (باستثناء `uniqUpTo`) إلى `count` إذا تضمّن الاستعلام الفرعي `distinct` أو عبارة `group by`.

<div id="optimize_use_implicit_projections">
  ## optimize\_use\_implicit\_projections
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

يختار الإسقاطات الضمنية تلقائيًا لتنفيذ استعلام SELECT

<div id="optimize_use_projection_filtering">
  ## optimize\_use\_projection\_filtering
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.6"},{"label": "1"},{"label": "إعداد جديد"}]}]} />

يتيح استخدام الإسقاطات لتصفية نطاقات الأجزاء حتى عند عدم تحديد الإسقاطات لتنفيذ استعلام SELECT.

<div id="optimize_use_projections">
  ## optimize\_use\_projections
</div>

**الأسماء البديلة**: `allow_experimental_projection_optimization`

<SettingsInfoBlock type="Bool" default_value="1" />

يُمكّن أو يعطّل تحسين [الإسقاطات](/ar/reference/engines/table-engines/mergetree-family/mergetree#projections) عند معالجة استعلامات `SELECT`.

القيم الممكنة:

* 0 — تحسين الإسقاطات معطّل.
* 1 — تحسين الإسقاطات مفعّل.

<div id="optimize_using_constraints">
  ## optimize\_using\_constraints
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

استخدم [القيود](/ar/reference/statements/create/table#constraints) لتحسين الاستعلامات. القيمة الافتراضية هي `false`.

القيم الممكنة:

* true, false

<div id="os_threads_nice_value_materialized_view">
  ## os\_threads\_nice\_value\_materialized\_view
</div>

<SettingsInfoBlock type="Int32" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.9"},{"label": "0"},{"label": "إعداد جديد."}]}]} />

قيمة nice في Linux لخيوط العرض المادي. القيم الأقل تعني أولوية أعلى للـCPU.

يتطلب صلاحية CAP\_SYS\_NICE، وإلا فلن يكون له أي تأثير.

القيم الممكنة: من -20 إلى 19.

<div id="os_threads_nice_value_query">
  ## os\_threads\_nice\_value\_query
</div>

**الأسماء البديلة**: `os_thread_priority`

<SettingsInfoBlock type="Int32" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.9"},{"label": "0"},{"label": "إعداد جديد."}]}]} />

قيمة `nice` في Linux لخيوط معالجة الاستعلامات. كلما انخفضت القيمة، ارتفعت أولوية CPU.

يتطلب امتياز CAP\_SYS\_NICE، وإلا فلن يكون له أي تأثير.

القيم الممكنة: من -20 إلى 19.

<div id="page_cache_block_size">
  ## page\_cache\_block\_size
</div>

<SettingsInfoBlock type="UInt64" default_value="1048576" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "1048576"},{"label": "أصبح هذا الإعداد قابلاً للضبط على مستوى كل استعلام."}]}]} />

حجم أجزاء الملفات التي تُخزَّن في ذاكرة تخزين الصفحات المؤقتة في فضاء المستخدم، بالبايت. ستُقرَّب جميع عمليات القراءة التي تمر عبر cache إلى أقرب مضاعف لهذا الحجم.

يمكن ضبط هذا الإعداد على مستوى كل استعلام، لكن لا يمكن إعادة استخدام مدخلات cache ذات أحجام الكتل المختلفة. ويؤدي تغيير هذا الإعداد فعليًا إلى إبطال المدخلات الحالية في cache.

تكون القيمة الأكبر، مثل 1 MiB، مناسبة للاستعلامات عالية الإنتاجية، بينما تكون القيمة الأصغر، مثل 64 KiB، مناسبة للاستعلامات النقطية منخفضة الكمون.

<div id="page_cache_inject_eviction">
  ## page\_cache\_inject\_eviction
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "0"},{"label": "أُضيفت ذاكرة التخزين المؤقت للصفحات في فضاء المستخدم"}]}]} />

قد تُلغي ذاكرة التخزين المؤقت للصفحات في فضاء المستخدم صلاحية بعض الصفحات عشوائيًا من حين لآخر. هذا مخصص للاختبار.

<div id="page_cache_lookahead_blocks">
  ## page\_cache\_lookahead\_blocks
</div>

<SettingsInfoBlock type="UInt64" default_value="16" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "16"},{"label": "أصبح هذا الإعداد قابلاً للضبط على مستوى كل استعلام."}]}]} />

عند عدم العثور على البيانات في ذاكرة تخزين الصفحات المؤقتة في فضاء المستخدم، اقرأ دفعةً واحدة ما يصل إلى هذا العدد من الكتل المتتالية من التخزين الأساسي، إذا لم تكن موجودة أيضًا في الذاكرة المؤقتة. حجم كل كتلة هو `page_cache_block_size` بايت.

تكون القيمة الأعلى مناسبة للاستعلامات ذات معدل النقل المرتفع، بينما تعمل الاستعلامات الموضعية منخفضة زمن الاستجابة بشكل أفضل من دون القراءة الاستباقية.

<div id="page_cache_max_coalesced_bytes">
  ## page\_cache\_max\_coalesced\_bytes
</div>

<SettingsInfoBlock type="UInt64" default_value="16777216" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "16777216"},{"label": "إعداد جديد لوضع حدّ لحجم قراءة مدمجة واحدة تُستخدم لملء ذاكرة تخزين الصفحات المؤقتة في فضاء المستخدم عند الإخفاق في cache."}]}]} />

عندما يملأ `readBigAt` ذاكرة تخزين الصفحات المؤقتة في فضاء المستخدم، تُدمَج حالات الإخفاق المتتالية في cache في قراءة واحدة من طبقة التخزين الأساسية. يحدّد هذا الإعداد حجم القراءة المدمجة الواحدة بالبايت؛ وتُقسَّم سلاسل الإخفاق الأطول إلى عدة قراءات. كما يحدّ من الاستخدام العابر للذاكرة في المخزن المؤقت المؤقت عند إجراء قراءات باردة متوازية.

تقلّل القيمة الأعلى عدد طلبات HTTP في عمليات المسح البارد على التخزين الكائني؛ بينما تقلّل القيمة الأقل ذروة الذاكرة العابرة.

<div id="paimon_target_snapshot_id">
  ## paimon\_target\_snapshot\_id
</div>

<SettingsInfoBlock type="Int64" default_value="-1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "-1"},{"label": "إعداد جديد."}]}]} />

قراءة لقطة مستهدفة على مستوى الاستعلام لوضع Paimon التزايدي. عندما تكون القيمة >0، لن يجلب القارئ سوى البيانات التفاضلية
لـ `snapshot_id` المحدد، من دون تحريك العلامة المائية المُعتمدة إلى الأمام.
القيمة الافتراضية: -1 (معطّل)

<div id="parallel_distributed_insert_select">
  ## parallel\_distributed\_insert\_select
</div>

<SettingsInfoBlock type="UInt64" default_value="2" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.7"},{"label": "2"},{"label": "تمكين parallel distributed insert select افتراضيًا"}]}]} />

يُمكّن تنفيذ استعلام `INSERT ... SELECT` الموزّع بشكل متوازٍ.

إذا نفّذنا استعلامات `INSERT INTO distributed_table_a SELECT ... FROM distributed_table_b` وكان كلا الجدولين يستخدمان الـ cluster نفسه، وكان كلا الجدولين إما [مكرّرين](/ar/reference/engines/table-engines/mergetree-family/replication) أو غير مكرّرين، فستُعالَج هذه الاستعلامات محليًا على كل شظية.

القيم الممكنة:

* `0` — معطّل.
* `1` — سيُنفَّذ `SELECT` على كل شظية من الجدول الأساسي لمحرك Distributed.
* `2` — سيُنفَّذ `SELECT` و`INSERT` على كل شظية من/إلى الجدول الأساسي لمحرك Distributed.

اعتبارًا من v25.4، يمكن أيضًا تنفيذ `INSERT ... SELECT` من مصدر `ReplicatedMergeTree` أو `SharedMergeTree` بشكل متوازٍ عبر replicas. لتمكين ذلك:

* `parallel_distributed_insert_select = 2`
* `enable_parallel_replicas = 1`

<div id="parallel_hash_join_threshold">
  ## parallel\_hash\_join\_threshold
</div>

<SettingsInfoBlock type="UInt64" default_value="100000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "100000"},{"label": "إعداد جديد"}]}, {"id": "row-2","items": [{"label": "25.4"},{"label": "0"},{"label": "إعداد جديد"}]}, {"id": "row-3","items": [{"label": "25.3"},{"label": "0"},{"label": "إعداد جديد"}]}]} />

عند استخدام خوارزمية join المعتمدة على hash، تساعد هذه العتبة في تحديد ما إذا كان ينبغي استخدام `hash` أو `parallel_hash` (وذلك فقط إذا كان تقدير حجم الجدول الأيمن متاحًا).
ويُستخدم الخيار الأول عندما نعلم أن حجم الجدول الأيمن أقل من هذه العتبة.

<div id="parallel_non_joined_rows_processing">
  ## parallel\_non\_joined\_rows\_processing
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "1"},{"label": "إعداد جديد لتمكين المعالجة المتوازية للصفوف غير المنضمّة في عمليات الربط RIGHT/FULL باستخدام parallel_hash."}]}]} />

يسمح لعدة خيوط بمعالجة الصفوف غير المنضمّة من الجدول الأيمن بالتوازي أثناء عمليتَي RIGHT JOIN وFULL JOIN.
يمكن أن يؤدي ذلك إلى تسريع مرحلة الصفوف غير المنضمّة عند استخدام خوارزمية الربط `parallel_hash` مع الجداول الكبيرة.
عند تعطيله، تُعالَج الصفوف غير المنضمّة بواسطة خيط واحد.

<div id="parallel_replica_offset">
  ## parallel\_replica\_offset
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

هذا إعداد داخلي لا ينبغي استخدامه مباشرةً، وهو يمثل تفصيلًا تنفيذيًا لوضع "النسخ المتماثلة المتوازية". سيُضبط هذا الإعداد تلقائيًا بواسطة الخادم المُبادِر للاستعلامات الموزعة، بحيث يشير إلى فهرس النسخة المتماثلة المشاركة في معالجة الاستعلام ضمن النسخ المتماثلة المتوازية.

<div id="parallel_replicas_allow_in_with_subquery">
  ## parallel\_replicas\_allow\_in\_with\_subquery
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "1"},{"label": "إذا كانت القيمة true، فسيُنفَّذ الاستعلام الفرعي الخاص بـ IN على كل نسخة متماثلة تابعة"}]}]} />

إذا كانت القيمة true، فسيُنفَّذ الاستعلام الفرعي الخاص بـ IN على كل نسخة متماثلة تابعة.

<div id="parallel_replicas_allow_materialized_views">
  ## parallel\_replicas\_allow\_materialized\_views
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "1"},{"label": "السماح باستخدام العروض المادية مع النسخ المتماثلة المتوازية"}]}]} />

السماح باستخدام العروض المادية مع النسخ المتماثلة المتوازية

<div id="parallel_replicas_allow_view_over_mergetree">
  ## parallel\_replicas\_allow\_view\_over\_mergetree
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "0"},{"label": "إعداد جديد"}]}]} />

يسمح للنسخ المتماثلة المتوازية بتنفيذ الاستعلام الخارجي لعرض بسيط فوق جداول `MergeTree` (بدلًا من الاستعلام الداخلي للعرض)، مما يحسّن التوازي عبر العُقد. وينطبق ذلك أيضًا على عروض `UNION ALL` التي تقرأ جميع فروعها من جداول `MergeTree` مختلفة.

<div id="parallel_replicas_connect_timeout_ms">
  ## parallel\_replicas\_connect\_timeout\_ms
</div>

<SettingsInfoBlock type="Milliseconds" default_value="300" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.6"},{"label": "300"},{"label": "مهلة اتصال منفصلة لاستعلامات النسخ المتماثلة المتوازية"}]}]} />

المهلة بالمللي ثانية للاتصال بنسخة متماثلة بعيدة أثناء تنفيذ الاستعلام باستخدام النسخ المتماثلة المتوازية. إذا انتهت المهلة، فلن تُستخدم النسخة المتماثلة المقابلة في تنفيذ الاستعلا

<div id="parallel_replicas_count">
  ## parallel\_replicas\_count
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

هذا إعداد داخلي لا ينبغي استخدامه مباشرةً، ويمثل تفصيلًا تنفيذيًا لوضع 'النسخ المتماثلة المتوازية'. وسيُضبط هذا الإعداد تلقائيًا بواسطة الخادم المُبادِر للاستعلامات الموزعة على عدد النسخ المتماثلة المتوازية المشاركة في معالجة الاستعلامات.

<div id="parallel_replicas_custom_key">
  ## parallel\_replicas\_custom\_key
</div>

تعبير عددي صحيح اعتباطي يمكن استخدامه لتقسيم العمل بين النسخ المتماثلة لجدول معيّن.
يمكن أن تكون القيمة أي تعبير عددي صحيح.

يُفضَّل استخدام التعبيرات البسيطة التي تعتمد على المفتاح الأساسي.

إذا استُخدم هذا الإعداد على عنقود يتكوّن من شظية واحدة مع عدة نسخ متماثلة، فستُحوَّل تلك النسخ المتماثلة إلى شظايا افتراضية.
وبخلاف ذلك، فسيتصرف بالطريقة نفسها كما في مفتاح `SAMPLE`، إذ سيستخدم عدة نسخ متماثلة من كل شظية.

<div id="parallel_replicas_custom_key_range_lower">
  ## parallel\_replicas\_custom\_key\_range\_lower
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.6"},{"label": "0"},{"label": "إضافة إعدادات للتحكم في مرشح النطاق عند استخدام النسخ المتماثلة المتوازية مع الشظايا الديناميكية"}]}]} />

يتيح لمرشح `range` تقسيم العمل بالتساوي بين النسخ المتماثلة استنادًا إلى النطاق المخصص `[parallel_replicas_custom_key_range_lower, INT_MAX]`.

وعند استخدامه مع [parallel\_replicas\_custom\_key\_range\_upper](#parallel_replicas_custom_key_range_upper)، فإنه يتيح للمرشح تقسيم العمل بالتساوي على النسخ المتماثلة ضمن النطاق `[parallel_replicas_custom_key_range_lower, parallel_replicas_custom_key_range_upper]`.

ملاحظة: لا يؤدي هذا الإعداد إلى تصفية أي بيانات إضافية أثناء معالجة الاستعلام؛ بل يغيّر فقط النقاط التي يقسم عندها مرشح النطاق المجال `[0, INT_MAX]` لأغراض المعالجة المتوازية.

<div id="parallel_replicas_custom_key_range_upper">
  ## parallel\_replicas\_custom\_key\_range\_upper
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.6"},{"label": "0"},{"label": "إضافة إعدادات للتحكم في مرشح النطاق عند استخدام النسخ المتماثلة المتوازية مع الشظايا الديناميكية. تؤدي القيمة 0 إلى تعطيل الحد الأعلى"}]}]} />

يسمح نوع المرشح `range` بتقسيم العمل بالتساوي بين النسخ المتماثلة استنادًا إلى النطاق المخصص `[0, parallel_replicas_custom_key_range_upper]`. تؤدي القيمة 0 إلى تعطيل الحد الأعلى، ما يضبطه على القيمة القصوى لتعبير المفتاح المخصص.

عند استخدامه مع [parallel\_replicas\_custom\_key\_range\_lower](#parallel_replicas_custom_key_range_lower)، فإنه يتيح للمرشح تقسيم العمل بالتساوي على النسخ المتماثلة ضمن النطاق `[parallel_replicas_custom_key_range_lower, parallel_replicas_custom_key_range_upper]`.

ملاحظة: لن يتسبب هذا الإعداد في ترشيح أي بيانات إضافية أثناء معالجة الاستعلامات، بل يغيّر النقاط التي يقسم عندها مرشح النطاق المجال `[0, INT_MAX]` لأغراض المعالجة المتوازية

<div id="parallel_replicas_filter_pushdown">
  ## parallel\_replicas\_filter\_pushdown
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "0"},{"label": "إعداد جديد"}]}]} />

السماح بدفع عوامل التصفية إلى الجزء من الاستعلام الذي تختار النسخ المتماثلة المتوازية تنفيذه

<div id="parallel_replicas_for_cluster_engines">
  ## parallel\_replicas\_for\_cluster\_engines
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.3"},{"label": "1"},{"label": "إعداد جديد."}]}]} />

استبدِل محركات دوال الجداول بنظائرها من نوع -Cluster

<div id="parallel_replicas_for_non_replicated_merge_tree">
  ## parallel\_replicas\_for\_non\_replicated\_merge\_tree
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

إذا كانت القيمة true، فسيستخدم ClickHouse أيضًا خوارزمية النسخ المتماثلة المتوازية مع جداول MergeTree غير المكررة

<div id="parallel_replicas_index_analysis_only_on_coordinator">
  ## parallel\_replicas\_index\_analysis\_only\_on\_coordinator
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.12"},{"label": "1"},{"label": "يُجرى تحليل الفهرس فقط على replica-coordinator، ويُتخطى على النسخ المتماثلة الأخرى. ولا يكون فعالًا إلا عند تمكين parallel_replicas_local_plan"}]}, {"id": "row-2","items": [{"label": "24.10"},{"label": "1"},{"label": "يُجرى تحليل الفهرس فقط على replica-coordinator، ويُتخطى على النسخ المتماثلة الأخرى. ولا يكون فعالًا إلا عند تمكين parallel_replicas_local_plan"}]}]} />

يُجرى تحليل الفهرس فقط على replica-coordinator، ويُتخطى على النسخ المتماثلة الأخرى. ولا يكون فعالًا إلا عند تمكين parallel\_replicas\_local\_pla

<div id="parallel_replicas_insert_select_local_pipeline">
  ## parallel\_replicas\_insert\_select\_local\_pipeline
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "1"},{"label": "استخدام مسار المعالجة المحلي أثناء INSERT SELECT الموزّع مع النسخ المتماثلة المتوازية. وهو معطّل حاليًا بسبب مشكلات في الأداء"}]}, {"id": "row-2","items": [{"label": "25.4"},{"label": "0"},{"label": "استخدام مسار المعالجة المحلي أثناء INSERT SELECT الموزّع مع النسخ المتماثلة المتوازية. وهو معطّل حاليًا بسبب مشكلات في الأداء"}]}]} />

استخدام مسار المعالجة المحلي أثناء INSERT SELECT الموزّع مع النسخ المتماثلة المتوازية

<div id="parallel_replicas_local_plan">
  ## parallel\_replicas\_local\_plan
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.9"},{"label": "0"},{"label": "استخدام الخطة المحلية للنسخة المتماثلة المحلية في استعلام يتضمن نسخًا متماثلة متوازية"}]}, {"id": "row-2","items": [{"label": "24.11"},{"label": "1"},{"label": "استخدام الخطة المحلية للنسخة المتماثلة المحلية في استعلام يتضمن نسخًا متماثلة متوازية"}]}, {"id": "row-3","items": [{"label": "24.10"},{"label": "1"},{"label": "استخدام الخطة المحلية للنسخة المتماثلة المحلية في استعلام يتضمن نسخًا متماثلة متوازية"}]}]} />

إنشاء خطة محلية للنسخة المتماثلة المحلية

<div id="parallel_replicas_mark_segment_size">
  ## parallel\_replicas\_mark\_segment\_size
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.9"},{"label": "0"},{"label": "تُحدَّد قيمة هذا الإعداد الآن تلقائيًا"}]}, {"id": "row-2","items": [{"label": "24.1"},{"label": "128"},{"label": "إضافة إعداد جديد للتحكم في حجم المقاطع في تنفيذ المنسّق الجديد للنسخ المتماثلة المتوازية"}]}]} />

تُقسَّم الأجزاء منطقيًا إلى مقاطع لتوزيعها بين النسخ المتماثلة لأغراض القراءة المتوازية. يتحكم هذا الإعداد في حجم هذه المقاطع. لا يُنصح بتغييره إلا إذا كنت متأكدًا تمامًا مما تفعله. يجب أن تكون القيمة ضمن النطاق \[128; 16384]

<div id="parallel_replicas_min_number_of_rows_per_replica">
  ## parallel\_replicas\_min\_number\_of\_rows\_per\_replica
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

يقيّد عدد النسخ المتماثلة المستخدمة في query إلى (العدد التقديري للصفوف المراد قراءتها / min\_number\_of\_rows\_per\_replica). ويظل الحد الأقصى مقيّدًا بالقيمة 'max\_parallel\_replicas'

<div id="parallel_replicas_mode">
  ## parallel\_replicas\_mode
</div>

<SettingsInfoBlock type="ParallelReplicasMode" default_value="read_tasks" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.10"},{"label": "read_tasks"},{"label": "تم تقديم هذا الإعداد كجزء من جعل ميزة parallel replicas في المرحلة التجريبية Beta"}]}]} />

نوع عامل التصفية الذي يُستخدم مع المفتاح المخصص للنسخ المتماثلة المتوازية. default - استخدام عملية modulo على المفتاح المخصص، range - استخدام عامل تصفية النطاق على المفتاح المخصص بالاعتماد على جميع القيم الممكنة لنوع قيمة المفتاح المخصص.

<div id="parallel_replicas_only_with_analyzer">
  ## parallel\_replicas\_only\_with\_analyzer
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.2"},{"label": "1"},{"label": "لا تُدعَم النسخ المتماثلة المتوازية إلا عند تمكين المُحلِّل"}]}]} />

يجب تمكين المُحلِّل لاستخدام النسخ المتماثلة المتوازية. عند تعطيل المُحلِّل، يرجع تنفيذ الاستعلام إلى التنفيذ المحلي، حتى إذا كانت القراءة المتوازية من النسخ المتماثلة مُمكّنة. استخدام النسخ المتماثلة المتوازية بدون تمكين المُحلِّل غير مدعوم

<div id="parallel_replicas_prefer_local_join">
  ## parallel\_replicas\_prefer\_local\_join
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.2"},{"label": "1"},{"label": "إذا كانت القيمة true، وكان من الممكن تنفيذ JOIN باستخدام خوارزمية النسخ المتماثلة المتوازية، وكانت جميع وحدات التخزين في الجزء الأيمن من JOIN من نوع *MergeTree، فسيُستخدم JOIN المحلي بدلًا من GLOBAL JOIN."}]}]} />

إذا كانت القيمة true، وكان من الممكن تنفيذ JOIN باستخدام خوارزمية النسخ المتماثلة المتوازية، وكانت جميع وحدات التخزين في الجزء الأيمن من JOIN من نوع \*MergeTree، فسيُستخدم JOIN المحلي بدلًا من GLOBAL JOIN.

<div id="parallel_replicas_prefer_local_replica">
  ## parallel\_replicas\_prefer\_local\_replica
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "1"},{"label": "إعداد جديد. عند تعطيله، تُحدَّد النسخ المتماثلة للقراءة المتوازية اعتمادًا فقط على خوارزمية موازنة التحميل، من دون فرض تضمين النسخة المتماثلة المحلية ضمن المجموعة."}]}]} />

عند تمكينه (وهو الإعداد الافتراضي)، تُدرَج النسخة المتماثلة المحلية دائمًا ضمن مجموعة النسخ المتماثلة المستخدمة للقراءة المتوازية.
عند تعطيله، لا تُمنَح النسخة المتماثلة المحلية أي أفضلية، وتُحدَّد النسخ المتماثلة اعتمادًا فقط على خوارزمية موازنة التحميل.
يتيح ذلك توجيه الاستعلامات التي تستخدم `max_parallel_replicas = 1` إلى مضيف آخر، مما قد يحسّن محلية ذاكرة التخزين المؤقت عند توزيع عدد كبير من الاستعلامات القصيرة عبر عنقود.

<div id="parallel_replicas_support_projection">
  ## parallel\_replicas\_support\_projection
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "1"},{"label": "إعداد جديد. يمكن تطبيق تحسين الإسقاطات في النسخ المتماثلة المتوازية. ويكون ذلك فعالًا فقط عند تمكين parallel_replicas_local_plan وعندما يكون aggregation_in_order غير مفعّل."}]}]} />

يمكن تطبيق تحسين الإسقاطات في النسخ المتماثلة المتوازية. ويكون ذلك فعالًا فقط عند تمكين parallel\_replicas\_local\_plan وعندما يكون aggregation\_in\_order غير مفعّل.

<div id="parallel_view_processing">
  ## parallel\_view\_processing
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

يُمكّن دفع البيانات إلى العروض المرفقة بشكل متزامن بدلًا من بشكل تسلسلي.

<div id="parallelize_output_from_storages">
  ## parallelize\_output\_from\_storages
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "23.5"},{"label": "1"},{"label": "يسمح بالتوازي عند تنفيذ الاستعلامات التي تقرأ من ملف/URL/S3/إلخ. وقد يؤدي ذلك إلى إعادة ترتيب الصفوف."}]}]} />

موازاة المخرجات في خطوة القراءة من وحدات التخزين. يتيح ذلك موازاة معالجة الاستعلامات مباشرةً بعد القراءة من وحدات التخزين، إذا أمكن.

<div id="parsedatetime_e_requires_space_padding">
  ## parsedatetime\_e\_requires\_space\_padding
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "0"},{"label": "تحسين التوافق مع MySQL DATE_FORMAT/STR_TO_DATE"}]}]} />

يتوقع المُنسِّق '%e' في الدالة 'parseDateTime' أن تُستكمَل الأيام المكوّنة من رقم واحد بمسافة، فمثلًا يُقبل ' 2'، لكن '2' يتسبب في حدوث خطأ.

<div id="parsedatetime_parse_without_leading_zeros">
  ## parsedatetime\_parse\_without\_leading\_zeros
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "23.11"},{"label": "1"},{"label": "تحسين التوافق مع MySQL DATE_FORMAT/STR_TO_DATE"}]}]} />

تُحلِّل محددات التنسيق '%c' و'%l' و'%k' في الدالة 'parseDateTime' الأشهر والساعات من دون أصفار بادئة.

<div id="partial_merge_join_left_table_buffer_bytes">
  ## partial\_merge\_join\_left\_table\_buffer\_bytes
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

إذا لم تكن القيمة 0، فستُجمَّع كتل الجدول الأيسر في كتل أكبر للجدول الواقع على الجانب الأيسر في partial merge join. ويستخدم هذا ما يصل إلى ضعفي الذاكرة المحددة لكل مؤشر ترابط لعملية الربط.

<div id="partial_merge_join_rows_in_right_blocks">
  ## partial\_merge\_join\_rows\_in\_right\_blocks
</div>

<SettingsInfoBlock type="UInt64" default_value="65536" />

يحدّ من أحجام كتل بيانات الربط في الطرف الأيمن ضمن خوارزمية الربط بالدمج الجزئي لاستعلامات [JOIN](/ar/reference/statements/select/join).

خادم ClickHouse:

1. يقسّم بيانات الربط في الطرف الأيمن إلى كتل يصل عدد الصفوف في كل منها إلى العدد المحدد.
2. ينشئ فهرسًا لكل كتلة باستخدام قيمها الدنيا والعليا.
3. يفرّغ الكتل المُحضّرة إلى القرص إذا كان ذلك ممكنًا.

القيم الممكنة:

* أي عدد صحيح موجب. النطاق الموصى به للقيم: \[1000, 100000].

<div id="partial_result_on_first_cancel">
  ## partial\_result\_on\_first\_cancel
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

يسمح بإرجاع نتيجة جزئية للاستعلام بعد إلغائه.

<div id="parts_to_delay_insert">
  ## parts\_to\_delay\_insert
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

إذا كان جدول الوجهة يحتوي، ضمن قسم واحد، على هذا العدد أو أكثر من الأجزاء النشطة، فأبطئ عمليات الإدراج إلى الجدول بشكل مصطنع.

<div id="parts_to_throw_insert">
  ## parts\_to\_throw\_insert
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

إذا تجاوز عدد الأجزاء النشطة في قسم واحد من الجدول الهدف هذا العدد، فسيُرفَع الاستثناء 'Too many parts ...'.

<div id="per_part_index_stats">
  ## per\_part\_index\_stats
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "0"},{"label": "إعداد جديد."}]}]} />

يسجّل إحصاءات الفهرس لكل جزء

<div id="poll_interval">
  ## poll\_interval
</div>

<SettingsInfoBlock type="UInt64" default_value="10" />

يحظر في حلقة انتظار الاستعلام على الخادم لعدد الثواني المحدد.

<div id="polyglot_dialect">
  ## polyglot\_dialect
</div>

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": ""},{"label": "إعداد جديد لتحديد لهجة SQL المصدر للمحوِّل متعدد اللغات."}]}]} />

لهجة SQL المصدر للمحوِّل متعدد اللغات (على سبيل المثال: 'sqlite' و'mysql' و'postgresql' و'snowflake' و'duckdb').

<div id="postgresql_connection_attempt_timeout">
  ## postgresql\_connection\_attempt\_timeout
</div>

<SettingsInfoBlock type="UInt64" default_value="2" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.7"},{"label": "2"},{"label": "يتيح التحكم في المعلَمة 'connect_timeout' لاتصال PostgreSQL."}]}]} />

مهلة محاولة واحدة للاتصال بنقطة نهاية PostgreSQL، مقاسة بالثواني.
تُمرَّر القيمة باعتبارها المعلَمة `connect_timeout` ضمن URL الاتصال.

<div id="postgresql_connection_pool_auto_close_connection">
  ## postgresql\_connection\_pool\_auto\_close\_connection
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

أغلق الاتصال قبل إعادته إلى مجمع الاتصالات.

<div id="postgresql_connection_pool_retries">
  ## postgresql\_connection\_pool\_retries
</div>

<SettingsInfoBlock type="UInt64" default_value="2" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.7"},{"label": "2"},{"label": "يتيح التحكم في عدد مرات إعادة المحاولة في مجمع الاتصالات لـ PostgreSQL."}]}]} />

عدد مرات إعادة المحاولة لعمليات push/pop في مجمع الاتصالات لمحرك جدول PostgreSQL ومحرك قاعدة البيانات.

<div id="postgresql_connection_pool_size">
  ## postgresql\_connection\_pool\_size
</div>

<SettingsInfoBlock type="UInt64" default_value="16" />

حجم تجمّع الاتصالات في محرك جدول PostgreSQL ومحرك قاعدة البيانات.

<div id="postgresql_connection_pool_wait_timeout">
  ## postgresql\_connection\_pool\_wait\_timeout
</div>

<SettingsInfoBlock type="UInt64" default_value="5000" />

مهلة انتظار push/pop لتجمّع الاتصالات عند فراغ التجمّع، وذلك لمحرك جدول PostgreSQL ومحرك قاعدة البيانات. بشكل افتراضي، سيدخل في حالة انتظار عند فراغ التجمّع.

<div id="postgresql_fault_injection_probability">
  ## postgresql\_fault\_injection\_probability
</div>

<SettingsInfoBlock type="Float" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.2"},{"label": "0"},{"label": "إعداد جديد"}]}]} />

الاحتمال التقريبي لفشل استعلامات PostgreSQL الداخلية (الخاصة بالنسخ المتماثل). تكون القيمة الصالحة ضمن النطاق \[0.0f, 1.0f]

<div id="predicate_statistics_sample_rate">
  ## predicate\_statistics\_sample\_rate
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "0"},{"label": "إعداد جديد لجمع إحصاءات انتقائية الشرط في system.predicate_statistics_log"}]}]} />

يجمع إحصاءات انتقائية الشرط في `system.predicate_statistics_log`. عند تعيينه إلى N > 0، تُؤخذ عيّنة من نحو 1/N من الاستعلامات (استنادًا إلى معرّف الاستعلام). وتعني القيمة 0 أنه معطّل.

<div id="prefer_column_name_to_alias">
  ## prefer\_column\_name\_to\_alias
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

يُمكّن أو يعطّل استخدام أسماء الأعمدة الأصلية بدلًا من الأسماء المستعارة في تعبيرات الاستعلام وبنوده. وتظهر أهمية ذلك خصوصًا عندما يكون الاسم المستعار مطابقًا لاسم العمود، راجع [الأسماء المستعارة للتعبيرات](/ar/reference/syntax#notes-on-usage). فعّل هذا الإعداد لجعل قواعد الأسماء المستعارة في ClickHouse أكثر توافقًا مع معظم محركات قواعد البيانات الأخرى.

القيم الممكنة:

* 0 — يُستبدل اسم العمود بالاسم المستعار.
* 1 — لا يُستبدل اسم العمود بالاسم المستعار.

**مثال**

الفرق بين حالتي التمكين والتعطيل:

الاستعلام:

```sql theme={null}
SET prefer_column_name_to_alias = 0;
SELECT avg(number) AS number, max(number) FROM numbers(10);
```

النتيجة:

```text theme={null}
Received exception from server (version 21.5.1):
Code: 184. DB::Exception: Received from localhost:9000. DB::Exception: Aggregate function avg(number) is found inside another aggregate function in query: While processing avg(number) AS number.
```

الاستعلام:

```sql theme={null}
SET prefer_column_name_to_alias = 1;
SELECT avg(number) AS number, max(number) FROM numbers(10);
```

النتيجة:

```text theme={null}
┌─number─┬─max(number)─┐
│    4.5 │           9 │
└────────┴─────────────┘
```

<div id="prefer_external_sort_block_bytes">
  ## prefer\_external\_sort\_block\_bytes
</div>

<SettingsInfoBlock type="UInt64" default_value="16744704" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.5"},{"label": "16744704"},{"label": "تفضيل الحد الأقصى لحجم الكتلة بالبايت للفرز الخارجي لتقليل استخدام الذاكرة أثناء الدمج."}]}]} />

تفضيل الحد الأقصى لحجم الكتلة بالبايت للفرز الخارجي لتقليل استخدام الذاكرة أثناء الدمج.

<div id="prefer_global_in_and_join">
  ## prefer\_global\_in\_and\_join
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

يُمكّن استبدال معاملي `IN`/`JOIN` بـ `GLOBAL IN`/`GLOBAL JOIN`.

القيم الممكنة:

* 0 — معطّل. لا يتم استبدال معاملي `IN`/`JOIN` بـ `GLOBAL IN`/`GLOBAL JOIN`.
* 1 — مفعّل. يتم استبدال معاملي `IN`/`JOIN` بـ `GLOBAL IN`/`GLOBAL JOIN`.

**الاستخدام**

على الرغم من أن `SET distributed_product_mode=global` يمكنه تغيير سلوك الاستعلامات بالنسبة إلى الجداول الموزعة، فإنه غير مناسب للجداول المحلية أو الجداول القادمة من الموارد الخارجية. وهنا يأتي دور الإعداد `prefer_global_in_and_join`.

على سبيل المثال، قد تكون لدينا عُقد لخدمة الاستعلامات تحتوي على جداول محلية لا تناسب التوزيع. في هذه الحالة، نحتاج إلى توزيع بياناتها أثناء المعالجة الموزعة في وقت التنفيذ باستخدام الكلمة المفتاحية `GLOBAL` — `GLOBAL IN`/`GLOBAL JOIN`.

ومن حالات الاستخدام الأخرى للإعداد `prefer_global_in_and_join` الوصول إلى الجداول المُنشأة بواسطة المحركات الخارجية. يساعد هذا الإعداد على تقليل عدد الاستدعاءات إلى المصادر الخارجية عند ربط مثل هذه الجداول: استدعاء واحد فقط لكل استعلام.

**انظر أيضًا:**

* [Distributed subqueries](/ar/reference/statements/in#distributed-subqueries) لمزيد من المعلومات حول كيفية استخدام `GLOBAL IN`/`GLOBAL JOIN`

<div id="prefer_localhost_replica">
  ## prefer\_localhost\_replica
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

يُفعِّل/يُعطِّل تفضيل استخدام النسخة المتماثلة على localhost عند معالجة الاستعلامات الموزعة.

القيم الممكنة:

* 1 — يرسل ClickHouse دائمًا الاستعلام إلى النسخة المتماثلة على localhost إذا كانت موجودة.
* 0 — يستخدم ClickHouse استراتيجية الموازنة المحددة في الإعداد [load\_balancing](#load_balancing).

<Note>
  عطّل هذا الإعداد إذا كنت تستخدم [max\_parallel\_replicas](#max_parallel_replicas) بدون [parallel\_replicas\_custom\_key](#parallel_replicas_custom_key).
  إذا كان [parallel\_replicas\_custom\_key](#parallel_replicas_custom_key) مضبوطًا، فعطّل هذا الإعداد فقط إذا كان يُستخدم على عنقود يضم عدة shards تحتوي على عدة نسخ متماثلة.
  إذا كان يُستخدم على عنقود يحتوي على shard واحدة وعدة نسخ متماثلة، فسيكون لتعطيل هذا الإعداد آثار سلبية.
</Note>

<div id="prefer_warmed_unmerged_parts_seconds">
  ## prefer\_warmed\_unmerged\_parts\_seconds
</div>

<SettingsInfoBlock type="Int64" default_value="0" />

لا يكون لهذا الإعداد أي تأثير إلا في ClickHouse Cloud. إذا كان الجزء المدمج أحدث من هذا العدد من الثواني ولم يُسخَّن مسبقًا (راجع [cache\_populated\_by\_fetch](/ar/reference/settings/merge-tree-settings#cache_populated_by_fetch))، وكانت جميع أجزائه المصدرية متاحة ومُسخَّنة مسبقًا، فستقرأ استعلامات SELECT من تلك الأجزاء بدلًا منه. ينطبق هذا فقط على Replicated-/SharedMergeTree. لاحظ أن هذا يتحقق فقط مما إذا كان CacheWarmer قد عالج الجزء؛ فإذا أُدخِل الجزء إلى ذاكرة التخزين المؤقت بواسطة آلية أخرى، فسيظل يُعتبر غير مُسخَّن حتى يعالجه CacheWarmer؛ وإذا كان قد سُخِّن ثم أُخرج من ذاكرة التخزين المؤقت، فسيظل يُعتبر مُسخَّنًا.

<div id="preferred_block_size_bytes">
  ## preferred\_block\_size\_bytes
</div>

<SettingsInfoBlock type="UInt64" default_value="1000000" />

يضبط هذا الإعداد حجم كتلة البيانات لمعالجة الاستعلامات، ويُعد ضبطًا إضافيًا أدقّ مقارنةً بإعداد 'max\_block\_size' الأقل دقة. إذا كانت الأعمدة كبيرة، وكان من المحتمل أن يتجاوز حجم الكتلة، عند استخدام عدد الصفوف المحدد في 'max\_block\_size'، عدد البايتات المحدد، فسيُخفَّض حجمها لتحسين محلية ذاكرة التخزين المؤقت للـ CPU.

<div id="preferred_max_column_in_block_size_bytes">
  ## preferred\_max\_column\_in\_block\_size\_bytes
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

الحد الأقصى لحجم العمود داخل الكتلة أثناء القراءة. يساعد على تقليل عدد مرات الإخفاق في ذاكرة التخزين المؤقت. ينبغي أن يكون قريبًا من حجم ذاكرة التخزين المؤقت L2.

<div id="preferred_optimize_projection_name">
  ## preferred\_optimize\_projection\_name
</div>

إذا ضُبطت على سلسلة غير فارغة، فسيحاول ClickHouse تطبيق الإسقاط المحدَّد في الاستعلام.

القيم الممكنة:

* String: اسم الإسقاط المفضّل

<div id="prefetch_buffer_size">
  ## prefetch\_buffer\_size
</div>

<SettingsInfoBlock type="UInt64" default_value="1048576" />

الحد الأقصى لحجم المخزن المؤقت للجلب المسبق للقراءة من نظام الملفات.

<div id="print_pretty_type_names">
  ## print\_pretty\_type\_names
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.1"},{"label": "1"},{"label": "تجربة مستخدم أفضل."}]}]} />

يسمح بطباعة أسماء الأنواع شديدة التداخل بصورة منسقة مع المسافات البادئة في استعلام `DESCRIBE` وفي الدالة `toTypeName()`.

مثال:

```sql theme={null}
CREATE TABLE test (a Tuple(b String, c Tuple(d Nullable(UInt64), e Array(UInt32), f Array(Tuple(g String, h Map(String, Array(Tuple(i String, j UInt64))))), k Date), l Nullable(String))) ENGINE=Memory;
DESCRIBE TABLE test FORMAT TSVRaw SETTINGS print_pretty_type_names=1;
```

```
a   Tuple(
    b String,
    c Tuple(
        d Nullable(UInt64),
        e Array(UInt32),
        f Array(Tuple(
            g String,
            h Map(
                String,
                Array(Tuple(
                    i String,
                    j UInt64
                ))
            )
        )),
        k Date
    ),
    l Nullable(String)
)
```

<div id="priority">
  ## الأولوية
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

أولوية الاستعلام. 1 - الأعلى، وكلما ارتفعت القيمة انخفضت الأولوية؛ 0 - لا تُستخدم الأولويات.

<div id="promql_database">
  ## promql\_database
</div>

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": ""},{"label": "إعداد تجريبي جديد"}]}]} />

يحدّد اسم قاعدة البيانات المستخدم مع لهجة 'promql'. وتعني السلسلة الفارغة قاعدة البيانات الحالية.

<div id="promql_evaluation_time">
  ## promql\_evaluation\_time
</div>

**الأسماء البديلة**: `evaluation_time`

<SettingsInfoBlock type="FloatAuto" default_value="auto" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.9"},{"label": "auto"},{"label": "تمت إعادة تسمية هذا الإعداد. الاسم السابق هو `evaluation_time`."}]}]} />

يحدّد وقت التقييم المستخدم مع لهجة promql. وتعني `'auto'` الوقت الحالي.

<div id="promql_table">
  ## promql\_table
</div>

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": ""},{"label": "إعداد تجريبي جديد"}]}]} />

يحدّد اسم جدول TimeSeries الذي تستخدمه لهجة 'promql'.

<div id="push_external_roles_in_interserver_queries">
  ## push\_external\_roles\_in\_interserver\_queries
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.11"},{"label": "1"},{"label": "إعداد جديد."}]}]} />

تمكين تمرير أدوار المستخدم من العُقدة المُصدِرة إلى العُقد الأخرى أثناء تنفيذ الاستعلام.

<div id="query_cache_compress_entries">
  ## query\_cache\_compress\_entries
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

يضغط العناصر في [ذاكرة التخزين المؤقت للاستعلامات](/ar/concepts/features/performance/caches/query-cache). يقلل استهلاك الذاكرة لذاكرة التخزين المؤقت للاستعلامات، ولكن على حساب إبطاء عمليات الإدراج فيها / القراءة منها.

القيم الممكنة:

* 0 - معطّل
* 1 - مفعّل

<div id="query_cache_for_subqueries">
  ## query\_cache\_for\_subqueries
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "0"},{"label": "إعداد جديد لتمكين تمرير `use_query_cache` إلى جميع الاستعلامات الفرعية. وبدونه، لا تُخزَّن الاستعلامات الفرعية مؤقتًا إلا عند التفعيل الصريح لكل استعلام فرعي على حدة عبر `SETTINGS use_query_cache = true`."}]}]} />

إذا كان هذا الخيار مفعّلًا، فقد تُكتب نتائج الاستعلامات الفرعية إلى [ذاكرة التخزين المؤقت للاستعلامات](/ar/concepts/features/performance/caches/query-cache) وتُقرأ منها. ويتيح ذلك تمرير `use_query_cache` إلى جميع الاستعلامات الفرعية.

القيم الممكنة:

* 0 - معطّل
* 1 - مفعّل

<div id="query_cache_max_entries">
  ## query\_cache\_max\_entries
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

الحد الأقصى لعدد نتائج الاستعلام التي يمكن للمستخدم الحالي تخزينها في [ذاكرة التخزين المؤقت للاستعلامات](/ar/concepts/features/performance/caches/query-cache). وتعني القيمة 0 عدم وجود حد.

القيم الممكنة:

* عدد صحيح غير سالب >= 0.

<div id="query_cache_max_size_in_bytes">
  ## query\_cache\_max\_size\_in\_bytes
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

الحد الأقصى لمقدار الذاكرة (بالبايت) الذي يمكن للمستخدم الحالي تخصيصه في [ذاكرة التخزين المؤقت للاستعلامات](/ar/concepts/features/performance/caches/query-cache). تعني القيمة 0 عدم وجود حد.

القيم الممكنة:

* عدد صحيح غير سالب >= 0.

<div id="query_cache_min_query_duration">
  ## query\_cache\_min\_query\_duration
</div>

<SettingsInfoBlock type="مللي ثانية" default_value="0" />

الحد الأدنى للمدة، بالمللي ثانية، التي يجب أن يستغرقها الاستعلام حتى تُخزَّن نتيجته في [ذاكرة التخزين المؤقت للاستعلامات](/ar/concepts/features/performance/caches/query-cache).

القيم الممكنة:

* عدد صحيح موجب أو صفر >= 0.

<div id="query_cache_min_query_runs">
  ## query\_cache\_min\_query\_runs
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

الحد الأدنى لعدد المرات التي يجب فيها تنفيذ استعلام `SELECT` قبل تخزين نتيجته في [ذاكرة التخزين المؤقت للاستعلامات](/ar/concepts/features/performance/caches/query-cache).

القيم الممكنة:

* عدد صحيح غير سالب >= 0.

<div id="query_cache_nondeterministic_function_handling">
  ## query\_cache\_nondeterministic\_function\_handling
</div>

<SettingsInfoBlock type="QueryResultCacheNondeterministicFunctionHandling" default_value="throw" />

يتحكم هذا الإعداد في كيفية تعامل [ذاكرة التخزين المؤقت للاستعلامات](/ar/concepts/features/performance/caches/query-cache) مع استعلامات `SELECT` التي تتضمن دوال غير حتمية مثل `rand()` أو `now()`.

القيم الممكنة:

* `'throw'` - طرح استثناء وعدم تخزين نتيجة الاستعلام مؤقتًا.
* `'save'` - تخزين نتيجة الاستعلام مؤقتًا.
* `'ignore'` - عدم تخزين نتيجة الاستعلام مؤقتًا وعدم طرح استثناء.

<div id="query_cache_share_between_users">
  ## query\_cache\_share\_between\_users
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

إذا كان هذا الإعداد مفعّلًا، يمكن للمستخدمين الآخرين قراءة نتائج استعلامات `SELECT` المخزّنة مؤقتًا في [ذاكرة التخزين المؤقت للاستعلامات](/ar/concepts/features/performance/caches/query-cache).
لا يُنصح بتمكين هذا الإعداد لأسباب أمنية.

القيم الممكنة:

* 0 - معطّل
* 1 - مفعّل

<div id="query_cache_squash_partial_results">
  ## query\_cache\_squash\_partial\_results
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

ادمج كتل النتائج الجزئية في كتل بحجم [max\_block\_size](#max_block_size). يقلل ذلك من أداء عمليات الإدراج في [ذاكرة التخزين المؤقت للاستعلامات](/ar/concepts/features/performance/caches/query-cache)، لكنه يحسّن قابلية ضغط عناصر ذاكرة التخزين المؤقت (راجع [query\_cache\_compress-entries](#query_cache_compress_entries)).

القيم الممكنة:

* 0 - معطّل
* 1 - مفعّل

<div id="query_cache_system_table_handling">
  ## query\_cache\_system\_table\_handling
</div>

<SettingsInfoBlock type="QueryResultCacheSystemTableHandling" default_value="throw" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.4"},{"label": "throw"},{"label": "لم تعد ذاكرة التخزين المؤقت للاستعلامات تخزّن نتائج الاستعلامات على جداول النظام"}]}]} />

يتحكّم هذا الإعداد في كيفية تعامل [ذاكرة التخزين المؤقت للاستعلامات](/ar/concepts/features/performance/caches/query-cache) مع استعلامات `SELECT` على جداول النظام، أي الجداول الموجودة في قاعدتَي البيانات `system.*` و`information_schema.*`.

القيم الممكنة:

* `'throw'` - رفع استثناء وعدم تخزين نتيجة الاستعلام مؤقتًا.
* `'save'` - تخزين نتيجة الاستعلام مؤقتًا.
* `'ignore'` - عدم تخزين نتيجة الاستعلام مؤقتًا وعدم رفع استثناء.

<div id="query_cache_tag">
  ## query\_cache\_tag
</div>

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.8"},{"label": ""},{"label": "إعداد جديد لوضع وسم على إدخالات ذاكرة التخزين المؤقت للاستعلامات."}]}]} />

سلسلة نصية تُستخدم كوسم لإدخالات [ذاكرة التخزين المؤقت للاستعلامات](/ar/concepts/features/performance/caches/query-cache).
تتعامل ذاكرة التخزين المؤقت للاستعلامات مع الاستعلامات نفسها ذات الوسوم المختلفة على أنها استعلامات مختلفة.

القيم الممكنة:

* أي سلسلة نصية

<div id="query_cache_ttl">
  ## query\_cache\_ttl
</div>

<SettingsInfoBlock type="ثوانٍ" default_value="60" />

بعد انقضاء هذه المدة بالثواني، تصبح العناصر في [ذاكرة التخزين المؤقت للاستعلامات](/ar/concepts/features/performance/caches/query-cache) قديمة.

القيم الممكنة:

* عدد صحيح غير سالب >= 0.

<div id="query_metric_log_interval">
  ## query\_metric\_log\_interval
</div>

<SettingsInfoBlock type="Int64" default_value="-1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.10"},{"label": "-1"},{"label": "إعداد جديد."}]}]} />

الفاصل الزمني، بالمللي ثانية، الذي يتم عنده جمع [query\_metric\_log](/ar/reference/system-tables/query_metric_log) للاستعلامات الفردية.

إذا ضُبطت هذه القيمة على أي قيمة سالبة، فستأخذ قيمة `collect_interval_milliseconds` من [إعداد query\_metric\_log](/ar/reference/settings/server-settings/settings#query_metric_log)، أو ستستخدم القيمة الافتراضية 1000 إذا لم تكن موجودة.

لتعطيل الجمع لاستعلام واحد، اضبط `query_metric_log_interval` على 0.

القيمة الافتراضية: -1

<div id="query_plan_aggregation_in_order">
  ## query\_plan\_aggregation\_in\_order
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "22.12"},{"label": "1"},{"label": "تمكين بعض إعادة الهيكلة المتعلقة بخطة الاستعلام"}]}]} />

يُفعّل أو يعطّل تحسين التجميع بالترتيب على مستوى خطة الاستعلام.
لا يسري مفعوله إلا إذا كان الإعداد [`query_plan_enable_optimizations`](#query_plan_enable_optimizations) يساوي 1.

<Note>
  هذا إعداد مخصص للخبراء، ويجب ألا يُستخدم إلا لأغراض تصحيح الأخطاء من قِبل المطورين. وقد يتغير هذا الإعداد مستقبلًا بطرق غير متوافقة مع الإصدارات السابقة أو قد تتم إزالته.
</Note>

القيم الممكنة:

* 0 - تعطيل
* 1 - تمكين

<div id="query_plan_convert_any_join_to_semi_or_anti_join">
  ## query\_plan\_convert\_any\_join\_to\_semi\_or\_anti\_join
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.9"},{"label": "1"},{"label": "إعداد جديد."}]}]} />

السماح بتحويل ANY JOIN إلى SEMI أو ANTI JOIN إذا كان عامل التصفية بعد JOIN يُقيَّم دائمًا إلى false للصفوف المطابقة أو غير المطابقة

<div id="query_plan_convert_join_to_in">
  ## query\_plan\_convert\_join\_to\_in
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.4"},{"label": "0"},{"label": "إعداد جديد"}]}]} />

السماح بتحويل `JOIN` إلى استعلام فرعي يتضمّن `IN` إذا كانت أعمدة الإخراج مرتبطة بالجدول الأيسر فقط. قد يؤدي ذلك إلى نتائج غير صحيحة مع أنواع `JOIN` غير `ANY` (مثل `ALL JOINs`، وهو الإعداد الافتراضي).

<div id="query_plan_convert_outer_join_to_inner_join">
  ## query\_plan\_convert\_outer\_join\_to\_inner\_join
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.4"},{"label": "1"},{"label": "السماح بتحويل OUTER JOIN إلى INNER JOIN إذا كان عامل التصفية بعد JOIN يستبعد دائمًا القيم الافتراضية"}]}]} />

السماح بتحويل `OUTER JOIN` إلى `INNER JOIN` إذا كان عامل التصفية بعد `JOIN` يستبعد دائمًا القيم الافتراضية

<div id="query_plan_direct_read_from_text_index">
  ## query\_plan\_direct\_read\_from\_text\_index
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "1"},{"label": "أصبح الفهرس النصي متاحًا للاستخدام العام الآن"}]}, {"id": "row-2","items": [{"label": "25.9"},{"label": "1"},{"label": "إعداد جديد."}]}]} />

يسمح بإجراء التصفية في البحث النصي الكامل بالاعتماد فقط على الفهرس النصي المعكوس ضمن خطة الاستعلام.

<div id="query_plan_display_internal_aliases">
  ## query\_plan\_display\_internal\_aliases
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.9"},{"label": "0"},{"label": "إعداد جديد"}]}]} />

يعرض الأسماء المستعارة الداخلية (مثل \_\_table1) في EXPLAIN PLAN بدلًا من الأسماء المحددة في الاستعلام الأصلي.

<div id="query_plan_enable_multithreading_after_window_functions">
  ## query\_plan\_enable\_multithreading\_after\_window\_functions
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

تمكين المعالجة متعددة الخيوط بعد تقييم دوال النافذة للسماح بمعالجة التدفقات بالتوازي

<div id="query_plan_enable_optimizations">
  ## query\_plan\_enable\_optimizations
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

يتيح تمكين أو تعطيل تحسين الاستعلام على مستوى خطة الاستعلام.

<Note>
  هذا إعداد مخصص للخبراء، ويجب ألا يُستخدم إلا لأغراض تصحيح الأخطاء من قِبل المطورين. قد يتغير هذا الإعداد مستقبلًا بطرق غير متوافقة مع الإصدارات السابقة، أو قد تتم إزالته.
</Note>

القيم الممكنة:

* 0 - تعطيل جميع عمليات التحسين على مستوى خطة الاستعلام
* 1 - تمكين عمليات التحسين على مستوى خطة الاستعلام (لكن قد تظل بعض عمليات التحسين الفردية معطّلة عبر إعداداتها الخاصة)

<div id="query_plan_execute_functions_after_sorting">
  ## query\_plan\_execute\_functions\_after\_sorting
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

يبدّل تحسينًا على مستوى خطة الاستعلام ينقل التعبيرات إلى ما بعد خطوات الفرز.
ولا يسري مفعوله إلا إذا كانت قيمة الإعداد [`query_plan_enable_optimizations`](#query_plan_enable_optimizations) تساوي 1.

<Note>
  هذا إعداد مخصّص للخبراء، ويجب ألا يستخدمه إلا المطورون لأغراض تصحيح الأخطاء. وقد يتغير هذا الإعداد مستقبلًا على نحو غير متوافق مع الإصدارات السابقة، أو قد يُزال.
</Note>

القيم الممكنة:

* 0 - تعطيل
* 1 - تمكين

<div id="query_plan_filter_push_down">
  ## query\_plan\_filter\_push\_down
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

يبدّل تحسينًا على مستوى خطة الاستعلام يدفع عوامل التصفية إلى أسفل ضمن خطة التنفيذ.
ولا يسري مفعوله إلا إذا كانت قيمة الإعداد [query\_plan\_enable\_optimizations](#query_plan_enable_optimizations) تساوي 1.

<Note>
  هذا إعداد مخصّص للمستخدمين الخبراء، ويجب ألا يُستخدم إلا لأغراض تصحيح الأخطاء من قِبل المطورين. قد يتغير هذا الإعداد مستقبلًا بطرق غير متوافقة مع الإصدارات السابقة أو قد يُزال.
</Note>

القيم الممكنة:

* 0 - تعطيل
* 1 - تمكين

<div id="query_plan_join_shard_by_pk_ranges">
  ## query\_plan\_join\_shard\_by\_pk\_ranges
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.4"},{"label": "0"},{"label": "إعداد جديد"}]}]} />

طبّق sharding على JOIN إذا كانت مفاتيح الربط تتضمن بادئة من PRIMARY KEY في كلا الجدولين. هذا الإعداد مدعوم مع الخوارزميات hash وparallel\_hash وfull\_sorting\_merge. وعادةً لا يؤدي إلى تسريع الاستعلامات، لكنه قد يقلل استهلاك الذاكرة.

<div id="query_plan_join_swap_table">
  ## query\_plan\_join\_swap\_table
</div>

<SettingsInfoBlock type="BoolAuto" default_value="auto" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.12"},{"label": "auto"},{"label": "إعداد جديد. كان الجدول الأيمن يُختار دائمًا سابقًا."}]}]} />

حدِّد أي طرف من طرفَي JOIN يجب أن يكون جدول البناء (ويُسمى أيضًا الداخلي، وهو الذي يُدرَج في جدول التجزئة في `hash join`) في خطة الاستعلام. لا يدعم هذا الإعداد إلا درجة الصرامة `ALL` في JOIN مع عبارة `JOIN ON`. القيم الممكنة هي:

* 'auto': دع المخطِّط يقرر أي جدول سيُستخدم كجدول البناء.
  * 'false': لا تبدِّل الجداول مطلقًا (الجدول الأيمن هو جدول البناء).
  * 'true': بدِّل الجداول دائمًا (الجدول الأيسر هو جدول البناء).

<div id="query_plan_lift_up_array_join">
  ## query\_plan\_lift\_up\_array\_join
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

يُفعّل أو يعطّل تحسينًا على مستوى خطة الاستعلام يرفع عمليات ARRAY JOIN إلى أعلى في خطة التنفيذ.
ولا يسري مفعوله إلا إذا كانت قيمة الإعداد [query\_plan\_enable\_optimizations](#query_plan_enable_optimizations) تساوي 1.

<Note>
  هذا إعداد مخصص للمستخدمين الخبراء، ويجب ألا يُستخدم إلا لأغراض تصحيح الأخطاء من قِبل المطورين. وقد يتغير هذا الإعداد مستقبلًا بطرق غير متوافقة مع الإصدارات السابقة أو قد يُزال.
</Note>

القيم الممكنة:

* 0 - تعطيل
* 1 - تمكين

<div id="query_plan_lift_up_union">
  ## query\_plan\_lift\_up\_union
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

يبدّل هذا الإعداد تحسينًا على مستوى خطة الاستعلام ينقل أشجارًا فرعية أكبر ضمن خطة الاستعلام إلى `union` لإتاحة المزيد من التحسينات.
ولا يسري مفعوله إلا إذا كان الإعداد [`query_plan_enable_optimizations`](#query_plan_enable_optimizations) مضبوطًا على 1.

<Note>
  هذا إعداد مخصص للخبراء، ويجب ألا يستخدمه إلا المطورون لأغراض تصحيح الأخطاء. وقد يتغير هذا الإعداد مستقبلًا بطرق غير متوافقة مع الإصدارات السابقة أو قد تتم إزالته.
</Note>

القيم الممكنة:

* 0 - تعطيل
* 1 - تمكين

<div id="query_plan_max_limit_for_join_lazy_indexing">
  ## query\_plan\_max\_limit\_for\_join\_lazy\_indexing
</div>

<SettingsInfoBlock type="UInt64" default_value="1000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.6"},{"label": "1000"},{"label": "أُضيف إعداد جديد للتحكم في قيمة الحد الأقصى التي تتيح استخدام `خطة الاستعلام` لتحسين الفهرسة الكسولة في `JOIN`. إذا كانت القيمة صفراً، فلا يوجد حد"}]}]} />

التحكم في قيمة الحد الأقصى التي تتيح استخدام `خطة الاستعلام` لتحسين الفهرسة الكسولة في `JOIN`. إذا كانت القيمة صفراً، فلا يوجد حد.

<div id="query_plan_max_limit_for_lazy_materialization">
  ## query\_plan\_max\_limit\_for\_lazy\_materialization
</div>

<SettingsInfoBlock type="UInt64" default_value="10000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.4"},{"label": "10"},{"label": "أُضيف إعداد جديد للتحكم في قيمة الحد الأقصى التي تسمح باستخدام خطة الاستعلام لتحسين التجسيد الكسول. إذا كانت القيمة صفراً، فلا يوجد حد"}]}, {"id": "row-2","items": [{"label": "25.12"},{"label": "10000"},{"label": "زيادة الحد بعد تحسين الأداء"}]}, {"id": "row-3","items": [{"label": "25.11"},{"label": "100"},{"label": "أكثر كفاءة"}]}]} />

يتحكم في قيمة الحد الأقصى التي تسمح باستخدام خطة الاستعلام لتحسين التجسيد الكسول. إذا كانت القيمة صفراً، فلا يوجد حد.

<div id="query_plan_max_limit_for_top_k_optimization">
  ## query\_plan\_max\_limit\_for\_top\_k\_optimization
</div>

<SettingsInfoBlock type="UInt64" default_value="1000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "1000"},{"label": "إعداد جديد."}]}]} />

يتحكم في قيمة الحد الأقصى التي تسمح بتقييم خطة الاستعلام لتحسين TopK باستخدام فهرس التخطي minmax والتصفية بعتبة ديناميكية. إذا كانت القيمة صفرًا، فلا يوجد حد.

<div id="query_plan_max_optimizations_to_apply">
  ## query\_plan\_max\_optimizations\_to\_apply
</div>

<SettingsInfoBlock type="UInt64" default_value="10000" />

يحدّ هذا الإعداد من العدد الإجمالي لعمليات التحسين المُطبَّقة على خطة الاستعلام؛ راجع الإعداد [query\_plan\_enable\_optimizations](#query_plan_enable_optimizations).
وهو مفيد لتجنّب إطالة وقت التحسين في الاستعلامات المعقّدة.
في استعلام EXPLAIN PLAN، يتوقف تطبيق التحسينات بعد بلوغ هذا الحد وتُعاد الخطة كما هي.
أما عند تنفيذ الاستعلامات العادية، فإذا تجاوز العدد الفعلي لعمليات التحسين هذا الإعداد، يُطرَح استثناء.

<Note>
  هذا إعداد مخصّص للمستخدمين الخبراء، ولا ينبغي أن يُستخدم إلا لأغراض تصحيح الأخطاء من قِبل المطورين. وقد يتغير هذا الإعداد مستقبلًا بطرق غير متوافقة مع الإصدارات السابقة، أو قد يُزال.
</Note>

<div id="query_plan_max_set_size_for_projection_match">
  ## query\_plan\_max\_set\_size\_for\_projection\_match
</div>

<SettingsInfoBlock type="UInt64" default_value="10000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.6"},{"label": "10000"},{"label": "تمت إضافة إعداد جديد يحدّ من تكلفة تجزئة محتوى مجموعات عبارة `IN` في مُطابِق الإسقاط (حاليًا: الإسقاط التجميعي). وتُعامَل المجموعات الأكبر من هذا الحد على أنها غير متطابقة. تؤدي القيمة صفر إلى تعطيل مقارنة تجزئة المحتوى بالكامل (قيمة التوافق: لا تنجح مطابقة الإسقاط مطلقًا للعُقد التي تحتوي على مجموعات لعبارة `IN`)."}]}]} />

الحد الأقصى لعدد الصفوف في مجموعة لعبارة `IN` يحسب لها مُطابِق الإسقاط تجزئات المحتوى ويقارنها عند تحديد ما إذا كانت مجموعتان متساويتين. وتُعامَل المجموعات الأكبر من ذلك على أنها غير متطابقة، ويُتخطّى الإسقاط. تؤدي القيمة صفر إلى تعطيل مقارنة تجزئة المحتوى بالكامل: لا تنجح مطابقة الإسقاط مطلقًا للعُقد التي تحتوي على مجموعات لعبارة `IN`.

يُستخدم هذا الإعداد بواسطة مُطابِق الإسقاط التجميعي (وأي مُطابِق إسقاط مستقبلي يحتاج إلى مقارنة مجموعات لعبارة `IN`). ويبلغ تعقيد حساب تجزئة المحتوى `O(N log N)` بالنسبة إلى عدد عناصر المجموعة؛ لذا يضع هذا الإعداد حدًا للتكلفة المتكبدة أثناء التخطيط عند ظهور عدد كبير من عبارات `IN` في الاستعلام أو الإسقاط.

<div id="query_plan_max_step_description_length">
  ## query\_plan\_max\_step\_description\_length
</div>

<SettingsInfoBlock type="UInt64" default_value="500" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.9"},{"label": "500"},{"label": "إعداد جديد"}]}]} />

الحد الأقصى لطول وصف الخطوة في EXPLAIN PLAN.

<div id="query_plan_merge_expressions">
  ## query\_plan\_merge\_expressions
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

يبدّل تحسينًا على مستوى خطة الاستعلام يدمج المرشحات المتتالية.
لا يسري مفعوله إلا إذا كانت قيمة الإعداد [query\_plan\_enable\_optimizations](#query_plan_enable_optimizations) تساوي 1.

<Note>
  هذا إعداد مخصص للمستخدمين الخبراء، ويجب ألا يستخدمه إلا المطورون لأغراض تصحيح الأخطاء. وقد يتغير هذا الإعداد مستقبلًا بطرق غير متوافقة مع الإصدارات السابقة أو يُزال.
</Note>

القيم الممكنة:

* 0 - تعطيل
* 1 - تمكين

<div id="query_plan_merge_filter_into_join_condition">
  ## query\_plan\_merge\_filter\_into\_join\_condition
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.4"},{"label": "1"},{"label": "إضافة إعداد جديد لدمج عامل التصفية في شرط الربط"}]}]} />

السماح بدمج عامل التصفية ضمن شرط `JOIN` وتحويل `CROSS JOIN` إلى `INNER`.

<div id="query_plan_merge_filters">
  ## query\_plan\_merge\_filters
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.7"},{"label": "0"},{"label": "السماح بدمج عوامل التصفية في خطة الاستعلام"}]}, {"id": "row-2","items": [{"label": "24.11"},{"label": "1"},{"label": "السماح بدمج عوامل التصفية في خطة الاستعلام. وهذا مطلوب لدعم دفع عوامل التصفية إلى الأسفل بشكل صحيح باستخدام analyzer."}]}]} />

السماح بدمج عوامل التصفية في خطة الاستعلام.

<div id="query_plan_min_columns_for_join_lazy_indexing">
  ## query\_plan\_min\_columns\_for\_join\_lazy\_indexing
</div>

<SettingsInfoBlock type="UInt64" default_value="3" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.6"},{"label": "3"},{"label": "التحكم في الحد الأدنى لعدد أعمدة حمولة البيانات من الجانب الأيسر المطلوبة لتمكين تحسين الفهرسة الكسولة في JOIN"}]}]} />

يتحكم هذا الإعداد في الحد الأدنى لعدد أعمدة حمولة البيانات من الجانب الأيسر المطلوبة لتمكين تحسين الفهرسة الكسولة في JOIN. وتعني القيمة 0 أن هذا التحسين معطّل.

<div id="query_plan_optimize_join_order_algorithm">
  ## query\_plan\_optimize\_join\_order\_algorithm
</div>

<SettingsInfoBlock type="JoinOrderAlgorithm" default_value="greedy" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "greedy"},{"label": "إعداد تجريبي جديد."}]}]} />

يحدّد خوارزميات ترتيب JOIN التي تجب تجربتها أثناء تحسين خطة الاستعلام. الخوارزميات التالية متاحة:

* `greedy` - خوارزمية جشعة أساسية - تعمل بسرعة، لكنها قد لا تنتج أفضل ترتيب لعمليات JOIN
* `dpsize` - يطبّق خوارزمية DPsize حاليًا على عمليات INNER JOIN فقط - يراعي جميع ترتيبات JOIN الممكنة ويعثر على الترتيب الأمثل، لكنه قد يكون بطيئًا للاستعلامات التي تتضمن عددًا كبيرًا من الجداول وشروط JOIN
* `dphyp` - يطبّق خوارزمية DPhyp (البرمجة الديناميكية عبر تقسيم الرسم البياني الفائق) حاليًا على عمليات INNER JOIN فقط - يستكشف مجال البحث نفسه الذي تستكشفه `dpsize`، لكنه لا يُعدِّد إلا أزواج الرسوم البيانية الفرعية المتصلة، مما يولّد عددًا أقل من عمليات JOIN الوسيطة في رسوم JOIN البيانية المتناثرة، وذلك مقابل عدم أخذ الضربات الديكارتية في الحسبان
  يمكن تحديد عدة خوارزميات في صورة قائمة مفصولة بفواصل، مثل `dphyp,greedy`. وتُجرَّب هذه الخوارزميات بالترتيب؛ فإذا تعذّر على إحدى الخوارزميات التعامل مع الاستعلام (على سبيل المثال، بسبب عمليات OUTER JOIN أو المكوّنات غير المتصلة)، تُستخدَم الخوارزمية التالية كخيار احتياطي.

<div id="query_plan_optimize_join_order_limit">
  ## query\_plan\_optimize\_join\_order\_limit
</div>

<SettingsInfoBlock type="UInt64" default_value="10" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.9"},{"label": "1"},{"label": "إعداد جديد"}]}, {"id": "row-2","items": [{"label": "25.12"},{"label": "10"},{"label": "السماح بإعادة ترتيب JOIN مع عدد أكبر من الجداول افتراضيًا"}]}]} />

يعمل على تحسين ترتيب عمليات JOIN داخل الاستعلام الفرعي نفسه. ولا يُدعَم ذلك حاليًا إلا في حالات محدودة جدًا.
القيمة هي الحد الأقصى لعدد الجداول التي يمكن تحسينها.

<div id="query_plan_optimize_join_order_max_searched_plans">
  ## query\_plan\_optimize\_join\_order\_max\_searched\_plans
</div>

<SettingsInfoBlock type="UInt64" default_value="100000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.6"},{"label": "100000"},{"label": "إعداد جديد لوضع حدّ لعدد الخطط الجزئية التي يستكشفها مُحسِّن ترتيب join قبل الرجوع إلى الخوارزمية التالية."}]}]} />

الحد الأقصى لعدد الخطط الجزئية التي يمكن لمُحسِّن ترتيب join استكشافها قبل التوقف والرجوع إلى الخوارزمية التالية في `query_plan_optimize_join_order_algorithm`.
يضع هذا حدًا حتميًا لزمن التحسين (بصرف النظر عن الزمن المنقضي فعليًا) في الرسوم البيانية الكثيفة لعمليات join، مثل cliques أو stars، حيث تنمو مساحة البحث نموًا أُسّيًا.
اضبطه على 0 لتعطيل هذا الحد. لا يؤثر ذلك في القيمة الافتراضية `query_plan_optimize_join_order_limit`، حيث يظل البحث دائمًا أدنى بكثير من هذا الحد.

<div id="query_plan_optimize_join_order_randomize">
  ## query\_plan\_optimize\_join\_order\_randomize
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "0"},{"label": "إعداد جديد لجعل إحصاءات ترتيب join عشوائية لأغراض الاختبار."}]}]} />

عندما تكون القيمة غير صفرية، يستخدم مُحسِّن ترتيب join قيم cardinality وNDV مولَّدة عشوائيًا بدلًا من الإحصاءات الفعلية.
عند ضبطها على 1، تُولَّد random seed، وعند ضبطها على قيمة > 1، تُستخدم تلك القيمة نفسها بوصفها seed مباشرةً.
هذا مخصَّص للاختبار بهدف العثور على الأخطاء الناتجة عن ترتيبات join المختلفة.

<div id="query_plan_optimize_lazy_final">
  ## query\_plan\_optimize\_lazy\_final
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "0"},{"label": "إعداد جديد لتحسين القراءة باستخدام FINAL من ReplacingMergeTree عبر إنشاء مجموعة من المفاتيح الأساسية واستخدامها لتحليل الفهرس"}]}]} />

تحسين القراءة باستخدام FINAL من ReplacingMergeTree عبر إنشاء مجموعة من المفاتيح الأساسية واستخدامها لتحليل الفهرس.

<div id="query_plan_optimize_lazy_materialization">
  ## query\_plan\_optimize\_lazy\_materialization
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.4"},{"label": "1"},{"label": "أُضيف إعداد جديد لاستخدام خطة الاستعلام في تحسين التجسيد الكسول"}]}]} />

استخدم خطة الاستعلام لتحسين التجسيد الكسول.

<div id="query_plan_optimize_prewhere">
  ## query\_plan\_optimize\_prewhere
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.2"},{"label": "1"},{"label": "السماح بدفع التصفية إلى تعبير PREWHERE لوحدات التخزين المدعومة"}]}]} />

السماح بدفع التصفية إلى تعبير PREWHERE لوحدات التخزين المدعومة

<div id="query_plan_push_down_limit">
  ## query\_plan\_push\_down\_limit
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

يبدّل حالة تحسين على مستوى خطة الاستعلام يدفع عبارات LIMIT إلى أسفل ضمن خطة التنفيذ.
ولا يسري مفعوله إلا إذا كانت قيمة الإعداد [query\_plan\_enable\_optimizations](#query_plan_enable_optimizations) تساوي 1.

<Note>
  هذا إعداد مخصص للخبراء، ويجب ألا يُستخدم إلا لأغراض تصحيح الأخطاء من قِبل المطورين. وقد يتغير هذا الإعداد مستقبلًا بطرق غير متوافقة مع الإصدارات السابقة أو قد تتم إزالته.
</Note>

القيم الممكنة:

* 0 - تعطيل
* 1 - تمكين

<div id="query_plan_push_limit_by_into_sort">
  ## query\_plan\_push\_limit\_by\_into\_sort
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.6"},{"label": "1"},{"label": "إعداد جديد يُدخِل `LIMIT BY` الخاص بكل تدفق إلى مسار الفرز عندما تكون أعمدة `LIMIT BY` بادئة لـ `ORDER BY`، مما يقلل عدد الصفوف المارة عبر عملية الدمج النهائية."}]}]} />

يبدّل تحسينًا على مستوى خطة الاستعلام لاستعلامات `ORDER BY ... LIMIT BY`. عندما تكون أعمدة `LIMIT BY` بادئة لعبارة `ORDER BY`، يطبّق كل تدفق مفروز ومتوازٍ `LIMIT BY` قبل دمج التدفقات في تدفق واحد، مما يقلل عدد الصفوف التي تعالجها عملية الدمج النهائية ومراحل المسار اللاحقة. يسرّع ذلك الاستعلامات التي يستبعد فيها `LIMIT BY` نسبة كبيرة من الصفوف.

لا يسري مفعوله إلا إذا كان الإعداد [query\_plan\_enable\_optimizations](#query_plan_enable_optimizations) يساوي 1.

القيم الممكنة:

* 0 - تعطيل
* 1 - تمكين

<div id="query_plan_read_in_order">
  ## query\_plan\_read\_in\_order
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

يبدّل تفعيل تحسين القراءة بالترتيب على مستوى خطة الاستعلام.
ولا يسري مفعوله إلا إذا كانت قيمة الإعداد [`query_plan_enable_optimizations`](#query_plan_enable_optimizations) تساوي 1.

<Note>
  هذا إعداد مخصص للمستخدمين الخبراء، ويجب ألا يُستخدم إلا لأغراض تصحيح الأخطاء من قِبل المطورين. وقد يتغير هذا الإعداد مستقبلًا بطرق غير متوافقة مع الإصدارات السابقة أو قد تتم إزالته.
</Note>

القيم الممكنة:

* 0 - تعطيل
* 1 - تمكين

<div id="query_plan_read_in_order_through_join">
  ## query\_plan\_read\_in\_order\_through\_join
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "1"},{"label": "إعداد جديد"}]}]} />

الحفاظ على القراءة بالترتيب من الجدول الأيسر في عمليات JOIN، بحيث يمكن للخطوات اللاحقة الاستفادة من ذلك.

<div id="query_plan_remove_redundant_distinct">
  ## query\_plan\_remove\_redundant\_distinct
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "23.2"},{"label": "1"},{"label": "إزالة خطوة Distinct غير الضرورية في خطة الاستعلام"}]}]} />

يبدّل تحسينًا على مستوى خطة الاستعلام يزيل خطوات DISTINCT غير الضرورية.
لا يسري مفعوله إلا إذا كان الإعداد [`query_plan_enable_optimizations`](#query_plan_enable_optimizations) يساوي 1.

<Note>
  هذا إعداد مخصص للخبراء، ويجب ألا يستخدمه إلا المطورون لأغراض تصحيح الأخطاء. قد يتغير هذا الإعداد مستقبلًا بطرق غير متوافقة مع الإصدارات السابقة، أو قد تتم إزالته.
</Note>

القيم الممكنة:

* 0 - تعطيل
* 1 - تمكين

<div id="query_plan_remove_redundant_sorting">
  ## query\_plan\_remove\_redundant\_sorting
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "23.1"},{"label": "1"},{"label": "إزالة الفرز غير الضروري في خطة الاستعلام. على سبيل المثال، خطوات الفرز المرتبطة بعبارات ORDER BY في الاستعلامات الفرعية"}]}]} />

يُفعِّل أو يعطِّل تحسينًا على مستوى خطة الاستعلام يزيل خطوات الفرز غير الضرورية، مثل تلك الموجودة في الاستعلامات الفرعية.
ولا يسري مفعوله إلا إذا كانت قيمة الإعداد [`query_plan_enable_optimizations`](#query_plan_enable_optimizations) تساوي 1.

<Note>
  هذا إعداد مخصّص للخبراء، ويجب ألا يستخدمه إلا المطورون لأغراض تصحيح الأخطاء. وقد يتغير هذا الإعداد مستقبلًا بطرق غير متوافقة مع الإصدارات السابقة، أو قد تتم إزالته.
</Note>

القيم الممكنة:

* 0 - تعطيل
* 1 - تمكين

<div id="query_plan_remove_unused_columns">
  ## query\_plan\_remove\_unused\_columns
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "1"},{"label": "إعداد جديد. إضافة تحسين لإزالة الأعمدة غير المستخدمة من خطة الاستعلام."}]}]} />

يُفعِّل أو يعطِّل تحسينًا على مستوى خطة الاستعلام يحاول إزالة الأعمدة غير المستخدمة (أعمدة الإدخال والإخراج على حدّ سواء) من خطوات خطة الاستعلام.
ولا يسري مفعوله إلا إذا كانت قيمة الإعداد [query\_plan\_enable\_optimizations](#query_plan_enable_optimizations) تساوي 1.

<Note>
  هذا إعداد مخصّص للمستخدمين الخبراء، ولا ينبغي أن يستخدمه إلا المطورون لأغراض تصحيح الأخطاء. وقد يتغير هذا الإعداد مستقبلًا على نحو غير متوافق مع الإصدارات السابقة، أو قد تتم إزالته.
</Note>

القيم الممكنة:

* 0 - تعطيل
* 1 - تمكين

<div id="query_plan_reuse_storage_ordering_for_window_functions">
  ## query\_plan\_reuse\_storage\_ordering\_for\_window\_functions
</div>

**الأسماء البديلة**: `optimize_read_in_window_order`

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.1"},{"label": "0"},{"label": "يتم تعطيل هذا المنطق افتراضيًا."}]}]} />

يبدّل تحسينًا على مستوى خطة الاستعلام يستخدم ترتيب التخزين عند إجراء الفرز لدوال النافذة.
ولا يسري مفعوله إلا إذا كان الإعداد [`query_plan_enable_optimizations`](#query_plan_enable_optimizations) مضبوطًا على 1.

<Note>
  هذا إعداد مخصص للخبراء، ويجب ألا يُستخدم إلا لأغراض تصحيح الأخطاء من قِبل المطورين. وقد يتغير هذا الإعداد مستقبلًا بطرق غير متوافقة مع الإصدارات السابقة أو قد يُزال.
</Note>

القيم الممكنة:

* 0 - تعطيل
* 1 - تمكين

<div id="query_plan_split_filter">
  ## query\_plan\_split\_filter
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<Note>
  هذا إعداد مخصّص للخبراء، ولا ينبغي أن يستخدمه لأغراض تصحيح الأخطاء إلا المطورون. قد يتغير هذا الإعداد مستقبلًا على نحو غير متوافق مع الإصدارات السابقة، أو قد يُزال.
</Note>

يتحكم في تفعيل تحسين على مستوى خطة الاستعلام يقسّم عوامل التصفية إلى تعبيرات أو تعطيله.
ولا يسري إلا إذا كانت قيمة الإعداد [query\_plan\_enable\_optimizations](#query_plan_enable_optimizations) تساوي 1.

القيم الممكنة:

* 0 - تعطيل
* 1 - تمكين

<div id="query_plan_text_index_add_hint">
  ## query\_plan\_text\_index\_add\_hint
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "1"},{"label": "إعداد جديد"}]}]} />

يسمح بإضافة تلميح (شرط إضافي) لعملية التصفية المبنية من الفهرس النصي المعكوس في خطة الاستعلام.

<div id="query_plan_top_k_through_join">
  ## query\_plan\_top\_k\_through\_join
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "1"},{"label": "إعداد جديد لتمكين تحسين على مستوى خطة الاستعلام يدفع `ORDER BY ... LIMIT n` عبر ربط LEFT/RIGHT عندما لا يشير مفتاح الفرز إلا إلى الجانب الذي يحتفظ به الربط."}]}]} />

يؤدي هذا إلى تفعيل تحسين على مستوى خطة الاستعلام يدفع `ORDER BY ... LIMIT n` إلى أسفل عبر عملية join عندما لا يشير مفتاح الفرز إلا إلى الأعمدة في الجانب الذي يحتفظ به الـ join ‏(LEFT/RIGHT). ويقيّد عدد الصفوف التي يجب أن ينتجها الإدخال الخاص بالجانب المُحتفَظ به قبل إجراء الربط.
لا يسري مفعوله إلا إذا كانت قيمة الإعداد [query\_plan\_enable\_optimizations](#query_plan_enable_optimizations) تساوي 1.

القيم الممكنة:

* 0 - تعطيل
* 1 - تمكين

<div id="query_plan_try_use_vector_search">
  ## query\_plan\_try\_use\_vector\_search
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "1"},{"label": "إعداد جديد."}]}]} />

يُبدّل تحسينًا على مستوى خطة الاستعلام يحاول استخدام فهرس تشابه المتجهات.
ولا يسري مفعوله إلا إذا كانت قيمة الإعداد [`query_plan_enable_optimizations`](#query_plan_enable_optimizations) تساوي 1.

<Note>
  هذا إعداد مخصّص لمستوى الخبراء، ولا ينبغي أن يستخدمه إلا المطورون لأغراض تصحيح الأخطاء. وقد يتغيّر هذا الإعداد مستقبلًا على نحو غير متوافق مع الإصدارات السابقة أو قد تتم إزالته.
</Note>

القيم الممكنة:

* 0 - تعطيل
* 1 - تمكين

<div id="query_profiler_cpu_time_period_ns">
  ## query\_profiler\_cpu\_time\_period\_ns
</div>

<SettingsInfoBlock type="UInt64" default_value="1000000000" />

يحدّد الفترة الزمنية لمؤقّت ساعة CPU الخاص بـ [أداة توصيف الاستعلام](/ar/concepts/features/performance/troubleshoot/sampling-query-profiler). لا يحسب هذا المؤقّت سوى وقت CPU.

القيم الممكنة:

* عدد صحيح موجب من النانوثواني.

  القيم الموصى بها:

  * 10000000 (100 مرة في الثانية) نانوثانية أو أكثر للاستعلامات الفردية.
  * 1000000000 (مرة واحدة في الثانية) للتوصيف على مستوى العنقود بالكامل.

* 0 لإيقاف المؤقّت.

انظر أيضًا:

* جدول النظام [trace\_log](/ar/reference/system-tables/trace_log)

<div id="query_profiler_real_time_period_ns">
  ## query\_profiler\_real\_time\_period\_ns
</div>

<SettingsInfoBlock type="UInt64" default_value="1000000000" />

يحدّد الفترة الزمنية لمؤقّت الزمن الحقيقي الخاص بـ [أداة توصيف الاستعلام](/ar/concepts/features/performance/troubleshoot/sampling-query-profiler). ويقيس مؤقّت الزمن الحقيقي وقت الساعة.

القيم الممكنة:

* عدد صحيح موجب، بالنانوثانية.

  القيم الموصى بها:

  * 10000000 (100 مرة في الثانية) نانوثانية أو أقل للاستعلامات الفردية.
  * 1000000000 (مرة واحدة في الثانية) لتحليل الأداء على مستوى العنقود بأكمله.

* 0 لإيقاف المؤقّت.

انظر أيضًا:

* جدول النظام [trace\_log](/ar/reference/system-tables/trace_log)

القيمة الافتراضية في Cloud: `3000000000`.

<div id="queue_max_wait_ms">
  ## queue\_max\_wait\_ms
</div>

<SettingsInfoBlock type="مللي ثانية" default_value="0" />

زمن الانتظار في قائمة انتظار الطلبات إذا تجاوز عدد الطلبات المتزامنة الحد الأقصى.

<div id="rabbitmq_max_wait_ms">
  ## rabbitmq\_max\_wait\_ms
</div>

<SettingsInfoBlock type="مللي ثانية" default_value="5000" />

مدة الانتظار قبل إعادة المحاولة عند القراءة من RabbitMQ.

<div id="read_backoff_max_throughput">
  ## read\_backoff\_max\_throughput
</div>

<SettingsInfoBlock type="UInt64" default_value="1048576" />

إعدادات لتقليل عدد الخيوط عند بطء عمليات القراءة. تُحتسب الأحداث عندما يقل معدل نقل القراءة عن هذا العدد من البايتات في الثانية.

<div id="read_backoff_min_concurrency">
  ## read\_backoff\_min\_concurrency
</div>

<SettingsInfoBlock type="UInt64" default_value="1" />

إعدادات تهدف إلى الإبقاء على الحد الأدنى من الخيوط عند بطء عمليات القراءة.

<div id="read_backoff_min_events">
  ## read\_backoff\_min\_events
</div>

<SettingsInfoBlock type="UInt64" default_value="2" />

إعدادات لتقليل عدد الخيوط في حال بطء عمليات القراءة. عدد الأحداث الذي بعده سيُخفَّض عدد الخيوط.

<div id="read_backoff_min_interval_between_events_ms">
  ## read\_backoff\_min\_interval\_between\_events\_ms
</div>

<SettingsInfoBlock type="مللي ثانية" default_value="1000" />

إعدادات لتقليل عدد خيوط التنفيذ في حال بطء عمليات القراءة. يُتجاهَل الحدث إذا كان قد مضى منذ الحدث السابق وقت أقل من مدة زمنية معيّنة.

<div id="read_backoff_min_latency_ms">
  ## read\_backoff\_min\_latency\_ms
</div>

<SettingsInfoBlock type="مللي ثانية" default_value="1000" />

إعداد لتقليل عدد خيوط التنفيذ عند بطء عمليات القراءة. لا تُؤخذ في الاعتبار إلا عمليات القراءة التي استغرقت على الأقل هذا القدر من الوقت.

<div id="read_from_distributed_cache_if_exists_otherwise_bypass_cache">
  ## read\_from\_distributed\_cache\_if\_exists\_otherwise\_bypass\_cache
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.10"},{"label": "0"},{"label": "إعداد جديد"}]}]} />

لا يكون لهذا الإعداد أي تأثير إلا في ClickHouse Cloud. وهو مماثل لـ read\_from\_filesystem\_cache\_if\_exists\_otherwise\_bypass\_cache، ولكن لذاكرة التخزين المؤقت الموزعة.

<div id="read_from_filesystem_cache_if_exists_otherwise_bypass_cache">
  ## read\_from\_filesystem\_cache\_if\_exists\_otherwise\_bypass\_cache
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

يسمح باستخدام ذاكرة التخزين المؤقت لنظام الملفات في الوضع السلبي، أي الاستفادة من إدخالات ذاكرة التخزين المؤقت الموجودة، من دون إضافة إدخالات جديدة إليها. إذا ضبطت هذا الإعداد للاستعلامات الثقيلة غير المتكررة وتركته معطّلًا للاستعلامات القصيرة في الوقت الفعلي، فسيؤدي ذلك إلى تجنّب إجهاد ذاكرة التخزين المؤقت بسبب الاستعلامات الثقيلة جدًا وتحسين كفاءة النظام عمومًا.

<div id="read_from_page_cache_if_exists_otherwise_bypass_cache">
  ## read\_from\_page\_cache\_if\_exists\_otherwise\_bypass\_cache
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "0"},{"label": "أُضيفت ذاكرة تخزين مؤقت للصفحات في مساحة المستخدم"}]}]} />

استخدم ذاكرة تخزين مؤقت للصفحات في مساحة المستخدم في الوضع السلبي، على غرار read\_from\_filesystem\_cache\_if\_exists\_otherwise\_bypass\_cache.

<div id="read_in_order_two_level_merge_threshold">
  ## read\_in\_order\_two\_level\_merge\_threshold
</div>

<SettingsInfoBlock type="UInt64" default_value="100" />

الحد الأدنى لعدد الأجزاء التي يجب قراءتها لتشغيل خطوة الدمج الأولي أثناء القراءة متعددة الخيوط وفق ترتيب المفتاح الأساسي.

<div id="read_in_order_use_buffering">
  ## read\_in\_order\_use\_buffering
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.7"},{"label": "1"},{"label": "استخدام التخزين المؤقت قبل الدمج أثناء القراءة وفق ترتيب المفتاح الأساسي"}]}]} />

استخدم التخزين المؤقت قبل الدمج أثناء القراءة وفق ترتيب المفتاح الأساسي. يزيد ذلك من التوازي في تنفيذ الاستعلام

<div id="read_in_order_use_virtual_row">
  ## read\_in\_order\_use\_virtual\_row
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.11"},{"label": "0"},{"label": "استخدم صفًا افتراضيًا عند القراءة بترتيب المفتاح الأساسي أو وفق دالته الرتيبة. يفيد ذلك عند البحث عبر عدة أجزاء، إذ لا يتم الوصول إلا إلى الأجزاء ذات الصلة."}]}]} />

استخدم صفًا افتراضيًا عند القراءة بترتيب المفتاح الأساسي أو وفق دالته الرتيبة. يفيد ذلك عند البحث عبر عدة أجزاء، إذ لا يتم الوصول إلا إلى الأجزاء ذات الصلة.

<div id="read_in_order_use_virtual_row_per_block">
  ## read\_in\_order\_use\_virtual\_row\_per\_block
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "0"},{"label": "إخراج صف افتراضي بعد كل `block` أثناء القراءة بالترتيب، للسماح بإعادة تحديد أولوية `source` بوتيرة أعلى في `MergingSortedTransform`."}]}]} />

عند تمكينه مع `read_in_order_use_virtual_row`، يُخرِج صفًا افتراضيًا بعد كل `block` تتم قراءته (وليس فقط في بداية كل `part`).
يتيح ذلك لـ `MergingSortedTransform` إعادة تحديد أولوية `sources` بوتيرة أعلى، وهو ما يكون مفيدًا عندما تستبعد عوامل التصفية اللاحقة عددًا كبيرًا من `rows` وتكون البيانات موزعة بشكل غير متساوٍ عبر `parts`.
لاحظ أن هذا يعطّل تحسين `read_in_order_use_buffering` و`preliminary merge` (`read_in_order_two_level_merge_threshold`) أثناء القراءة.

<div id="read_overflow_mode">
  ## read\_overflow\_mode
</div>

<SettingsInfoBlock type="OverflowMode" default_value="throw" />

ما يجب فعله عند تجاوز الحد.

<div id="read_overflow_mode_leaf">
  ## read\_overflow\_mode\_leaf
</div>

<SettingsInfoBlock type="OverflowMode" default_value="throw" />

يحدّد ما يحدث عندما يتجاوز حجم البيانات المقروءة أحد الحدود الخاصة بالعُقد الطرفية.

الخيارات الممكنة:

* `throw`: إثارة استثناء (الافتراضي).
* `break`: إيقاف تنفيذ الاستعلام وإرجاع نتيجة جزئية.

<div id="read_priority">
  ## read\_priority
</div>

<SettingsInfoBlock type="Int64" default_value="0" />

أولوية قراءة البيانات من نظام الملفات المحلي أو نظام الملفات البعيد. لا يُدعم هذا إلا مع الأسلوب 'pread\_threadpool' لنظام الملفات المحلي، ومع الأسلوب `threadpool` لنظام الملفات البعيد.

<div id="read_through_distributed_cache">
  ## read\_through\_distributed\_cache
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.10"},{"label": "0"},{"label": "إعداد لـ ClickHouse Cloud"}]}]} />

لا يكون له تأثير إلا في ClickHouse Cloud. يتيح القراءة من ذاكرة التخزين المؤقت الموزعة

<div id="readonly">
  ## readonly
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

0 - لا توجد قيود على وضع القراءة فقط. 1 - يُسمح فقط بطلبات القراءة، وكذلك بتغيير الإعدادات المسموح بها صراحةً. 2 - يُسمح فقط بطلبات القراءة، وكذلك بتغيير الإعدادات، باستثناء الإعداد 'readonly'.

<div id="receive_data_timeout_ms">
  ## receive\_data\_timeout\_ms
</div>

<SettingsInfoBlock type="ميلي ثانية" default_value="2000" />

مهلة الاتصال لتلقّي أول حزمة بيانات أو حزمة تُظهر تقدّمًا من النسخة المتماثلة

<div id="receive_timeout">
  ## receive\_timeout
</div>

<SettingsInfoBlock type="ثوانٍ" default_value="300" />

مهلة استقبال البيانات من الشبكة، بالثواني. إذا لم يتم استلام أي بايتات خلال هذه المدة، فسيتم طرح استثناء. إذا عيّنت هذا الإعداد في العميل، فسيتم أيضًا تعيين `send_timeout` للمقبس عند طرف الاتصال المقابل على الخادم.

<div id="recursive_cte_max_steps_in_type_inference">
  ## recursive\_cte\_max\_steps\_in\_type\_inference
</div>

<SettingsInfoBlock type="UInt64" default_value="10" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "10"},{"label": "الحد الأقصى لعدد التكرارات لاستنتاج أنواع الأعمدة في CTEs التكرارية عبر التطبيق التكراري لـ getLeastSupertype"}]}]} />

الحد الأقصى لعدد التكرارات لاستنتاج أنواع الأعمدة في CTEs التكرارية. تُحدَّد أنواع الأعمدة من خلال التطبيق التكراري للدالة `getLeastSupertype` على الجزأين غير التكراري والتكراري من UNION ALL حتى الوصول إلى حالة الاستقرار. اضبطه على 0 لتعطيل توسيع النوع واستخدام أنواع الجزء غير التكراري فقط.

<div id="regexp_dict_allow_hyperscan">
  ## regexp\_dict\_allow\_hyperscan
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

يسمح لقاموس `regexp_tree` باستخدام مكتبة Hyperscan.

<div id="regexp_dict_flag_case_insensitive">
  ## regexp\_dict\_flag\_case\_insensitive
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

استخدم مطابقة غير حساسة لحالة الأحرف لقاموس regexp\_tree. ويمكن تجاوز هذا الإعداد في التعبيرات الفردية باستخدام (?i) و (?-i).

<div id="regexp_dict_flag_dotall">
  ## regexp\_dict\_flag\_dotall
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

يسمح للرمز '.' بمطابقة أحرف السطر الجديد في قاموس regexp\_tree.

<div id="regexp_max_matches_per_row">
  ## regexp\_max\_matches\_per\_row
</div>

<SettingsInfoBlock type="UInt64" default_value="1000" />

يحدّد الحد الأقصى لعدد التطابقات لتعبير نمطي واحد في كل صف. استخدمه للحماية من الاستهلاك المفرط للذاكرة عند استخدام تعبير نمطي جشع في الدالة [extractAllGroupsHorizontal](/ar/reference/functions/regular-functions/string-search-functions#extractAllGroupsHorizontal).

القيم الممكنة:

* عدد صحيح موجب.

<div id="reject_expensive_hyperscan_regexps">
  ## reject\_expensive\_hyperscan\_regexps
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

يرفض الأنماط التي يُرجّح أن يكون تقييمها مكلفًا باستخدام hyperscan (بسبب انفجار حالات NFA)

<div id="remerge_sort_lowered_memory_bytes_ratio">
  ## remerge\_sort\_lowered\_memory\_bytes\_ratio
</div>

<SettingsInfoBlock type="Float" default_value="2" />

إذا لم ينخفض استهلاك الذاكرة بعد إعادة الدمج بهذه النسبة، فسيتم تعطيل إعادة الدمج.

<div id="remote_filesystem_read_method">
  ## remote\_filesystem\_read\_method
</div>

<SettingsInfoBlock type="String" default_value="threadpool" />

طريقة قراءة البيانات من نظام الملفات البعيد، وتكون إحدى القيم التالية: read، threadpool.

<div id="remote_filesystem_read_prefetch">
  ## remote\_filesystem\_read\_prefetch
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

يُستخدم الجلب المسبق عند قراءة البيانات من نظام الملفات البعيد.

<div id="remote_fs_read_backoff_max_tries">
  ## remote\_fs\_read\_backoff\_max\_tries
</div>

<SettingsInfoBlock type="UInt64" default_value="5" />

الحد الأقصى لعدد محاولات القراءة عند استخدام آلية التراجع التدريجي

<div id="remote_fs_read_max_backoff_ms">
  ## remote\_fs\_read\_max\_backoff\_ms
</div>

<SettingsInfoBlock type="UInt64" default_value="10000" />

الحد الأقصى لمدة الانتظار عند محاولة قراءة البيانات من القرص البعيد

<div id="remote_read_min_bytes_for_seek">
  ## remote\_read\_min\_bytes\_for\_seek
</div>

<SettingsInfoBlock type="UInt64" default_value="4194304" />

الحد الأدنى من البايتات المطلوبة للقراءة عن بُعد (URL، S3) لإجراء seek بدلًا من القراءة مع ignore.

<div id="rename_files_after_processing">
  ## rename\_files\_after\_processing
</div>

* **النوع:** String

* **القيمة الافتراضية:** سلسلة فارغة

يتيح هذا الإعداد تحديد نمط إعادة تسمية الملفات التي تعالجها دالة الجدول `file`. عند ضبط هذا الخيار، ستُعاد تسمية جميع الملفات التي تقرؤها دالة الجدول `file` وفقًا للنمط المحدد باستخدام العناصر النائبة، وذلك فقط إذا تمت معالجة الملفات بنجاح.

<div id="placeholders">
  ### العناصر النائبة
</div>

* `%a` — اسم الملف الأصلي كاملًا (مثل: "sample.csv").
* `%f` — اسم الملف الأصلي من دون امتداد (مثل: "sample").
* `%e` — امتداد الملف الأصلي متضمّنًا النقطة (مثل: ".csv").
* `%t` — الطابع الزمني (بالميكروثانية).
* `%%` — علامة النسبة المئوية ("%").

<div id="example">
  ### مثال
</div>

* الخيار: `--rename_files_after_processing="processed_%f_%t%e"`

* الاستعلام: `SELECT * FROM file('sample.csv')`

إذا تمت قراءة `sample.csv` بنجاح، فستُعاد تسمية الملف إلى `processed_sample_1683473210851438.csv`

<div id="replace_running_query">
  ## replace\_running\_query
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

عند استخدام واجهة HTTP، يمكن تمرير المعلَمة 'query\_id'. ويمكن أن تكون أي سلسلة نصية تُستخدم كمُعرّف للاستعلام.
إذا كان هناك بالفعل استعلام للمستخدم نفسه وله 'query\_id' نفسه في هذا الوقت، فإن السلوك يعتمد على المعلَمة 'replace\_running\_query'.

`0` (الافتراضي) – إثارة استثناء (عدم السماح بتشغيل الاستعلام إذا كان هناك بالفعل استعلام له 'query\_id' نفسه قيد التشغيل).

`1` – إلغاء الاستعلام القديم وبدء تشغيل الاستعلام الجديد.

اضبط هذه المعلَمة على 1 لتنفيذ اقتراحات شروط التقسيم. بعد إدخال الحرف التالي، إذا لم يكن الاستعلام القديم قد انتهى بعد، فيجب إلغاؤه.

<div id="replace_running_query_max_wait_ms">
  ## replace\_running\_query\_max\_wait\_ms
</div>

<SettingsInfoBlock type="مللي ثانية" default_value="5000" />

مدة الانتظار اللازمة لانتهاء الاستعلام الجاري الذي يحمل `query_id` نفسه، عندما يكون الإعداد [replace\_running\_query](#replace_running_query) مفعّلًا.

القيم الممكنة:

* عدد صحيح موجب.
* 0 — طرح استثناء يمنع تشغيل استعلام جديد إذا كان الخادم ينفّذ بالفعل استعلامًا يحمل `query_id` نفسه.

<div id="replication_wait_for_inactive_replica_timeout">
  ## replication\_wait\_for\_inactive\_replica\_timeout
</div>

<SettingsInfoBlock type="Int64" default_value="120" />

يحدّد المدة (بالثواني) التي يجب انتظارها حتى تنفّذ النسخ المتماثلة غير النشطة استعلامات [`ALTER`](/ar/reference/statements/alter/index) أو [`OPTIMIZE`](/ar/reference/statements/optimize) أو [`TRUNCATE`](/ar/reference/statements/truncate).

القيم الممكنة:

* `0` — لا تنتظر.
* عدد صحيح سالب — انتظر لمدة غير محدودة.
* عدد صحيح موجب — عدد الثواني التي يجب انتظارها.

<div id="restore_replace_external_dictionary_source_to_null">
  ## restore\_replace\_external\_dictionary\_source\_to\_null
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.10"},{"label": "0"},{"label": "إعداد جديد."}]}]} />

استبدال مصادر القواميس الخارجية بالقيمة Null عند الاستعادة. مفيد لأغراض الاختبار

<div id="restore_replace_external_engines_to_null">
  ## restore\_replace\_external\_engines\_to\_null
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.8"},{"label": "0"},{"label": "إعداد جديد."}]}]} />

لأغراض الاختبار. يستبدل جميع المحركات الخارجية بـ Null حتى لا يُنشئ اتصالات خارجية.

<div id="restore_replace_external_table_functions_to_null">
  ## restore\_replace\_external\_table\_functions\_to\_null
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.8"},{"label": "0"},{"label": "إعداد جديد."}]}]} />

لأغراض الاختبار. يستبدل جميع دوال الجداول الخارجية بـ Null لتجنّب إنشاء اتصالات خارجية.

<div id="restore_replicated_merge_tree_to_shared_merge_tree">
  ## restore\_replicated\_merge\_tree\_to\_shared\_merge\_tree
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.2"},{"label": "0"},{"label": "إعداد جديد."}]}]} />

يُستبدل محرك الجدول من Replicated*MergeTree -> Shared*MergeTree أثناء RESTORE.

القيمة الافتراضية في Cloud: `1`.

<div id="result_overflow_mode">
  ## result\_overflow\_mode
</div>

<SettingsInfoBlock type="OverflowMode" default_value="throw" />

القيمة الافتراضية في Cloud: `throw`

يحدّد ما يجب فعله إذا تجاوز حجم النتيجة أحد الحدود.

القيم الممكنة:

* `throw`: رفع استثناء (افتراضي).
* `break`: إيقاف تنفيذ الاستعلام وإرجاع نتيجة جزئية، كما لو أن
  البيانات المصدر قد نفدت.

يشبه استخدام 'break' استخدام LIMIT. لا يوقف `Break` التنفيذ إلا على مستوى
الكتلة. وهذا يعني أن عدد الصفوف المُعادة يكون أكبر من
[`max_result_rows`](/ar/reference/settings/session-settings#max_result_rows)، ويكون مضاعفًا لـ [`max_block_size`](/ar/reference/settings/session-settings#max_block_size)
ويعتمد على [`max_threads`](/ar/reference/settings/session-settings#max_threads).

**مثال**

```sql title="Query" theme={null}
SET max_threads = 3, max_block_size = 3333;
SET max_result_rows = 3334, result_overflow_mode = 'break';

SELECT *
FROM numbers_mt(100000)
FORMAT Null;
```

```text title="Result" theme={null}
6666 rows in set. ...
```

<div id="rewrite_count_distinct_if_with_count_distinct_implementation">
  ## rewrite\_count\_distinct\_if\_with\_count\_distinct\_implementation
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "23.8"},{"label": "1"},{"label": "إعادة كتابة countDistinctIf باستخدام إعداد count_distinct_implementation"}]}]} />

يتيح لك إعادة كتابة `countDistcintIf` باستخدام إعداد [count\_distinct\_implementation](#count_distinct_implementation).

القيم الممكنة:

* true — مسموح.
* false — غير مسموح.

<div id="rewrite_in_to_join">
  ## rewrite\_in\_to\_join
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.10"},{"label": "0"},{"label": "إعداد تجريبي جديد"}]}]} />

أعد كتابة تعبيرات مثل 'x IN subquery' بصيغة JOIN. قد يكون ذلك مفيدًا لتحسين الاستعلام بأكمله باستخدام إعادة ترتيب عمليات JOIN.

<div id="rows_before_aggregation">
  ## rows\_before\_aggregation
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.8"},{"label": "0"},{"label": "يوفّر قيمة دقيقة لإحصائية rows_before_aggregation، التي تمثّل عدد الصفوف المقروءة قبل التجميع"}]}]} />

عند تفعيله، سيوفّر ClickHouse قيمة دقيقة لإحصائية rows\_before\_aggregation، التي تمثّل عدد الصفوف المقروءة قبل التجمي

<div id="s3_allow_multipart_copy">
  ## s3\_allow\_multipart\_copy
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.2"},{"label": "1"},{"label": "إعداد جديد."}]}]} />

تمكين النسخ متعدد الأجزاء في S3.

<div id="s3_allow_parallel_part_upload">
  ## s3\_allow\_parallel\_part\_upload
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

استخدم عدة خيوط لتنفيذ الرفع متعدد الأجزاء إلى S3. قد يؤدي ذلك إلى زيادة طفيفة في استهلاك الذاكرة

<div id="s3_check_objects_after_upload">
  ## s3\_check\_objects\_after\_upload
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

تحقّق من كل كائن تم رفعه إلى S3 باستخدام طلب `head` للتأكد من نجاح عملية الرفع

<div id="s3_connect_timeout_ms">
  ## s3\_connect\_timeout\_ms
</div>

<SettingsInfoBlock type="UInt64" default_value="1000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "1000"},{"label": "إضافة إعداد مخصص جديد لمهلة اتصال S3"}]}]} />

مهلة الاتصال بالمضيف لأقراص S3.

<div id="s3_create_new_file_on_insert">
  ## s3\_create\_new\_file\_on\_insert
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

يؤدي إلى تمكين أو تعطيل إنشاء ملف جديد مع كل عملية insert في جداول محرك S3. عند التمكين، سيُنشأ كائن S3 جديد بمفتاح جديد مع كل عملية insert، وفق نمط مشابه لما يلي:

الأصل: `data.Parquet.gz` -> `data.1.Parquet.gz` -> `data.2.Parquet.gz`، إلخ.

القيم الممكنة:

* 0 — ينشئ استعلام `INSERT` ملفًا جديدًا، أو يفشل إذا كان الملف موجودًا ولم يتم تعيين `s3_truncate_on_insert`.
* 1 — ينشئ استعلام `INSERT` ملفًا جديدًا مع كل عملية insert باستخدام لاحقة (بدءًا من الملف الثاني) إذا لم يتم تعيين `s3_truncate_on_insert`.

اطّلع على مزيد من التفاصيل [هنا](/ar/integrations/connectors/data-ingestion/AWS/integrating-s3-with-clickhouse#inserting-data).

<div id="s3_disable_checksum">
  ## s3\_disable\_checksum
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

لا تحسب قيمة `checksum` عند إرسال ملف إلى S3. يسرّع ذلك عمليات الكتابة من خلال تجنّب تكرار المعالجة غير الضروري للملف. ويُعد هذا آمنًا في معظم الحالات، لأن ClickHouse يتحقق أصلًا من سلامة بيانات جداول MergeTree باستخدام checksums، وعند الوصول إلى S3 عبر HTTPS، توفّر طبقة TLS بالفعل سلامة البيانات أثناء نقلها عبر الشبكة. ومع ذلك، فإن استخدام checksums إضافية على S3 يوفّر طبقة حماية إضافية.

<div id="s3_ignore_file_doesnt_exist">
  ## s3\_ignore\_file\_doesnt\_exist
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.6"},{"label": "0"},{"label": "السماح بإرجاع 0 صفوف عندما لا تكون الملفات المطلوبة موجودة، بدلًا من إطلاق استثناء في محرك جدول S3"}]}]} />

تجاهل عدم وجود الملف عند قراءة مفاتيح معيّنة.

القيم الممكنة:

* 1 — يعيد `SELECT` نتيجة فارغة.
* 0 — يطلق `SELECT` استثناءً.

<div id="s3_list_object_keys_size">
  ## s3\_list\_object\_keys\_size
</div>

<SettingsInfoBlock type="UInt64" default_value="1000" />

الحد الأقصى لعدد الملفات التي يمكن أن يعيدها طلب ListObject في دفعة واحدة

<div id="s3_max_connections">
  ## s3\_max\_connections
</div>

<SettingsInfoBlock type="UInt64" default_value="1024" />

الحد الأقصى لعدد الاتصالات لكل خادم.

<div id="s3_max_get_burst">
  ## s3\_max\_get\_burst
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

الحد الأقصى لعدد الطلبات التي يمكن إصدارها بالتزامن قبل بلوغ حدّ الطلبات في الثانية. افتراضيًا، تكون القيمة (0) مساوية لـ `s3_max_get_rps`

<div id="s3_max_get_rps">
  ## s3\_max\_get\_rps
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

الحد الأقصى لعدد طلبات GET إلى S3 في الثانية قبل بدء throttling. تعني القيمة صفر عدم وجود حد.

<div id="s3_max_inflight_parts_for_one_file">
  ## s3\_max\_inflight\_parts\_for\_one\_file
</div>

<SettingsInfoBlock type="UInt64" default_value="20" />

الحد الأقصى لعدد الأجزاء التي يمكن تحميلها بالتوازي في طلب الرفع متعدد الأجزاء. تعني القيمة 0 عدم وجود حد.

<div id="s3_max_part_number">
  ## s3\_max\_part\_number
</div>

<SettingsInfoBlock type="UInt64" default_value="10000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.6"},{"label": "10000"},{"label": "الحد الأقصى لرقم جزء الرفع إلى S3"}]}]} />

الحد الأقصى لرقم جزء الرفع إلى S3.

<div id="s3_max_put_burst">
  ## s3\_max\_put\_burst
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

الحد الأقصى لعدد الطلبات التي يمكن إرسالها بالتزامن قبل الوصول إلى حد الطلبات في الثانية. تكون القيمة الافتراضية (0) مساوية لـ `s3_max_put_rps`

<div id="s3_max_put_rps">
  ## s3\_max\_put\_rps
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

الحد الأقصى لمعدل طلبات PUT إلى S3 في الثانية قبل تطبيق throttling. وتعني القيمة صفر عدم وجود حد.

<div id="s3_max_single_operation_copy_size">
  ## s3\_max\_single\_operation\_copy\_size
</div>

<SettingsInfoBlock type="UInt64" default_value="33554432" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.6"},{"label": "33554432"},{"label": "الحد الأقصى لحجم عملية نسخ واحدة في S3"}]}]} />

الحد الأقصى لحجم عملية نسخ واحدة في S3. لا يُستخدم هذا الإعداد إلا إذا كانت قيمة `s3_allow_multipart_copy` هي `true`.

<div id="s3_max_single_part_upload_size">
  ## s3\_max\_single\_part\_upload\_size
</div>

<SettingsInfoBlock type="UInt64" default_value="33554432" />

الحد الأقصى لحجم الكائن الذي يمكن رفعه إلى S3 باستخدام رفع أحادي الجزء.

<div id="s3_max_single_read_retries">
  ## s3\_max\_single\_read\_retries
</div>

<SettingsInfoBlock type="UInt64" default_value="4" />

الحد الأقصى لعدد مرات إعادة المحاولة عند تنفيذ قراءة واحدة من S3.

<div id="s3_max_unexpected_write_error_retries">
  ## s3\_max\_unexpected\_write\_error\_retries
</div>

<SettingsInfoBlock type="UInt64" default_value="4" />

الحد الأقصى لعدد مرات إعادة المحاولة عند حدوث أخطاء غير متوقعة أثناء الكتابة إلى S3.

<div id="s3_max_upload_part_size">
  ## s3\_max\_upload\_part\_size
</div>

<SettingsInfoBlock type="UInt64" default_value="5368709120" />

الحد الأقصى لحجم الجزء المراد تحميله أثناء الرفع متعدد الأجزاء إلى S3.

<div id="s3_min_upload_part_size">
  ## s3\_min\_upload\_part\_size
</div>

<SettingsInfoBlock type="UInt64" default_value="16777216" />

الحد الأدنى لحجم الجزء المطلوب رفعه أثناء الرفع متعدد الأجزاء إلى S3.

<div id="s3_path_filter_limit">
  ## s3\_path\_filter\_limit
</div>

<SettingsInfoBlock type="UInt64" default_value="1000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "1000"},{"label": "إعداد جديد"}]}]} />

الحد الأقصى لعدد قيم `_path` التي يمكن استخراجها من مرشحات الاستعلام لاستخدامها عند التكرار على الملفات
بدلًا من السرد باستخدام glob. وتعني القيمة 0 أنه معطّل.

<div id="s3_request_timeout_ms">
  ## s3\_request\_timeout\_ms
</div>

<SettingsInfoBlock type="UInt64" default_value="30000" />

مهلة الخمول لإرسال البيانات إلى S3 واستقبالها منه. تُعدّ العملية فاشلة إذا ظلّ استدعاء واحد للقراءة أو الكتابة عبر TCP محجوبًا طوال هذه المدة.

<div id="s3_skip_empty_files">
  ## s3\_skip\_empty\_files
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.11"},{"label": "1"},{"label": "نأمل أن يوفّر ذلك تجربة مستخدم أفضل"}]}]} />

يُمكّن أو يعطّل تخطي الملفات الفارغة في الجداول التي تستخدم المحرك [S3](/ar/reference/engines/table-engines/integrations/s3).

القيم الممكنة:

* 0 — يُطلق `SELECT` استثناءً إذا لم يكن الملف الفارغ متوافقًا مع التنسيق المطلوب.
* 1 — يعيد `SELECT` نتيجة فارغة للملف الفارغ.

<div id="s3_slow_all_threads_after_network_error">
  ## s3\_slow\_all\_threads\_after\_network\_error
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "1"},{"label": "إعداد جديد"}]}]} />

عند تعيينه إلى `true`، تُبطَّأ جميع خيوط التنفيذ التي تنفّذ طلبات S3 إلى نقطة نهاية النسخ الاحتياطي نفسها
بعد أن يواجه أي طلب S3 واحد خطأ شبكة قابلاً لإعادة المحاولة، مثل انتهاء مهلة المقبس.
وعند تعيينه إلى `false`، تتعامل كل خيط تنفيذ مع تأخير إعادة المحاولة لطلبات S3 بشكل مستقل عن الخيوط الأخرى.

<div id="s3_strict_upload_part_size">
  ## s3\_strict\_upload\_part\_size
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

الحجم الدقيق للجزء المطلوب رفعه أثناء الرفع متعدد الأجزاء إلى S3 (بعض التطبيقات لا تدعم الأجزاء ذات الأحجام المتغيرة).

<div id="s3_throw_on_zero_files_match">
  ## s3\_throw\_on\_zero\_files\_match
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

إظهار خطأ عند تعذّر طلب ListObjects على مطابقة أي ملفات

<div id="s3_truncate_on_insert">
  ## s3\_truncate\_on\_insert
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

يُمكّن أو يعطّل إجراء truncate قبل عمليات الإدراج في جداول محرك S3. وإذا كان معطّلًا، فسيُطرَح استثناء عند محاولة الإدراج إذا كان كائن في S3 موجودًا بالفعل.

القيم الممكنة:

* 0 — ينشئ استعلام `INSERT` ملفًا جديدًا، أو يفشل إذا كان الملف موجودًا ولم يتم تعيين s3\_create\_new\_file\_on\_insert.
* 1 — يستبدل استعلام `INSERT` المحتوى الحالي للملف بالبيانات الجديدة.

اطّلع على مزيد من التفاصيل [هنا](/ar/integrations/connectors/data-ingestion/AWS/integrating-s3-with-clickhouse#inserting-data).

<div id="s3_upload_part_size_multiply_factor">
  ## s3\_upload\_part\_size\_multiply\_factor
</div>

<SettingsInfoBlock type="UInt64" default_value="2" />

اضرب `s3_min_upload_part_size` في هذا العامل في كل مرة يتم فيها تحميل `s3_multiply_parts_count_threshold` جزءًا من عملية كتابة واحدة إلى S3.

<div id="s3_upload_part_size_multiply_parts_count_threshold">
  ## s3\_upload\_part\_size\_multiply\_parts\_count\_threshold
</div>

<SettingsInfoBlock type="UInt64" default_value="500" />

في كل مرة يُرفَع فيها هذا العدد من الأجزاء إلى S3، تُضاعَف قيمة `s3_min_upload_part_size` بمعامل `s3_upload_part_size_multiply_factor`.

<div id="s3_uri_style">
  ## s3\_uri\_style
</div>

<SettingsInfoBlock type="S3UriStyle" default_value="auto" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "auto"},{"label": "إعداد جديد."}]}]} />

يفرض نمط نقطة نهاية S3. القيم الممكنة: auto، virtual\_hosted، path.

<div id="s3_use_adaptive_timeouts">
  ## s3\_use\_adaptive\_timeouts
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

عند ضبطه على `true`، تُجرى المحاولتان الأوليان لجميع طلبات S3 أولًا بمهلات إرسال واستقبال منخفضة.
وعند ضبطه على `false`، تُجرى جميع المحاولات بمهلات متطابقة.

<div id="s3_validate_request_settings">
  ## s3\_validate\_request\_settings
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.6"},{"label": "1"},{"label": "يسمح بتعطيل التحقق من صحة إعدادات طلبات S3"}]}]} />

يُمكّن التحقق من صحة إعدادات طلبات S3.
القيم الممكنة:

* 1 — التحقق من صحة الإعدادات.
* 0 — عدم التحقق من صحة الإعدادات.

<div id="s3queue_default_zookeeper_path">
  ## s3queue\_default\_zookeeper\_path
</div>

<SettingsInfoBlock type="String" default_value="/clickhouse/s3queue/" />

بادئة مسار ZooKeeper الافتراضية لمحرك S3Queue

<div id="s3queue_enable_logging_to_s3queue_log">
  ## s3queue\_enable\_logging\_to\_s3queue\_log
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

يتيح الكتابة في system.s3queue\_log. ويمكن تجاوز هذه القيمة على مستوى كل جدول باستخدام إعدادات الجدول

<div id="s3queue_keeper_fault_injection_probability">
  ## s3queue\_keeper\_fault\_injection\_probability
</div>

<SettingsInfoBlock type="Float" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.10"},{"label": "0"},{"label": "إعداد جديد."}]}]} />

احتمال حقن الأعطال في Keeper الخاص بـ S3Queue.

<div id="s3queue_migrate_old_metadata_to_buckets">
  ## s3queue\_migrate\_old\_metadata\_to\_buckets
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "0"},{"label": "إعداد جديد."}]}]} />

ترحيل بنية البيانات الوصفية القديمة لجدول S3Queue إلى بنية جديدة

<div id="schema_inference_cache_require_modification_time_for_url">
  ## schema\_inference\_cache\_require\_modification\_time\_for\_url
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

استخدم المخطط من ذاكرة التخزين المؤقت لعناوين URL مع التحقق من وقت آخر تعديل (لعناوين URL التي تتضمن ترويسة Last-Modified)

<div id="schema_inference_use_cache_for_azure">
  ## schema\_inference\_use\_cache\_for\_azure
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

استخدم ذاكرة التخزين المؤقت عند استنتاج المخطط أثناء استخدام دالة الجدول Azure

<div id="schema_inference_use_cache_for_file">
  ## schema\_inference\_use\_cache\_for\_file
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

استخدم ذاكرة التخزين المؤقت في استنتاج المخطط عند استخدام دالة الجدول file

<div id="schema_inference_use_cache_for_hdfs">
  ## schema\_inference\_use\_cache\_for\_hdfs
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

استخدم ذاكرة التخزين المؤقت عند استنتاج المخطط أثناء استخدام دالة table functio الخاصة بـ hdfs

<div id="schema_inference_use_cache_for_s3">
  ## schema\_inference\_use\_cache\_for\_s3
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

استخدم ذاكرة التخزين المؤقت عند استنتاج المخطط أثناء استخدام دالة الجدول S3

<div id="schema_inference_use_cache_for_url">
  ## schema\_inference\_use\_cache\_for\_url
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

استخدم ذاكرة التخزين المؤقت عند استنتاج المخطط أثناء استخدام دالة الجدول URL

<div id="secondary_indices_enable_bulk_filtering">
  ## secondary\_indices\_enable\_bulk\_filtering
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "1"},{"label": "خوارزمية جديدة للتصفية باستخدام فهارس تخطي البيانات"}]}]} />

تمكين خوارزمية التصفية المجمّعة للفهارس. يُتوقع أن تكون أفضل دائمًا، لكن هذا الإعداد متاح لأغراض التوافق والتحكم.

<div id="select_sequential_consistency">
  ## select\_sequential\_consistency
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

<Note>
  يختلف سلوك هذا الإعداد بين SharedMergeTree وReplicatedMergeTree. راجع [SharedMergeTree consistency](/ar/products/cloud/features/infrastructure/shared-merge-tree#consistency) لمزيد من المعلومات حول سلوك `select_sequential_consistency` في SharedMergeTree.
</Note>

يُمكّن هذا الإعداد الاتساق التسلسلي لاستعلامات `SELECT` أو يعطّله. ويتطلب تعطيل `insert_quorum_parallel` (وهو مُمكَّن افتراضيًا).

القيم الممكنة:

* 0 — معطّل.
* 1 — مُمكَّن.

الاستخدام

عند تمكين الاتساق التسلسلي، لا يسمح ClickHouse للعميل بتنفيذ استعلام `SELECT` إلا على النسخ المتماثلة التي تحتوي على بيانات جميع استعلامات `INSERT` السابقة المنفَّذة باستخدام `insert_quorum`. وإذا وجّه العميل الطلب إلى نسخة متماثلة جزئية، فسيُرجع ClickHouse استثناءً. ولن يتضمن استعلام `SELECT` البيانات التي لم تُكتب بعد إلى النصاب المطلوب من النسخ المتماثلة.

عندما يكون `insert_quorum_parallel` مُمكَّنًا (وهو الوضع الافتراضي)، فإن `select_sequential_consistency` لا يعمل. ويرجع ذلك إلى أن استعلامات `INSERT` المتوازية قد تُكتب إلى مجموعات مختلفة من النسخ المتماثلة الخاصة بالنصاب، لذا لا يوجد ما يضمن أن نسخة متماثلة واحدة قد استقبلت جميع عمليات الكتابة.

انظر أيضًا:

* [insert\_quorum](#insert_quorum)
* [insert\_quorum\_timeout](#insert_quorum_timeout)
* [insert\_quorum\_parallel](#insert_quorum_parallel)

<div id="send_logs_level">
  ## send\_logs\_level
</div>

<SettingsInfoBlock type="LogsLevel" default_value="fatal" />

يرسل السجلات النصية الخاصة بالخادم إلى العميل عند الحد الأدنى المحدد من المستوى. القيم الصالحة: 'trace'، 'debug'، 'information'، 'warning'، 'error'، 'fatal'، 'none'

<div id="send_logs_source_regexp">
  ## send\_logs\_source\_regexp
</div>

إرسال سجلات الخادم النصية باستخدام regexp محدد لمطابقة اسم مصدر السجل. ويعني تركه فارغًا مطابقة جميع المصادر.

<div id="send_profile_events">
  ## send\_profile\_events
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.11"},{"label": "1"},{"label": "إعداد جديد. يحدد ما إذا كان سيتم إرسال أحداث Profile إلى العملاء."}]}]} />

يُفعِّل أو يعطِّل إرسال حزم [ProfileEvents](/ar/resources/develop-contribute/native-protocol/server#profile-events) إلى العميل.

يمكن تعطيل هذا لتقليل حركة مرور الشبكة للعملاء الذين لا يحتاجون إلى أحداث Profile.

القيم الممكنة:

* 0 — معطّل.
* 1 — مفعّل.

<div id="send_progress_in_http_headers">
  ## send\_progress\_in\_http\_headers
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

يُمكّن أو يعطّل رؤوس HTTP للاستجابة `X-ClickHouse-Progress` في ردود `clickhouse-server`.

لمزيد من المعلومات، اقرأ [وصف واجهة HTTP](/ar/concepts/features/interfaces/http).

القيم الممكنة:

* 0 — معطّل.
* 1 — مفعّل.

<div id="send_table_structure_on_insert_with_inline_data">
  ## send\_table\_structure\_on\_insert\_with\_inline\_data
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "1"},{"label": "إعداد جديد للتحكم في ما إذا كان الخادم يرسل بنية الجدول لاستعلامات INSERT التي تتضمن بيانات مضمنة."}]}]} />

إذا كان هذا الإعداد معطّلًا وكان استعلام INSERT يتضمن بيانات مضمنة، فلن يرسل الخادم بنية الجدول والقيم الافتراضية للأعمدة إلى العميل عبر البروتوكول الأصلي. وبدلًا من ذلك، سيحلّل الخادم البيانات المضمنة بنفسه. ويمكن أن يؤدي ذلك إلى تحسين الأداء عند تنفيذ العديد من عمليات الإدراج الصغيرة عبر البروتوكول الأصلي.

<div id="send_timeout">
  ## send\_timeout
</div>

<SettingsInfoBlock type="ثوانٍ" default_value="300" />

مهلة إرسال البيانات إلى الشبكة، بالثواني. إذا احتاج العميل إلى إرسال بعض البيانات لكنه لم يتمكن من إرسال أي بايت خلال هذه المدة، فسيتم إطلاق استثناء. إذا قمت بتعيين هذا الإعداد على العميل، فسيُضبط أيضًا `receive_timeout` الخاص بـ `socket` على الطرف المقابل من الاتصال على الخادم.

<div id="serialize_query_plan">
  ## serialize\_query\_plan
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.4"},{"label": "0"},{"label": "NewSetting"}]}]} />

إجراء تسلسل لخطة الاستعلام للمعالجة الموزعة

<div id="serialize_string_in_memory_with_zero_byte">
  ## serialize\_string\_in\_memory\_with\_zero\_byte
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "1"},{"label": "إعداد جديد"}]}, {"id": "row-2","items": [{"label": "25.12"},{"label": "1"},{"label": "إعداد جديد"}]}]} />

سلسِل قيم String أثناء التجميع مع إضافة بايت صفري في النهاية. فعّل هذا الخيار للحفاظ على التوافق عند الاستعلام عن عنقود بإصدارات غير متوافقة.

<div id="session_timezone">
  ## session\_timezone
</div>

يحدّد المنطقة الزمنية الضمنية للجلسة الحالية أو للاستعلام الحالي.
المنطقة الزمنية الضمنية هي المنطقة الزمنية التي تُطبَّق على القيم من النوع DateTime/DateTime64 التي لا تكون لها منطقة زمنية محددة صراحةً.
لهذا الإعداد أولوية على المنطقة الزمنية الضمنية المُعدّة عمومًا (على مستوى الخادم).
تعني القيمة '' (سلسلة فارغة) أن المنطقة الزمنية الضمنية للجلسة الحالية أو للاستعلام الحالي تساوي [المنطقة الزمنية للخادم](/ar/reference/settings/server-settings/settings#timezone).

يمكنك استخدام الدالتين `timeZone()` و`serverTimeZone()` للحصول على المنطقة الزمنية للجلسة والمنطقة الزمنية للخادم.

القيم الممكنة:

* أي اسم منطقة زمنية من `system.time_zones`، مثل `Europe/Berlin` أو `UTC` أو `Zulu`

أمثلة:

```sql theme={null}
SELECT timeZone(), serverTimeZone() FORMAT CSV

"Europe/Berlin","Europe/Berlin"
```

```sql theme={null}
SELECT timeZone(), serverTimeZone() SETTINGS session_timezone = 'Asia/Novosibirsk' FORMAT CSV

"Asia/Novosibirsk","Europe/Berlin"
```

عيّن المنطقة الزمنية للجلسة 'America/Denver' لقيمة DateTime الداخلية التي لم تُحدَّد لها منطقة زمنية صراحةً:

```sql theme={null}
SELECT toDateTime64(toDateTime64('1999-12-12 23:23:23.123', 3), 3, 'Europe/Zurich') SETTINGS session_timezone = 'America/Denver' FORMAT TSV

1999-12-13 07:23:23.123
```

<Warning>
  لا تراعي جميع الدوال التي تُحلِّل DateTime/DateTime64 القيمة `session_timezone`. وقد يؤدي ذلك إلى أخطاء دقيقة يصعب ملاحظتها.
  راجع المثال التالي والشرح المصاحب له.
</Warning>

```sql theme={null}
CREATE TABLE test_tz (`d` DateTime('UTC')) ENGINE = Memory AS SELECT toDateTime('2000-01-01 00:00:00', 'UTC');

SELECT *, timeZone() FROM test_tz WHERE d = toDateTime('2000-01-01 00:00:00') SETTINGS session_timezone = 'Asia/Novosibirsk'
0 rows in set.

SELECT *, timeZone() FROM test_tz WHERE d = '2000-01-01 00:00:00' SETTINGS session_timezone = 'Asia/Novosibirsk'
┌───────────────────d─┬─timeZone()───────┐
│ 2000-01-01 00:00:00 │ Asia/Novosibirsk │
└─────────────────────┴──────────────────┘
```

يحدث هذا بسبب اختلاف مسارات التحليل:

* إن `toDateTime()`، عند استخدامها في استعلام `SELECT` الأول من دون تحديد `time zone` صراحةً، تراعي الإعداد `session_timezone` والمنطقة الزمنية العامة.
* في الاستعلام الثاني، يُحلَّل DateTime من String، ويرث النوع والمنطقة الزمنية من العمود الموجود `d`. لذلك، لا يُعتدّ بالإعداد `session_timezone` ولا بالمنطقة الزمنية العامة.

**انظر أيضًا**

* [timezone](/ar/reference/settings/server-settings/settings#timezone)

<div id="set_overflow_mode">
  ## set\_overflow\_mode
</div>

<SettingsInfoBlock type="OverflowMode" default_value="throw" />

يحدد ما الذي يحدث عندما تتجاوز كمية البيانات أحد الحدود.

القيم الممكنة:

* `throw`: طرح استثناء (الافتراضي).
* `break`: إيقاف تنفيذ الاستعلام وإرجاع نتيجة جزئية، كما لو أن
  بيانات المصدر قد نفدت.

<div id="shared_merge_tree_sequential_consistency_initial_parts_update_backoff_ms">
  ## shared\_merge\_tree\_sequential\_consistency\_initial\_parts\_update\_backoff\_ms
</div>

<SettingsInfoBlock type="UInt64" default_value="50" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "50"},{"label": "إعداد جديد للحد من أخطاء UNFINISHED المتقطعة في الاستعلامات التي تستخدم الاتساق التسلسلي مع SharedMergeTree."}]}]} />

فترة التراجع الأولية، بالمللي ثانية، لتحديث الأجزاء عند استخدام `select_sequential_consistency` مع `SharedMergeTree`. متاح فقط في ClickHouse Cloud.

<div id="shared_merge_tree_sequential_consistency_max_parts_update_backoff_ms">
  ## shared\_merge\_tree\_sequential\_consistency\_max\_parts\_update\_backoff\_ms
</div>

<SettingsInfoBlock type="UInt64" default_value="1000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "1000"},{"label": "إعداد جديد لتقليل أخطاء UNFINISHED المتقطعة في الاستعلامات التي تستخدم الاتساق التسلسلي مع SharedMergeTree."}]}]} />

الحد الأقصى لفترة التراجع، بالمللي ثانية، لتحديث الأجزاء عند استخدام `select_sequential_consistency` مع `SharedMergeTree`. هذا الإعداد متاح فقط في ClickHouse Cloud.

<div id="shared_merge_tree_sequential_consistency_parts_update_max_retries">
  ## shared\_merge\_tree\_sequential\_consistency\_parts\_update\_max\_retries
</div>

<SettingsInfoBlock type="UInt64" default_value="10" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "10"},{"label": "إعداد جديد للحد من أخطاء UNFINISHED المتقطعة في الاستعلامات التي تستخدم الاتساق التسلسلي مع SharedMergeTree."}]}]} />

الحد الأقصى لعدد مرات إعادة المحاولة لتحديث الأجزاء عند استخدام `select_sequential_consistency` مع `SharedMergeTree`. متاح فقط في ClickHouse Cloud.

<div id="shared_merge_tree_sync_parts_on_partition_operations">
  ## shared\_merge\_tree\_sync\_parts\_on\_partition\_operations
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.12"},{"label": "1"},{"label": "إعداد جديد. تتم مزامنة أجزاء البيانات دائمًا بشكل افتراضي"}]}]} />

تتم مزامنة مجموعة أجزاء البيانات تلقائيًا بعد عمليات partition من MOVE|REPLACE|ATTACH في جداول SMT. Cloud فقط

<div id="short_circuit_function_evaluation">
  ## short\_circuit\_function\_evaluation
</div>

<SettingsInfoBlock type="ShortCircuitFunctionEvaluation" default_value="enable" />

يسمح بحساب الدوال [if](/ar/reference/functions/regular-functions/conditional-functions#if) و[multiIf](/ar/reference/functions/regular-functions/conditional-functions#multiIf) و[and](/ar/reference/functions/regular-functions/logical-functions#and) و[or](/ar/reference/functions/regular-functions/logical-functions#or) وفقًا لآلية [التقييم المختصر](https://en.wikipedia.org/wiki/Short-circuit_evaluation). يساعد ذلك على تحسين تنفيذ التعبيرات المعقدة في هذه الدوال ومنع الاستثناءات المحتملة (مثل القسمة على الصفر عندما لا يكون ذلك متوقعًا).

القيم الممكنة:

* `enable` — يفعّل التقييم المختصر للدوال المناسبة لذلك (التي قد تطرح استثناءً أو تكون مكلفة حسابيًا).
* `force_enable` — يفعّل التقييم المختصر لجميع الدوال.
* `disable` — يعطّل التقييم المختصر للدوال.

<div id="short_circuit_function_evaluation_for_nulls">
  ## short\_circuit\_function\_evaluation\_for\_nulls
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "1"},{"label": "السماح بتنفيذ الدوال التي تحتوي وسيطاتها على النوع Nullable فقط على الصفوف التي تكون فيها جميع الوسيطات ذات قيم غير NULL"}]}]} />

يعمل هذا الإعداد على تحسين تقييم الدوال التي تُرجع NULL إذا كانت أي وسيطة NULL. وعندما تتجاوز النسبة المئوية لقيم NULL في وسيطات الدالة العتبة `short_circuit_function_evaluation_for_nulls_threshold`، يتجاوز النظام تقييم الدالة على أساس صف بصف. وبدلًا من ذلك، يُرجع NULL فورًا لجميع الصفوف، مما يجنّب إجراء عمليات حسابية غير ضرورية.

<div id="short_circuit_function_evaluation_for_nulls_threshold">
  ## short\_circuit\_function\_evaluation\_for\_nulls\_threshold
</div>

<SettingsInfoBlock type="Double" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "1"},{"label": "عتبة نسبة قيم NULL لتشغيل الدوال ذات الوسيطات Nullable فقط على الصفوف التي تكون فيها جميع الوسيطات ذات قيم غير NULL. يُطبَّق هذا عند تمكين الإعداد short_circuit_function_evaluation_for_nulls."}]}]} />

عتبة نسبة قيم NULL لتشغيل الدوال ذات الوسيطات Nullable فقط على الصفوف التي تكون فيها جميع الوسيطات ذات قيم غير NULL. يُطبَّق هذا عند تمكين الإعداد short\_circuit\_function\_evaluation\_for\_nulls.
عندما تتجاوز نسبة الصفوف التي تحتوي على قيم NULL من إجمالي عدد الصفوف هذه العتبة، فلن يتم تقييم هذه الصفوف التي تحتوي على قيم NULL.

<div id="show_processlist_include_internal">
  ## show\_processlist\_include\_internal
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.11"},{"label": "1"},{"label": "إعداد جديد."}]}]} />

إظهار العمليات الداخلية المساعدة في مخرجات الاستعلام `SHOW PROCESSLIST`.

تشمل العمليات الداخلية إعادة تحميل القواميس، وإعادة تحميل العروض المادية القابلة للتحديث، وعمليات `SELECT` المساعدة المنفذة ضمن استعلامات `SHOW ...`، واستعلامات `CREATE DATABASE ...` المساعدة المنفذة داخليًا للتعامل مع الجداول المعطوبة، وغير ذلك.

<div id="show_remote_databases_in_system_tables">
  ## show\_remote\_databases\_in\_system\_tables
</div>

**الأسماء البديلة**: `show_data_lake_catalogs_in_system_tables`

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.6"},{"label": "0"},{"label": "أُعيدت تسميته من `show_data_lake_catalogs_in_system_tables`، كما وُسِّع نطاقه ليُخفي أيضًا قواعد بيانات `MySQL` و`PostgreSQL` من `system.tables` و`system.columns` و`system.completions` افتراضيًا، لأن حصر جداولها يتطلب استدعاءات بعيدة مرتفعة الكلفة. ويجب على المستخدمين الذين كانوا يعتمدون على السلوك السابق ضبط هذا الإعداد على `true`. وقد أُبقي على الاسم القديم كاسم بديل."}]}]} />

يُفعّل إظهار قواعد البيانات البعيدة (كتالوجات بحيرة البيانات، وMySQL، وPostgreSQL) في جداول النظام.

<div id="show_table_uuid_in_table_create_query_if_not_nil">
  ## show\_table\_uuid\_in\_table\_create\_query\_if\_not\_nil
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "20.7"},{"label": "0"},{"label": "إيقاف عرض UID الخاص بالجدول في استعلام CREATE الخاص به عند استخدام Engine=Atomic"}]}]} />

يضبط طريقة عرض استعلام `SHOW TABLE`.

القيم الممكنة:

* 0 — سيُعرض الاستعلام بدون UUID للجدول.
* 1 — سيُعرض الاستعلام مع UUID للجدول.

<div id="single_join_prefer_left_table">
  ## single\_join\_prefer\_left\_table
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

في حالة استخدام JOIN واحد، وعند وجود غموض في المعرّف، يُفضَّل الجدول الأيسر

<div id="skip_redundant_aliases_in_udf">
  ## skip\_redundant\_aliases\_in\_udf
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.12"},{"label": "0"},{"label": "عند التمكين، يتيح لك ذلك استخدام الدالة نفسها المعرّفة من قبل المستخدم عدة مرات مع عدة أعمدة مُجسَّدة في الجدول نفسه."}]}]} />

لا تُستخدَم الأسماء المستعارة الزائدة (ولا تُستبدَل) في الدوال المعرّفة من قبل المستخدم، وذلك لتبسيط استخدامها.

القيم الممكنة:

* 1 — يتم تخطي الأسماء المستعارة (واستبدالها) في UDFs.
* 0 — لا يتم تخطي الأسماء المستعارة (ولا استبدالها) في UDFs.

**مثال**

الفرق بين حالتي التمكين والتعطيل:

الاستعلام:

```sql theme={null}
SET skip_redundant_aliases_in_udf = 0;
CREATE FUNCTION IF NOT EXISTS test_03274 AS ( x ) -> ((x + 1 as y, y + 2));

EXPLAIN SYNTAX SELECT test_03274(4 + 2);
```

النتيجة:

```text theme={null}
SELECT ((4 + 2) + 1 AS y, y + 2)
```

الاستعلام:

```sql theme={null}
SET skip_redundant_aliases_in_udf = 1;
CREATE FUNCTION IF NOT EXISTS test_03274 AS ( x ) -> ((x + 1 as y, y + 2));

EXPLAIN SYNTAX SELECT test_03274(4 + 2);
```

النتيجة:

```text theme={null}
SELECT ((4 + 2) + 1, ((4 + 2) + 1) + 2)
```

<div id="skip_unavailable_shards">
  ## skip\_unavailable\_shards
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

يُفعِّل أو يعطِّل تخطي الشظايا غير المتاحة بصمت.

تُعد الشظية غير متاحة إذا كانت جميع النسخ المتماثلة التابعة لها غير متاحة. وتكون النسخة المتماثلة غير متاحة في الحالات التالية:

* يتعذر على ClickHouse الاتصال بالنسخة المتماثلة لأي سبب.

  عند الاتصال بنسخة متماثلة، يُجري ClickHouse عدة محاولات. وإذا فشلت جميع هذه المحاولات، تُعد النسخة المتماثلة غير متاحة.

* يتعذر حلّ عنوان النسخة المتماثلة عبر DNS.

  إذا تعذر حلّ اسم المضيف الخاص بالنسخة المتماثلة عبر DNS، فقد يشير ذلك إلى الحالات التالية:

  * لا يملك مضيف النسخة المتماثلة سجل DNS. وقد يحدث ذلك في الأنظمة التي تستخدم DNS ديناميكيًا، مثل [Kubernetes](https://kubernetes.io)، حيث قد يتعذر حلّ العقد أثناء فترة التوقف، وهذا لا يُعد خطأً.

  * خطأ في الإعداد. يحتوي ملف إعداد ClickHouse على اسم مضيف غير صحيح.

القيم الممكنة:

* 1 — التخطي مفعّل.

  إذا كانت إحدى الشظايا غير متاحة، يعيد ClickHouse نتيجةً تستند إلى بيانات جزئية ولا يبلّغ عن مشكلات في توافر العقد.

* 0 — التخطي معطّل.

  إذا كانت إحدى الشظايا غير متاحة، يطرح ClickHouse استثناءً.

<div id="sleep_after_receiving_query_ms">
  ## sleep\_after\_receiving\_query\_ms
</div>

<SettingsInfoBlock type="مللي ثانية" default_value="0" />

مدة التوقف بعد تلقّي الاستعلام في TCPHandler

<div id="sleep_in_send_data_ms">
  ## sleep\_in\_send\_data\_ms
</div>

<SettingsInfoBlock type="مللي ثانية" default_value="0" />

مدة التوقف المؤقت عند إرسال البيانات في TCPHandler

<div id="sleep_in_send_tables_status_ms">
  ## sleep\_in\_send\_tables\_status\_ms
</div>

<SettingsInfoBlock type="مللي ثانية" default_value="0" />

مدة السكون عند إرسال استجابة حالة الجداول في TCPHandler

<div id="sort_overflow_mode">
  ## sort\_overflow\_mode
</div>

<SettingsInfoBlock type="OverflowMode" default_value="throw" />

يحدّد ما يحدث إذا تجاوز عدد الصفوف المُستلمة قبل الفرز أحد الحدود.

القيم الممكنة:

* `throw`: طرح استثناء.
* `break`: إيقاف تنفيذ الاستعلام وإرجاع نتيجة جزئية.

<div id="split_intersecting_parts_ranges_into_layers_final">
  ## split\_intersecting\_parts\_ranges\_into\_layers\_final
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.2"},{"label": "1"},{"label": "السماح بتقسيم نطاقات الأجزاء المتداخلة إلى طبقات أثناء تحسين FINAL"}]}, {"id": "row-2","items": [{"label": "24.1"},{"label": "1"},{"label": "السماح بتقسيم نطاقات الأجزاء المتداخلة إلى طبقات أثناء تحسين FINAL"}]}]} />

تقسيم نطاقات الأجزاء المتداخلة إلى طبقات أثناء تحسين FINAL

<div id="split_parts_ranges_into_intersecting_and_non_intersecting_final">
  ## split\_parts\_ranges\_into\_intersecting\_and\_non\_intersecting\_final
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.2"},{"label": "1"},{"label": "السماح بتقسيم نطاقات الأجزاء إلى نطاقات متقاطعة وأخرى غير متقاطعة أثناء تحسين FINAL"}]}, {"id": "row-2","items": [{"label": "24.1"},{"label": "1"},{"label": "السماح بتقسيم نطاقات الأجزاء إلى نطاقات متقاطعة وأخرى غير متقاطعة أثناء تحسين FINAL"}]}]} />

تقسيم نطاقات الأجزاء إلى نطاقات متقاطعة وأخرى غير متقاطعة أثناء تحسين FINAL

<div id="splitby_max_substrings_includes_remaining_string">
  ## splitby\_max\_substrings\_includes\_remaining\_string
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

يتحكم هذا الإعداد في ما إذا كانت الدالة [splitBy\*()](/ar/reference/functions/regular-functions/splitting-merging-functions)، عند استخدام الوسيط `max_substrings` > 0، ستُضمِّن السلسلة المتبقية في العنصر الأخير من مصفوفة النتيجة.

القيم الممكنة:

* `0` - لن تُضمَّن السلسلة المتبقية في العنصر الأخير من مصفوفة النتيجة.
* `1` - ستُضمَّن السلسلة المتبقية في العنصر الأخير من مصفوفة النتيجة. وهذا هو سلوك الدالة [`split()`](https://spark.apache.org/docs/3.1.2/api/python/reference/api/pyspark.sql.functions.split.html) في Spark، والأسلوب ['string.split()'](https://docs.python.org/3/library/stdtypes.html#str.split) في بايثون.

<div id="stop_refreshable_materialized_views_on_startup">
  ## stop\_refreshable\_materialized\_views\_on\_startup
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

عند بدء تشغيل الخادم، امنع جدولة العروض المادية القابلة لإعادة التحديث، كما لو تم استخدام SYSTEM STOP VIEWS. يمكنك بدء تشغيلها يدويًا لاحقًا باستخدام `SYSTEM START VIEWS` أو `SYSTEM START VIEW <name>`. ينطبق ذلك أيضًا على العروض المُنشأة حديثًا. لا يؤثر ذلك في العروض المادية غير القابلة لإعادة التحديث.

<div id="storage_file_read_method">
  ## storage\_file\_read\_method
</div>

<SettingsInfoBlock type="LocalFSReadMethod" default_value="pread" />

طريقة قراءة البيانات من ملف التخزين، وتكون إحدى الطرق التالية: `read`، `pread`، `mmap`. لا تنطبق الطريقة `mmap` على clickhouse-server (فهي مخصّصة لـ clickhouse-local).

<div id="storage_system_stack_trace_pipe_read_timeout_ms">
  ## storage\_system\_stack\_trace\_pipe\_read\_timeout\_ms
</div>

<SettingsInfoBlock type="مللي ثانية" default_value="100" />

الحد الأقصى للوقت المستغرق في القراءة من قناة لتلقّي المعلومات من الخيوط عند الاستعلام عن جدول `system.stack_trace`. يُستخدم هذا الإعداد لأغراض الاختبار، وليس من المفترض أن يغيّره المستخدمون.

<div id="stream_flush_interval_ms">
  ## stream\_flush\_interval\_ms
</div>

<SettingsInfoBlock type="مللي ثانية" default_value="7500" />

يعمل مع الجداول المتدفقة عند حدوث مهلة، أو عندما يُنشئ مؤشر ترابط [max\_insert\_block\_size](#max_insert_block_size) من الصفوف.

القيمة الافتراضية هي 7500.

كلما صغرت القيمة، زاد تكرار تفريغ البيانات إلى الجدول. ويؤدي تعيين قيمة منخفضة جدًا إلى ضعف الأداء.

<div id="stream_like_engine_allow_direct_select">
  ## stream\_like\_engine\_allow\_direct\_select
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "21.12"},{"label": "0"},{"label": "عدم السماح افتراضيًا باستعلام SELECT مباشر لـ Kafka/RabbitMQ/FileLog"}]}]} />

السماح باستعلام SELECT مباشر لمحركات Kafka وRabbitMQ وFileLog وRedis Streams وS3Queue وAzureQueue وNATS. في حال وجود عروض مادية مرفقة، لا يُسمح باستعلام SELECT حتى إذا كان هذا الإعداد مُمكّنًا.
إذا لم تكن هناك عروض مادية مرفقة، فإن تمكين هذا الإعداد يتيح قراءة البيانات. انتبه إلى أن البيانات المقروءة تُزال عادةً من قائمة الانتظار. ولتجنّب إزالة البيانات المقروءة، يجب تهيئة إعدادات المحرك ذات الصلة بشكل صحيح.

<div id="stream_like_engine_insert_queue">
  ## stream\_like\_engine\_insert\_queue
</div>

عندما يقرأ محرك من نوع stream من عدة قوائم انتظار، سيحتاج المستخدم إلى اختيار قائمة انتظار واحدة لتنفيذ insert فيها عند الكتابة. تُستخدم هذه الخاصية في Redis Streams وNATS.

<div id="stream_poll_timeout_ms">
  ## stream\_poll\_timeout\_ms
</div>

<SettingsInfoBlock type="مللي ثانية" default_value="500" />

مهلة استقصاء البيانات من/إلى مخازن البث.

<div id="system_events_show_zero_values">
  ## system\_events\_show\_zero\_values
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

يسمح بتحديد الأحداث ذات القيمة الصفرية من [`system.events`](/ar/reference/system-tables/events).

تتطلب بعض أنظمة المراقبة تمرير جميع قيم المقاييس إليها عند كل نقطة تحقق، حتى إذا كانت قيمة المقياس صفرًا.

القيم الممكنة:

* 0 — معطّل.
* 1 — مُمكّن.

**أمثلة**

استعلام

```sql theme={null}
SELECT * FROM system.events WHERE event='QueryMemoryLimitExceeded';
```

النتيجة

```text theme={null}
Ok.
```

استعلام

```sql theme={null}
SET system_events_show_zero_values = 1;
SELECT * FROM system.events WHERE event='QueryMemoryLimitExceeded';
```

النتيجة

```text theme={null}
┌─event────────────────────┬─value─┬─description───────────────────────────────────────────┐
│ QueryMemoryLimitExceeded │     0 │ Number of times when memory limit exceeded for query. │
└──────────────────────────┴───────┴───────────────────────────────────────────────────────┘
```

<div id="system_metric_log_show_zero_values_in_histograms">
  ## system\_metric\_log\_show\_zero\_values\_in\_histograms
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "0"},{"label": "إعداد جديد يتحكم في ما إذا كانت بيانات المُدرَّج التكراري ذات القيمة الصفرية تُكتَب في العمود المتداخل histograms ضمن system.metric_log."}]}]} />

يتحكم هذا الإعداد في ما إذا كانت بيانات المُدرَّج التكراري ذات القيمة الصفرية تُكتَب في العمود المتداخل `histograms` ضمن `system.metric_log`.

افتراضياً، يتم تجاهل المُدرَّجات التكرارية التي يكون فيها إجمالي `count` للمشاهدات صفراً، وداخل كل مُدرَّج تكراري مكتوب، تُحذَف أيضاً إدخالات الحاويات التي لا تحتوي على أي مشاهدات من خريطة `histogram`. فعِّل هذا الخيار لكتابة كل مُدرَّج تكراري وكل حاوية بغضّ النظر عن العدد — وهو مفيد لأنظمة المراقبة التي تتطلب ظهور كل مقياس عند كل نقطة تحقق.

القيم الممكنة:

* 0 — معطّل. لا تُكتَب المُدرَّجات التكرارية التي فيها `count = 0`؛ وتقتصر المُدرَّجات التكرارية المكتوبة على الحاويات التي استقبلت مشاهدة واحدة على الأقل.
* 1 — مفعّل. تُكتَب جميع المُدرَّجات التكرارية، وتظهر كل حدود الحاويات في `histogram`.

<div id="table_engine_read_through_distributed_cache">
  ## table\_engine\_read\_through\_distributed\_cache
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.7"},{"label": "0"},{"label": "إعداد جديد"}]}]} />

يسري هذا فقط في ClickHouse Cloud. يتيح القراءة من distributed cache عبر محركات الجداول / دوال الجداول (s3 وazure وما إلى ذلك)

<div id="table_function_remote_max_addresses">
  ## table\_function\_remote\_max\_addresses
</div>

<SettingsInfoBlock type="UInt64" default_value="1000" />

يعيّن الحد الأقصى لعدد العناوين المُنشأة من الأنماط للدالة [remote](/ar/reference/functions/table-functions/remote).

القيم الممكنة:

* عدد صحيح موجب.

<div id="tcp_keep_alive_timeout">
  ## tcp\_keep\_alive\_timeout
</div>

<SettingsInfoBlock type="ثوانٍ" default_value="290" />

المدة بالثواني التي يجب أن يظل فيها الاتصال خاملًا قبل أن يبدأ TCP في إرسال حزم keepalive

<div id="temporary_data_in_cache_reserve_space_wait_lock_timeout_milliseconds">
  ## temporary\_data\_in\_cache\_reserve\_space\_wait\_lock\_timeout\_milliseconds
</div>

<SettingsInfoBlock type="UInt64" default_value="600000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.4"},{"label": "600000"},{"label": "مدة الانتظار للحصول على قفل ذاكرة التخزين المؤقت عند حجز مساحة للبيانات المؤقتة في ذاكرة التخزين المؤقت لنظام الملفات"}]}]} />

مدة الانتظار للحصول على قفل ذاكرة التخزين المؤقت عند حجز مساحة للبيانات المؤقتة في ذاكرة التخزين المؤقت لنظام الملفات

<div id="temporary_files_buffer_size">
  ## temporary\_files\_buffer\_size
</div>

<SettingsInfoBlock type="NonZeroUInt64" default_value="1048576" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.10"},{"label": "1048576"},{"label": "إعداد جديد"}]}]} />

حجم المخزن المؤقت لعمليات كتابة الملفات المؤقتة. وكلما زاد حجم المخزن المؤقت، قلّ عدد استدعاءات النظام، لكنه يزيد من استهلاك الذاكرة.

<div id="temporary_files_codec">
  ## temporary\_files\_codec
</div>

<SettingsInfoBlock type="String" default_value="LZ4" />

يحدّد خوارزمية الضغط للملفات المؤقتة المستخدمة في عمليات الفرز والربط على القرص.

القيم الممكنة:

* LZ4 — يُستخدم ضغط [LZ4](https://en.wikipedia.org/wiki/LZ4_\(compression_algorithm\)).
* NONE — لا يُستخدم أي ضغط.

<div id="text_index_density_threshold">
  ## text\_index\_density\_threshold
</div>

<SettingsInfoBlock type="Float" default_value="0.2" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.6"},{"label": "0.2"},{"label": "إعداد جديد لعتبة كثافة قائمة النشر الكسولة"}]}]} />

عتبة الكثافة لاختيار الخوارزمية في وضع قائمة النشر الكسولة.
أقل من العتبة: تقاطع leapfrog. عند العتبة أو أعلى منها: bitmap بطريقة brute-force.

<div id="text_index_hint_max_selectivity">
  ## text\_index\_hint\_max\_selectivity
</div>

<SettingsInfoBlock type="Float" default_value="0.2" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "0.2"},{"label": "إعداد جديد"}]}]} />

الحد الأقصى لانتقائية عامل التصفية لاستخدام التلميح المُنشأ من الفهرس النصي المعكوس.

<div id="text_index_like_max_postings_to_read">
  ## text\_index\_like\_max\_postings\_to\_read
</div>

<SettingsInfoBlock type="UInt64" default_value="50" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "50"},{"label": "إعداد جديد"}]}]} />

الحد الأقصى لعدد قوائم الإسناد الكبيرة التي يمكن قراءتها عند تفعيل تقييم `LIKE` للفهرس النصي باستخدام المسح بالقاموس.

يتطلب تفعيل `use_text_index_like_evaluation_by_dictionary_scan`.

<div id="text_index_like_min_pattern_length">
  ## text\_index\_like\_min\_pattern\_length
</div>

<SettingsInfoBlock type="UInt64" default_value="4" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "4"},{"label": "إعداد جديد"}]}]} />

الحد الأدنى المطلوب لطول المقطع الأبجدي الرقمي المستهدَف في نمط LIKE/ILIKE لاستخدام تقييم LIKE للفهرس النصي عبر المسح بالقاموس.
الأنماط الأقصر من هذه العتبة تطابق عددًا كبيرًا جدًا من رموز القاموس، لذلك يتم تخطيها لتجنّب عمليات الفحص المكلفة.

يتطلب أن يكون `use_text_index_like_evaluation_by_dictionary_scan` مُمكّنًا.

<div id="text_index_posting_list_apply_mode">
  ## text\_index\_posting\_list\_apply\_mode
</div>

<SettingsInfoBlock type="TextIndexPostingListApplyMode" default_value="materialize" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.6"},{"label": "materialize"},{"label": "إعداد جديد لوضع تطبيق lazy قائمة النشر"}]}]} />

يتحكم في كيفية تطبيق قوائم النشر أثناء استعلامات الفهرس النصي.
'materialize' (الافتراضي) يفك ترميز قوائم النشر مباشرةً إلى Roaring Bitmaps.
'lazy' يستخدم فك ترميز عند الطلب يعتمد على المؤشر (يتطلب تنسيق الفهرس V2 و allow\_experimental\_text\_index\_lazy\_apply).

<div id="throw_if_no_data_to_insert">
  ## throw\_if\_no\_data\_to\_insert
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

يسمح بعمليات INSERT الفارغة أو يمنعها، وهو مفعّل افتراضيًا (ويُصدر خطأ عند تنفيذ INSERT فارغ). ينطبق هذا فقط على عمليات INSERT التي تستخدم [`clickhouse-client`](/ar/concepts/features/interfaces/cli) أو [واجهة gRPC](/ar/concepts/features/interfaces/grpc).

<div id="throw_on_error_from_cache_on_write_operations">
  ## throw\_on\_error\_from\_cache\_on\_write\_operations
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

تجاهل الخطأ الصادر من `cache` عند التخزين المؤقت أثناء عمليات الكتابة (INSERT، عمليات الدمج)

<div id="throw_on_max_partitions_per_insert_block">
  ## throw\_on\_max\_partitions\_per\_insert\_block
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

يتيح لك هذا الإعداد التحكم في السلوك عند بلوغ `max_partitions_per_insert_block`.

القيم الممكنة:

* `true`  - عند بلوغ كتلة إدراج `max_partitions_per_insert_block`، يتم إطلاق استثناء.
* `false` - يُسجَّل تحذير عند بلوغ `max_partitions_per_insert_block`.

<Tip>
  قد يكون هذا مفيدًا إذا كنت تحاول فهم التأثير في المستخدمين عند تغيير [`max_partitions_per_insert_block`](/ar/reference/settings/session-settings#max_partitions_per_insert_block).
</Tip>

<div id="throw_on_unsupported_query_inside_transaction">
  ## throw\_on\_unsupported\_query\_inside\_transaction
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

يُطرَح استثناء إذا استُخدِم استعلام غير مدعوم داخل معاملة

<div id="timeout_before_checking_execution_speed">
  ## timeout\_before\_checking\_execution\_speed
</div>

<SettingsInfoBlock type="ثوانٍ" default_value="10" />

يتحقق من أن سرعة التنفيذ ليست منخفضة جدًا (أي لا تقل عن `min_execution_speed`)،
بعد انقضاء المدة المحددة بالثواني.

<div id="timeout_overflow_mode">
  ## timeout\_overflow\_mode
</div>

<SettingsInfoBlock type="OverflowMode" default_value="throw" />

يحدّد ما يجب فعله إذا استمر تنفيذ الاستعلام مدة أطول من `max_execution_time` أو كان
الوقت المقدَّر للتنفيذ أطول من `max_estimated_execution_time`.

القيم الممكنة:

* `throw`: إثارة استثناء (الافتراضي).
* `break`: إيقاف تنفيذ الاستعلام وإرجاع نتيجة جزئية، كما لو أن
  البيانات المصدر قد نفدت.

<div id="timeout_overflow_mode_leaf">
  ## timeout\_overflow\_mode\_leaf
</div>

<SettingsInfoBlock type="OverflowMode" default_value="throw" />

يحدد ما يحدث عندما يستغرق الاستعلام على العقدة الطرفية وقتًا أطول من `max_execution_time_leaf`.

القيم المحتملة:

* `throw`: رفع استثناء (الافتراضي).
* `break`: إيقاف تنفيذ الاستعلام وإرجاع النتيجة الجزئية، كما لو أن
  بيانات المصدر قد نفدت.

<div id="totals_auto_threshold">
  ## totals\_auto\_threshold
</div>

<SettingsInfoBlock type="Float" default_value="0.5" />

العتبة الخاصة بـ `totals_mode = 'auto'`.
راجع قسم «مُعدِّل WITH TOTALS».

<div id="totals_mode">
  ## totals\_mode
</div>

<SettingsInfoBlock type="TotalsMode" default_value="after_having_exclusive" />

كيفية احتساب TOTALS عند وجود HAVING، وكذلك عند تعيين max\_rows\_to\_group\_by و group\_by\_overflow\_mode = 'any'.
راجع قسم "المُعدِّل WITH TOTALS".

<div id="trace_profile_events">
  ## trace\_profile\_events
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

يمكّن أو يعطّل جمع stacktraces عند كل تحديث لأحداث profile، مع اسم حدث profile وقيمة الزيادة، وإرسالها إلى [trace\_log](/ar/reference/system-tables/trace_log).

القيم الممكنة:

* 1 — تتبّع أحداث profile مُمكَّن.
* 0 — تتبّع أحداث profile مُعطَّل.

<div id="trace_profile_events_list">
  ## trace\_profile\_events\_list
</div>

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.1"},{"label": ""},{"label": "إعداد جديد"}]}]} />

عند تمكين الإعداد `trace_profile_events`، تقتصر الأحداث التي يُتتبَّعها على قائمة الأسماء المحددة والمفصولة بفواصل.
إذا كانت `trace_profile_events_list` سلسلة نصية فارغة (افتراضيًا)، فسيتم تتبُّع جميع أحداث profile.

مثال على قيمة: 'DiskS3ReadMicroseconds,DiskS3ReadRequestsCount,SelectQueryTimeMicroseconds,ReadBufferFromS3Bytes'

يتيح استخدام هذا الإعداد جمع البيانات بدقة أكبر لعدد كبير من الاستعلامات، لأن الكم الهائل من الأحداث قد يؤدي، بخلاف ذلك، إلى تجاوز سعة طابور سجل النظام الداخلي، مما يتسبب في إسقاط جزء منها.

<div id="transfer_overflow_mode">
  ## transfer\_overflow\_mode
</div>

<SettingsInfoBlock type="OverflowMode" default_value="throw" />

يحدد ما يحدث عندما تتجاوز كمية البيانات أحد الحدود.

القيم الممكنة:

* `throw`: إثارة استثناء (الافتراضي).
* `break`: إيقاف تنفيذ الاستعلام وإرجاع نتيجة جزئية، كما لو أن
  بيانات المصدر قد نفدت.

<div id="transform_null_in">
  ## transform\_null\_in
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

يتيح اعتبار قيم [NULL](/ar/reference/syntax#null) متساوية في المعامل [IN](/ar/reference/statements/in).

بشكل افتراضي، لا يمكن مقارنة قيم `NULL` لأن `NULL` تعني قيمة غير معرّفة. لذلك، يجب أن تُرجع المقارنة `expr = NULL` دائمًا القيمة `false`. ومع هذا الإعداد، تُرجع `NULL = NULL` القيمة `true` في المعامل `IN`.

القيم الممكنة:

* 0 — تُرجع مقارنة قيم `NULL` في المعامل `IN` القيمة `false`.
* 1 — تُرجع مقارنة قيم `NULL` في المعامل `IN` القيمة `true`.

**مثال**

لنفترض وجود الجدول `null_in`:

```text theme={null}
┌──idx─┬─────i─┐
│    1 │     1 │
│    2 │  NULL │
│    3 │     3 │
└──────┴───────┘
```

استعلام:

```sql theme={null}
SELECT idx, i FROM null_in WHERE i IN (1, NULL) SETTINGS transform_null_in = 0;
```

النتيجة:

```text theme={null}
┌──idx─┬────i─┐
│    1 │    1 │
└──────┴──────┘
```

استعلام:

```sql theme={null}
SELECT idx, i FROM null_in WHERE i IN (1, NULL) SETTINGS transform_null_in = 1;
```

النتيجة:

```text theme={null}
┌──idx─┬─────i─┐
│    1 │     1 │
│    2 │  NULL │
└──────┴───────┘
```

**راجع أيضًا**

* [معالجة NULL في عوامل التشغيل IN](/ar/reference/statements/in#null-processing)

<div id="traverse_shadow_remote_data_paths">
  ## traverse\_shadow\_remote\_data\_paths
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "0"},{"label": "اعبر دليل الظل عند تنفيذ استعلام system.remote_data_paths."}]}]} />

اعبر البيانات المجمّدة (دليل الظل) بالإضافة إلى بيانات الجدول الفعلية عند تنفيذ استعلام system.remote\_data\_paths

<div id="union_default_mode">
  ## union\_default\_mode
</div>

يحدّد وضع دمج نتائج استعلام `SELECT`. لا يُستخدم هذا الإعداد إلا مع [UNION](/ar/reference/statements/select/union) عند عدم تحديد `UNION ALL` أو `UNION DISTINCT` صراحةً.

القيم الممكنة:

* `'DISTINCT'` — يعرض ClickHouse الصفوف الناتجة عن دمج الاستعلامات بعد إزالة الصفوف المكررة.
* `'ALL'` — يعرض ClickHouse جميع الصفوف الناتجة عن دمج الاستعلامات، بما في ذلك الصفوف المكررة.
* `''` — ينشئ ClickHouse استثناءً عند استخدامه مع `UNION`.

راجع الأمثلة في [UNION](/ar/reference/statements/select/union).

<div id="unique_key_max_encoded_size">
  ## unique\_key\_max\_encoded\_size
</div>

<SettingsInfoBlock type="UInt64" default_value="256" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.6"},{"label": "256"},{"label": "إعداد جديد: الحد الأقصى للحجم (بالبايت) للترميز الثنائي الذي يحافظ على الترتيب لصف واحد من `UNIQUE KEY`"}]}]} />

الحد الأقصى للحجم (بالبايت) للترميز الثنائي الذي يحافظ على الترتيب لصف واحد من `UNIQUE KEY`.

<div id="unknown_packet_in_send_data">
  ## unknown\_packet\_in\_send\_data
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

إرسال حزمة غير معروفة بدلًا من حزمة البيانات رقم N

<div id="update_parallel_mode">
  ## update\_parallel\_mode
</div>

<SettingsInfoBlock type="UpdateParallelMode" default_value="auto" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "auto"},{"label": "إعداد جديد"}]}]} />

يحدّد سلوك استعلامات التحديث المتوازية.

القيم الممكنة:

* `sync` - شغّل جميع استعلامات `UPDATE` بشكل تسلسلي.
* `auto` - شغّل بشكل تسلسلي فقط استعلامات `UPDATE` التي توجد بينها تبعيات بين الأعمدة المحدَّثة في أحد الاستعلامات والأعمدة المستخدمة في التعبيرات في استعلام آخر.
* `async` - لا تُزامِن استعلامات التحديث.

<div id="update_sequential_consistency">
  ## update\_sequential\_consistency
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "1"},{"label": "إعداد جديد"}]}]} />

إذا كانت القيمة true، تُحدَّث مجموعة الأجزاء إلى أحدث إصدار قبل تنفيذ عملية التحديث.

<div id="url_base">
  ## url\_base
</div>

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": ""},{"label": "إعداد جديد لتحديد URL الأساسي لحل عناوين URL النسبية في دالة الجدول url ومحرك الجدول URL."}]}]} />

URL الأساسي المستخدم لحل عناوين URL النسبية في دالة الجدول [url](/ar/reference/functions/table-functions/url) ومحرك الجدول [URL](/ar/reference/engines/table-engines/special/url).

عند تعيينه، تُحل عناوين URL النسبية على النحو التالي:

* عنوان URL نسبي إلى المسار (مثل `data.csv`): يُدمج مع مسار URL الأساسي وفقًا للمعيار RFC 3986. ويُستبدل كل ما يأتي بعد آخر `/` في المسار الأساسي بعنوان URL النسبي، لذا فإن الشرطة المائلة اللاحقة مهمة: `https://example.com/dir/` + `data.csv` = `https://example.com/dir/data.csv`، لكن `https://example.com/dir` + `data.csv` = `https://example.com/data.csv`. وإذا لم يكن للعنوان الأساسي مسار (مثل `https://example.com`)، يُدرج `/`: `https://example.com/data.csv`. كما تُطبَّع المقاطع النقطية (`./` و `../`) في عنوان URL النسبي: `https://example.com/dir/` + `../a.csv` = `https://example.com/a.csv`.
* عنوان URL نسبي إلى المضيف (مثل `/test/data.csv`): يُحل استنادًا إلى scheme والمضيف في URL الأساسي.
* عنوان URL نسبي إلى scheme (مثل `//other.com/test/data.csv`): يُحل باستخدام scheme الخاص بـ URL الأساسي.
* مرجع يتضمن query فقط (مثل `?x=1`): يُلحق بمسار URL الأساسي (مع استبدال أي query/fragment موجود).
* مرجع يتضمن fragment فقط (مثل `#frag`): يُلحق بـ URL الأساسي مع الاحتفاظ بأي query string موجود (مع استبدال أي fragment موجود).
* مرجع فارغ: يعيد URL الأساسي بدون fragment.

على سبيل المثال، إذا كانت قيمة `url_base` هي `https://example.com/def/`، فسيكون الناتج كما يلي:

* `data.csv` يُحل إلى `https://example.com/def/data.csv`
* `/test/data.csv` يُحل إلى `https://example.com/test/data.csv`
* `//other.com/test/data.csv` يُحل إلى `https://other.com/test/data.csv`

<div id="use_async_executor_for_materialized_views">
  ## use\_async\_executor\_for\_materialized\_views
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.12"},{"label": "0"},{"label": "إعداد جديد."}]}]} />

استخدم التنفيذ غير المتزامن، وربما متعدد الخيوط، لاستعلام العرض المادي، إذ يمكن أن يسرّع معالجة العروض المادية أثناء INSERT، لكنه قد يستهلك أيضًا مزيدًا من الذاكرة.

<div id="use_cache_for_count_from_files">
  ## use\_cache\_for\_count\_from\_files
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

يُفعّل التخزين المؤقت لعدد الصفوف أثناء العدّ من الملفات في دوال الجداول `file`/`s3`/`url`/`hdfs`/`azureBlobStorage`.

مُفعّل افتراضيًا.

<div id="use_client_time_zone">
  ## use\_client\_time\_zone
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

استخدم المنطقة الزمنية الخاصة بالعميل لتفسير قيم سلاسل DateTime، بدلًا من استخدام المنطقة الزمنية الخاصة بالخادم.

<div id="use_compact_format_in_distributed_parts_names">
  ## use\_compact\_format\_in\_distributed\_parts\_names
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "21.1"},{"label": "1"},{"label": "استخدام التنسيق المضغوط افتراضيًا لعمليات async INSERT في جداول Distributed"}]}]} />

يستخدم التنسيق المضغوط لتخزين الكتل الخاصة بعمليات INSERT في الخلفية (`distributed_foreground_insert`) إلى الجداول التي تستخدم المحرك `Distributed`.

القيم الممكنة:

* 0 — يستخدم تنسيق الدليل `user[:password]@host:port#default_database`.
* 1 — يستخدم تنسيق الدليل `[shard{shard_index}[_replica{replica_index}]]`.

<Note>
  - عند استخدام `use_compact_format_in_distributed_parts_names=0`، لن تُطبَّق التغييرات في تعريف العنقود على عمليات INSERT في الخلفية.
  - عند استخدام `use_compact_format_in_distributed_parts_names=1`، فإن تغيير ترتيب العقد في تعريف العنقود سيؤدي إلى تغيير `shard_index`/`replica_index`، لذا انتبه.
</Note>

<div id="use_concurrency_control">
  ## use\_concurrency\_control
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.12"},{"label": "1"},{"label": "تفعيل التحكم في التزامن افتراضيًا"}]}]} />

يراعي التحكم في التزامن على الخادم (راجع إعدادات الخادم العامة `concurrent_threads_soft_limit_num` و`concurrent_threads_soft_limit_ratio_to_cores`). وإذا كان معطّلًا، فسيتيح استخدام عدد أكبر من الخيوط حتى لو كان الخادم مثقلًا بالحمل (وهذا غير موصى به للاستخدام العادي، ويكون مطلوبًا غالبًا للاختبارات).

القيمة الافتراضية في Cloud: `0`.

<div id="use_hash_table_stats_for_join_reordering">
  ## use\_hash\_table\_stats\_for\_join\_reordering
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.1"},{"label": "1"},{"label": "إعداد جديد. كان يطابق سابقًا الإعداد 'collect_hash_table_stats_during_joins'."}]}]} />

تمكين استخدام إحصاءات جدول التجزئة المجمّعة لتقدير الكاردينالية أثناء إعادة ترتيب JOIN

<div id="use_hedged_requests">
  ## use\_hedged\_requests
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "21.9"},{"label": "1"},{"label": "تفعيل ميزة الطلبات التحوطية افتراضيًا"}]}]} />

يُمكّن منطق الطلبات التحوطية للاستعلامات البعيدة. ويتيح إنشاء عدة اتصالات مع نُسخ متماثلة مختلفة للاستعلام.
يُنشأ اتصال جديد إذا تعذّر إنشاء الاتصال الحالي مع النسخة المتماثلة خلال `hedged_connection_timeout`
أو إذا لم يتم استلام أي بيانات خلال `receive_data_timeout`. يستخدم الاستعلام أول اتصال يرسل حزمة Progress غير فارغة (أو حزمة Data إذا كان `allow_changing_replica_until_first_data_packet`);
وتُلغى الاتصالات الأخرى. الاستعلامات التي تستخدم `max_parallel_replicas > 1` مدعومة.

مُفعّل افتراضيًا.

القيمة الافتراضية في Cloud: `0`.

<div id="use_hive_partitioning">
  ## use\_hive\_partitioning
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "1"},{"label": "تم تمكين هذا الإعداد افتراضيًا."}]}, {"id": "row-2","items": [{"label": "24.8"},{"label": "0"},{"label": "يتيح استخدام التقسيم بنمط Hive لمحركات File وURL وS3 وAzureBlobStorage وHDFS."}]}]} />

عند تمكينه، يكتشف ClickHouse التقسيم بنمط Hive في المسار (`/name=value/`) في محركات الجداول الشبيهة بالملفات [File](/ar/reference/functions/table-functions/file#hive-style-partitioning)/[S3](/ar/reference/functions/table-functions/s3#hive-style-partitioning)/[URL](/ar/reference/functions/table-functions/url#hive-style-partitioning)/[HDFS](/ar/reference/functions/table-functions/hdfs#hive-style-partitioning)/[AzureBlobStorage](/ar/reference/functions/table-functions/azureBlobStorage#hive-style-partitioning)، ويتيح استخدام أعمدة partition كأعمدة افتراضية في query. وتحمل هذه الأعمدة الافتراضية الأسماء نفسها الموجودة في المسار المُقسَّم، ولكنها تبدأ بـ `_`.

<div id="use_iceberg_metadata_files_cache">
  ## use\_iceberg\_metadata\_files\_cache
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.4"},{"label": "1"},{"label": "إعداد جديد"}]}]} />

إذا كان هذا الإعداد مفعّلًا، فقد تستخدم دالة الجدول Iceberg ومحرك تخزين Iceberg ذاكرة التخزين المؤقت لملفات البيانات الوصفية لـ Iceberg.

القيم الممكنة:

* 0 - معطّل
* 1 - مُمكّن

<div id="use_iceberg_partition_pruning">
  ## use\_iceberg\_partition\_pruning
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.6"},{"label": "1"},{"label": "تفعيل استبعاد التقسيمات في Iceberg افتراضيًا."}]}, {"id": "row-2","items": [{"label": "25.1"},{"label": "0"},{"label": "إعداد جديد لاستبعاد التقسيمات في Iceberg."}]}]} />

استخدم استبعاد التقسيمات في Iceberg مع جداول Iceberg

<div id="use_index_for_in_with_subqueries">
  ## use\_index\_for\_in\_with\_subqueries
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

حاوِل استخدام فهرس إذا وُجد استعلام فرعي أو تعبير table في الجانب الأيمن من المعامل IN.

<div id="use_index_for_in_with_subqueries_max_values">
  ## use\_index\_for\_in\_with\_subqueries\_max\_values
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

الحد الأقصى لحجم المجموعة في الطرف الأيمن من العامل IN لاستخدام فهرس الجدول في التصفية. يتيح ذلك تفادي تراجع الأداء وازدياد استهلاك الذاكرة الناتجين عن إعداد بُنى بيانات إضافية للاستعلامات الكبيرة. ويعني الصفر عدم وجود حد.

<div id="use_join_disjunctions_push_down">
  ## use\_join\_disjunctions\_push\_down
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.1"},{"label": "1"},{"label": "تم تمكين هذا التحسين."}]}, {"id": "row-2","items": [{"label": "25.10"},{"label": "0"},{"label": "إعداد جديد."}]}]} />

يُمكّن من دفع الأجزاء المرتبطة بعامل OR من شروط JOIN إلى جهات الإدخال المقابلة ("الدفع الجزئي").
يتيح ذلك لمحركات التخزين إجراء التصفية في مرحلة مبكرة، مما قد يقلل كمية البيانات المقروءة.
هذا التحسين يحافظ على دلالات الاستعلام، ولا يُطبَّق إلا إذا كان كل فرع OR على المستوى الأعلى يوفّر عبارة شرطية حتمية واحدة على الأقل
للجهة المستهدفة.

<div id="use_legacy_to_time">
  ## use\_legacy\_to\_time
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.6"},{"label": "1"},{"label": "إعداد جديد. يتيح للمستخدم استخدام المنطق القديم للدالة toTime، الذي يعمل مثل toTimeWithFixedDate."}]}]} />

عند التمكين، يتيح هذا الإعداد استخدام الدالة القديمة toTime، التي تحوّل قيمة date with time إلى تاريخ ثابت محدد مع الحفاظ على الوقت.
بخلاف ذلك، تُستخدم دالة toTime الجديدة، التي تحوّل أنواعًا مختلفة من البيانات إلى النوع Time.
كما تظل الدالة القديمة متاحة دائمًا أيضًا باسم toTimeWithFixedDate.

<div id="use_lightweight_primary_key_index_analysis">
  ## use\_lightweight\_primary\_key\_index\_analysis
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.6"},{"label": "1"},{"label": "إعداد جديد لتحسين تحليل فهرس المفتاح الأساسي للجداول ذات المفاتيح الأساسية الطويلة"}]}]} />

تحسين تحليل فهرس المفتاح الأساسي لجداول `MergeTree` ذات المفاتيح الأساسية الطويلة.

عند تمكين هذا الإعداد، يعتمد وقت تنفيذ تحليل الفهرس أساسًا على مدى تعقيد عامل التصفية في الاستعلام (أي أعمدة المفتاح التي يستخدمها فعليًا)، وليس على طول المفتاح الأساسي. لذلك، فإن توسيع مفتاح الفرز يضيف كلفة إضافية شبه معدومة إلى تحليل الفهرس في الاستعلامات التي تُجري التصفية على عدد قليل فقط من أعمدته.

القيم الممكنة:

* 0 — معطّل. تُعالَج جميع أعمدة المفتاح الأساسي أثناء تحليل الفهرس.
* 1 — مفعّل.

<div id="use_page_cache_for_disks_without_file_cache">
  ## use\_page\_cache\_for\_disks\_without\_file\_cache
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "0"},{"label": "أُضيفت ذاكرة التخزين المؤقت للصفحات في حيّز المستخدم"}]}]} />

استخدم ذاكرة التخزين المؤقت للصفحات في حيّز المستخدم للأقراص البعيدة التي لا تكون فيها ذاكرة التخزين المؤقت لنظام الملفات مفعّلة.

<div id="use_page_cache_for_local_disks">
  ## use\_page\_cache\_for\_local\_disks
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "0"},{"label": "إعداد جديد لاستخدام ذاكرة التخزين المؤقت للصفحات في حيّز المستخدم للأقراص المحلية"}]}]} />

استخدم ذاكرة التخزين المؤقت للصفحات في حيّز المستخدم عند القراءة من الأقراص المحلية. يُستخدم هذا للاختبار، ومن غير المرجح أن يُحسّن الأداء عمليًا. يتطلب local\_filesystem\_read\_method = 'pread' أو 'read'. لا يؤدي ذلك إلى تعطيل ذاكرة تخزين الصفحات المؤقتة لنظام التشغيل؛ ويمكن استخدام min\_bytes\_to\_use\_direct\_io لهذا الغرض. يؤثر فقط على الجداول العادية، وليس على دالة الجدول file() أو محرك الجدول File().

<div id="use_page_cache_for_object_storage">
  ## use\_page\_cache\_for\_object\_storage
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "0"},{"label": "إعداد جديد لاستخدام ذاكرة التخزين المؤقت للصفحات في حيّز المستخدم مع دوال الجداول الخاصة بتخزين الكائنات"}]}]} />

استخدم ذاكرة التخزين المؤقت للصفحات في حيّز المستخدم عند القراءة من دوال الجداول الخاصة بتخزين الكائنات (s3, azure, hdfs) ومحركات الجداول (S3, Azure, HDFS).

<div id="use_page_cache_with_distributed_cache">
  ## use\_page\_cache\_with\_distributed\_cache
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.3"},{"label": "0"},{"label": "إعداد جديد"}]}]} />

استخدم ذاكرة التخزين المؤقت للصفحات في حيّز المستخدم عند استخدام distributed cache.

<div id="use_paimon_partition_pruning">
  ## use\_paimon\_partition\_pruning
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "0"},{"label": "إعداد جديد."}]}]} />

استخدم استبعاد التقسيمات لأقسام Paimon لدوال جداول Paimon

<div id="use_parquet_metadata_cache">
  ## use\_parquet\_metadata\_cache
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": "1"},{"label": "يُفعّل ذاكرة التخزين المؤقت للبيانات الوصفية لملفات Parquet."}]}]} />

إذا كان هذا الإعداد مفعّلًا، فقد يستخدم تنسيق Parquet ذاكرة التخزين المؤقت للبيانات الوصفية لملفات Parquet.

القيم الممكنة:

* 0 - معطّل
* 1 - مفعّل

<div id="use_partition_pruning">
  ## use\_partition\_pruning
</div>

**الأسماء البديلة**: `use_partition_key`

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": "1"},{"label": "إعداد جديد يتحكم في ما إذا كان MergeTree يستخدم مفتاح التقسيم لاستبعاد التقسيمات. ‏'use_partition_key' هو اسم بديل لهذا الإعداد."}]}]} />

استخدم مفتاح التقسيم لاستبعاد التقسيمات أثناء تنفيذ الاستعلام في جداول MergeTree.

القيم الممكنة:

* 0 — معطّل.
* 1 — مفعّل.

<div id="use_primary_key">
  ## use\_primary\_key
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.1"},{"label": "1"},{"label": "إعداد جديد يحدد ما إذا كان MergeTree يستخدم المفتاح الأساسي لاستبعاد الحبيبات على هذا المستوى."}]}]} />

استخدام المفتاح الأساسي لاستبعاد الحبيبات أثناء تنفيذ الاستعلام في جداول MergeTree.

القيم الممكنة:

* 0 — معطّل.
* 1 — مفعّل.

<div id="use_query_cache">
  ## use\_query\_cache
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

إذا كان هذا الإعداد مفعّلًا، فقد تستخدم استعلامات `SELECT` [ذاكرة التخزين المؤقت للاستعلامات](/ar/concepts/features/performance/caches/query-cache). ويحدّد المعاملان [enable\_reads\_from\_query\_cache](#enable_reads_from_query_cache)
و[enable\_writes\_to\_query\_cache](#enable_writes_to_query_cache) بمزيد من التفصيل كيفية استخدام ذاكرة التخزين المؤقت.

القيم الممكنة:

* 0 - معطّل
* 1 - مفعّل

<div id="use_query_condition_cache">
  ## use\_query\_condition\_cache
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.4"},{"label": "1"},{"label": "تحسين جديد"}]}, {"id": "row-2","items": [{"label": "25.3"},{"label": "0"},{"label": "إعداد جديد."}]}]} />

يُفعّل [ذاكرة التخزين المؤقت لشرط الاستعلام](/ar/concepts/features/performance/caches/query-condition-cache). تخزّن ذاكرة التخزين المؤقت نطاقات الحبيبات في أجزاء البيانات التي لا تستوفي الشرط في عبارة `WHERE`،
وتُعيد استخدام هذه المعلومات كفهرس مؤقت للاستعلامات اللاحقة.

القيم الممكنة:

* 0 - معطّل
* 1 - مُمكّن

<div id="use_reader_executor">
  ## use\_reader\_executor
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.6"},{"label": "0"},{"label": "إعداد تجريبي جديد لتوجيه عمليات القراءة عبر مسار المعالجة الجديد `ReaderExecutor` بدلًا من التعشيق القديم لمخازن القراءة المؤقتة."}]}]} />

تجريبي. وجّه عمليات القراءة عبر مسار المعالجة الجديد `ReaderExecutor` بدلًا من التعشيق القديم لمخازن القراءة المؤقتة. ويعود إلى المسار القديم في التكوينات التي لا يزال المنفّذ لا يدعمها.

<div id="use_roaring_bitmap_iceberg_positional_deletes">
  ## use\_roaring\_bitmap\_iceberg\_positional\_deletes
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "0"},{"label": "إعداد جديد"}]}]} />

استخدم roaring bitmap لعمليات الحذف حسب الموضع في Iceberg.

<div id="use_skip_indexes">
  ## use\_skip\_indexes
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

استخدام فهارس تخطي البيانات أثناء تنفيذ الاستعلامات.

القيم الممكنة:

* 0 — معطّل.
* 1 — مفعّل.

<div id="use_skip_indexes_for_disjunctions">
  ## use\_skip\_indexes\_for\_disjunctions
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "1"},{"label": "إعداد جديد"}]}]} />

يقيّم مرشحات `WHERE` التي تجمع بين شرطي `AND` و`OR` باستخدام فهارس التخطي. مثال: `WHERE A = 5 AND (B = 5 OR C = 5)`.
إذا كان هذا الإعداد معطّلًا، فستظل فهارس التخطي تُستخدم لتقييم الشروط في `WHERE`، ولكن يجب أن تتضمن فقط عبارات مربوطة بـ `AND`.

القيم الممكنة:

* 0 — مُعطّل.
* 1 — مُمكّن.

<div id="use_skip_indexes_for_top_k">
  ## use\_skip\_indexes\_for\_top\_k
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "1"},{"label": "تمكين استخدام فهارس تخطي البيانات لتصفية TopK افتراضيًا"}]}, {"id": "row-2","items": [{"label": "25.12"},{"label": "0"},{"label": "إعداد جديد."}]}]} />

تمكين استخدام فهارس تخطي البيانات لتصفية TopK.

عند التمكين، إذا كان هناك فهرس MinMax لتخطي البيانات على العمود في الاستعلام `ORDER BY <column> LIMIT n`، فسيحاول المُحسِّن استخدام فهرس MinMax لتخطي الـ حبيبات غير المرتبطة بالنتيجة النهائية. ويمكن أن يقلّل ذلك من زمن استجابة الاستعلام.

القيم الممكنة:

* 0 — معطّل.
* 1 — مفعّل.

<div id="use_skip_indexes_if_final">
  ## use\_skip\_indexes\_if\_final
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.6"},{"label": "1"},{"label": "تغيير في القيمة الافتراضية للإعداد"}]}]} />

يتحكّم هذا الإعداد في ما إذا كانت فهارس التخطي تُستخدَم عند تنفيذ استعلام باستخدام المعدِّل FINAL.

قد تستبعد فهارس التخطي صفوفًا (حبيبات) تحتوي على أحدث البيانات، ما قد يؤدي إلى نتائج غير صحيحة في استعلام يستخدم المعدِّل FINAL. عند تمكين هذا الإعداد، تُطبَّق فهارس التخطي حتى مع المعدِّل FINAL، مما قد يحسّن الأداء، ولكن مع احتمال تفويت التحديثات الأخيرة. ينبغي تمكين هذا الإعداد بالتزامن مع الإعداد use\_skip\_indexes\_if\_final\_exact\_mode (وهو مُمكَّن افتراضيًا).

القيم الممكنة:

* 0 — مُعطَّل.
* 1 — مُمكَّن.

<div id="use_skip_indexes_if_final_exact_mode">
  ## use\_skip\_indexes\_if\_final\_exact\_mode
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.6"},{"label": "1"},{"label": "تغيير في القيمة الافتراضية للإعداد"}]}, {"id": "row-2","items": [{"label": "25.5"},{"label": "0"},{"label": "استُحدِث هذا الإعداد للمساعدة في جعل استعلام FINAL يعيد نتائج صحيحة مع فهارس التخطي"}]}]} />

يتحكم هذا الإعداد في ما إذا كانت الحبيبات التي يعيدها فهرس التخطي تُوسَّع في الأجزاء الأحدث لضمان إرجاع نتائج صحيحة عند تنفيذ استعلام باستخدام المُعدِّل FINAL.

قد يؤدي استخدام فهارس التخطي إلى استبعاد الصفوف (الحبيبات) التي تحتوي على أحدث البيانات، مما قد يسبب نتائج غير صحيحة. ويمكن لهذا الإعداد ضمان إرجاع نتائج صحيحة من خلال فحص الأجزاء الأحدث المتداخلة مع النطاقات التي يعيدها فهرس التخطي. يجب تعطيل هذا الإعداد فقط إذا كانت النتائج التقريبية المستندة إلى البحث في فهرس التخطي مقبولة للتطبيق.

القيم الممكنة:

* 0 — معطّل.
* 1 — مفعّل.

<div id="use_skip_indexes_on_data_read">
  ## use\_skip\_indexes\_on\_data\_read
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "1"},{"label": "أصبح فهرس النص الآن GA"}]}, {"id": "row-2","items": [{"label": "26.1"},{"label": "1"},{"label": "مُمكّن افتراضيًا"}]}, {"id": "row-3","items": [{"label": "25.9"},{"label": "0"},{"label": "إعداد جديد"}]}]} />

تمكين استخدام فهارس تخطي البيانات أثناء قراءة البيانات.

عند التمكين، تُقيَّم فهارس التخطي ديناميكيًا عند قراءة كل granule من البيانات، بدلًا من تحليلها مسبقًا قبل بدء تنفيذ الاستعلام. يمكن أن يقلل ذلك من زمن بدء الاستعلام.

القيم الممكنة:

* 0 — معطّل.
* 1 — مُمكّن.

<div id="use_statistics">
  ## use\_statistics
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.1"},{"label": "1"},{"label": "يتم تفعيل هذا التحسين افتراضيًا."}]}]} />

/// يُفضَّل على 'allow\_statistics\_optimize' حفاظًا على الاتساق مع 'use\_primary\_key' و 'use\_skip\_indexes'
يسمح باستخدام الإحصاءات لتحسين الاستعلامات

<div id="use_statistics_cache">
  ## use\_statistics\_cache
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "1"},{"label": "تمكين ذاكرة التخزين المؤقت للإحصاءات"}]}, {"id": "row-2","items": [{"label": "25.11"},{"label": "0"},{"label": "إعداد جديد"}]}]} />

استخدم ذاكرة التخزين المؤقت للإحصاءات في الاستعلام لتجنّب العبء الإضافي الناتج عن تحميل إحصاءات جميع الأجزاء

<div id="use_statistics_for_part_pruning">
  ## use\_statistics\_for\_part\_pruning
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "1"},{"label": "إعداد جديد لاستخدام الإحصاءات لاستبعاد الأجزاء أثناء تنفيذ الاستعلام."}]}]} />

استخدام الإحصاءات لاستبعاد الأجزاء أثناء تنفيذ الاستعلام.

عند التمكين، سيعتمد استبعاد الأجزاء في استعلامات SELECT على إحصاءات الأعمدة (مثل إحصاءات MinMax) لاستبعاد الأجزاء التي لا يمكن أن تحتوي على بيانات مطابقة قبل قراءة أي بيانات.

القيم الممكنة:

* 0 — معطّل.
* 1 — مفعّل.

<div id="use_strict_insert_block_limits">
  ## use\_strict\_insert\_block\_limits
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "0"},{"label": "إعداد جديد لاستخدام الحدَّين الأدنى والأقصى الصارمين لكتلة الإدراج في عمليات insert. عندما يكون min < max، تكون للحدود القصوى الأولوية."}]}]} />

عند التمكين، يفرض هذا الإعداد بدقة حدَّي الحجم الأدنى والأقصى لكتلة الإدراج.

يتم إصدار كتلة عندما:

* الحدود الدنيا (AND): يتم بلوغ كلٍّ من min\_insert\_block\_size\_rows و min\_insert\_block\_size\_bytes.
* الحدود القصوى (OR): يتم بلوغ أيٍّ من max\_insert\_block\_size\_rows أو max\_insert\_block\_size\_bytes.

عند التعطيل، يتم إصدار كتلة عندما:

* الحدود الدنيا (OR): يتم بلوغ min\_insert\_block\_size\_rows أو min\_insert\_block\_size\_bytes.

**ملاحظة**: إذا كانت إعدادات max أصغر من إعدادات min، فستكون للحدود القصوى الأولوية، وستُصدَر الكتل قبل بلوغ الحدود الدنيا.

**ملاحظة**: يُعطَّل هذا الإعداد تلقائيًا لعمليات async inserts، لأن async inserts تُرفِق tokens لإزالة التكرار لكل entry، وهو ما لا يتوافق مع تقسيم الكتل المطلوب لفرض الحدود الصارمة.

مُعطَّل افتراضيًا.

<div id="use_structure_from_insertion_table_in_table_functions">
  ## use\_structure\_from\_insertion\_table\_in\_table\_functions
</div>

<SettingsInfoBlock type="UInt64" default_value="2" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "22.11"},{"label": "2"},{"label": "تحسين استخدام البنية المستمدة من جدول الإدراج في دوال الجداول"}]}]} />

استخدم البنية المستمدة من جدول الإدراج بدلًا من استنتاج المخطط من البيانات. القيم الممكنة: 0 - معطّل، 1 - مُمكّن، 2 - تلقائي

<div id="use_text_index_header_cache">
  ## use\_text\_index\_header\_cache
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.11"},{"label": "0"},{"label": "إعداد جديد"}]}]} />

ما إذا كان سيتم استخدام ذاكرة تخزين مؤقتة لترويسة الفهرس النصي بعد فك تسلسلها.
يمكن أن يؤدي استخدام ذاكرة التخزين المؤقتة لترويسة الفهرس النصي إلى تقليل زمن الاستجابة بشكل كبير وزيادة معدل النقل عند العمل مع عدد كبير من استعلامات الفهرس النصي.

<div id="use_text_index_like_evaluation_by_dictionary_scan">
  ## use\_text\_index\_like\_evaluation\_by\_dictionary\_scan
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "1"},{"label": "إعداد جديد"}]}]} />

تمكين تقييم استعلامات LIKE/ILIKE عبر فحص قاموس الفهرس النصي المعكوس.

<div id="use_text_index_postings_cache">
  ## use\_text\_index\_postings\_cache
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.11"},{"label": "0"},{"label": "إعداد جديد"}]}]} />

ما إذا كان يجب استخدام ذاكرة تخزين مؤقت لقوائم النشر الخاصة بالفهرس النصي بعد فك تسلسلها.
يمكن أن يؤدي استخدام ذاكرة التخزين المؤقت لقوائم النشر الخاصة بالفهرس النصي إلى تقليل زمن الاستجابة بشكل كبير وزيادة معدل النقل عند العمل مع عدد كبير من استعلامات الفهرس النصي.

<div id="use_text_index_tokens_cache">
  ## use\_text\_index\_tokens\_cache
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": "0"},{"label": "إعداد جديد"}]}]} />

ما إذا كان سيتم استخدام ذاكرة تخزين مؤقت لبيانات تعريف رموز الفهرس النصي بعد فك التسلسل.
يمكن أن يؤدي استخدام ذاكرة التخزين المؤقت لرموز الفهرس النصي إلى تقليل زمن الاستجابة بشكل كبير وزيادة معدل النقل عند التعامل مع عدد كبير من استعلامات الفهرس النصي.

<div id="use_top_k_dynamic_filtering">
  ## use\_top\_k\_dynamic\_filtering
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "1"},{"label": "تمكين تحسين التصفية الديناميكية لاستعلامات TopK افتراضيًا"}]}, {"id": "row-2","items": [{"label": "25.12"},{"label": "0"},{"label": "إعداد جديد."}]}]} />

يُمكّن تحسين التصفية الديناميكية عند تنفيذ استعلام `ORDER BY <column> LIMIT n`.

عند تمكينه، سيحاول منفّذ الاستعلام تخطي الحبيبات والصفوف التي لن تكون ضمن صفوف `top N` النهائية في مجموعة النتائج. هذا التحسين ديناميكي بطبيعته، وتعتمد تحسينات زمن الاستجابة على توزيع البيانات ووجود شروط ترشيح أخرى في الاستعلام.

القيم الممكنة:

* 0 — معطّل.
* 1 — مفعّل.

<div id="use_top_k_dynamic_filtering_for_variable_length_types">
  ## use\_top\_k\_dynamic\_filtering\_for\_variable\_length\_types
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "0"},{"label": "يُعطِّل `use_top_k_dynamic_filtering` افتراضيًا لأعمدة الفرز ذات الأنواع متغيرة الطول (مثل `String`)؛ وكان السلوك السابق يطبّق هذا التحسين دون شروط، وما يزال محفوظًا ضمن `compatibility`."}]}]} />

يسمح لـ `use_top_k_dynamic_filtering` بالتطبيق عندما يكون عمود الفرز من نوع بيانات متغير الطول (مثل `String` و`Array` و`Map` و`Tuple` الذي يحتوي على عناصر متغيرة الطول).

في هذه الأنواع، قد تفوق تكلفة مقارنة العتبة لكل صف، التي ينفذها المرشح الديناميكي، مقدار التوفير الذي يحققه عندما تكون القيمة الدنيا المعجمية للعمود هي السائدة (مثل السلاسل الفارغة في معظم الحالات) ولا يمكن تخطي سوى عدد قليل من الحبيبات. في هذه الحالة، تسيء التصفية الديناميكية إلى زمن استجابة الاستعلام بدلًا من تحسينه.

عندما تكون قيمة هذا الإعداد `0`، يقتصر التصفية الديناميكية على الأعمدة التي تكون لقيمها سعة قصوى ثابتة في الذاكرة (الأعداد، و`Date`، و`DateTime`، و`FixedString`، و`Enum`، و`Nullable` لهذه الأنواع، و`Tuple` لهذه الأنواع). وعند ضبطه على `1`، يُطبَّق التصفية الديناميكية على الأنواع متغيرة الطول أيضًا.

القيم الممكنة:

* 0 — معطّل.
* 1 — مفعّل.

<div id="use_uncompressed_cache">
  ## use\_uncompressed\_cache
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

ما إذا كان سيتم استخدام ذاكرة التخزين المؤقت للكتل غير المضغوطة. يقبل 0 أو 1. القيمة الافتراضية هي 0 (مُعطّل).
يمكن أن يؤدي استخدام ذاكرة التخزين المؤقت غير المضغوطة (فقط للجداول في عائلة MergeTree) إلى تقليل زمن الاستجابة بشكل كبير وزيادة معدل النقل عند العمل مع عدد كبير من الاستعلامات القصيرة. فعِّل هذا الإعداد للمستخدمين الذين يرسلون طلبات قصيرة ومتكررة. انتبه أيضًا إلى مَعلمة التهيئة [uncompressed\_cache\_size](/ar/reference/settings/server-settings/settings#uncompressed_cache_size) (تُضبط فقط في ملف الإعدادات) — وهي حجم كتل ذاكرة التخزين المؤقت غير المضغوطة. تبلغ قيمتها الافتراضية 8 GiB. وتُملأ ذاكرة التخزين المؤقت غير المضغوطة حسب الحاجة، كما تُحذف تلقائيًا البيانات الأقل استخدامًا.

بالنسبة إلى الاستعلامات التي تقرأ حجمًا كبيرًا نسبيًا من البيانات (مليون صف أو أكثر)، تُعطَّل ذاكرة التخزين المؤقت غير المضغوطة تلقائيًا لتوفير المساحة للاستعلامات الصغيرة فعلًا. وهذا يعني أنه يمكنك إبقاء الإعداد 'use\_uncompressed\_cache' مضبوطًا دائمًا على 1.

<div id="use_variant_as_common_type">
  ## use\_variant\_as\_common\_type
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.1"},{"label": "1"},{"label": "يحسّن سهولة الاستخدام."}]}, {"id": "row-2","items": [{"label": "24.1"},{"label": "0"},{"label": "يسمح باستخدام `Variant` كنوع ناتج في الدالتين if/multiIf إذا لم يكن هناك نوع مشترك"}]}]} />

يسمح باستخدام النوع `Variant` كنوع ناتج لدوال [if](/ar/reference/functions/regular-functions/conditional-functions#if)/[multiIf](/ar/reference/functions/regular-functions/conditional-functions#multiIf)/[array](/ar/reference/functions/regular-functions/array-functions)/[map](/ar/reference/functions/regular-functions/tuple-map-functions) عندما لا يوجد نوع مشترك لأنواع الوسائط.

مثال:

```sql theme={null}
SET use_variant_as_common_type = 1;
SELECT toTypeName(if(number % 2, number, range(number))) as variant_type FROM numbers(1);
SELECT if(number % 2, number, range(number)) as variant FROM numbers(5);
```

```text theme={null}
┌─variant_type───────────────────┐
│ Variant(Array(UInt64), UInt64) │
└────────────────────────────────┘
┌─variant───┐
│ []        │
│ 1         │
│ [0,1]     │
│ 3         │
│ [0,1,2,3] │
└───────────┘
```

```sql theme={null}
SET use_variant_as_common_type = 1;
SELECT toTypeName(multiIf((number % 4) = 0, 42, (number % 4) = 1, [1, 2, 3], (number % 4) = 2, 'Hello, World!', NULL)) AS variant_type FROM numbers(1);
SELECT multiIf((number % 4) = 0, 42, (number % 4) = 1, [1, 2, 3], (number % 4) = 2, 'Hello, World!', NULL) AS variant FROM numbers(4);
```

```text theme={null}
─variant_type─────────────────────────┐
│ Variant(Array(UInt8), String, UInt8) │
└──────────────────────────────────────┘

┌─variant───────┐
│ 42            │
│ [1,2,3]       │
│ Hello, World! │
│ ᴺᵁᴸᴸ          │
└───────────────┘
```

```sql theme={null}
SET use_variant_as_common_type = 1;
SELECT toTypeName(array(range(number), number, 'str_' || toString(number))) as array_of_variants_type from numbers(1);
SELECT array(range(number), number, 'str_' || toString(number)) as array_of_variants FROM numbers(3);
```

```text theme={null}
┌─array_of_variants_type────────────────────────┐
│ Array(Variant(Array(UInt64), String, UInt64)) │
└───────────────────────────────────────────────┘

┌─array_of_variants─┐
│ [[],0,'str_0']    │
│ [[0],1,'str_1']   │
│ [[0,1],2,'str_2'] │
└───────────────────┘
```

```sql theme={null}
SET use_variant_as_common_type = 1;
SELECT toTypeName(map('a', range(number), 'b', number, 'c', 'str_' || toString(number))) as map_of_variants_type from numbers(1);
SELECT map('a', range(number), 'b', number, 'c', 'str_' || toString(number)) as map_of_variants FROM numbers(3);
```

```text theme={null}
┌─map_of_variants_type────────────────────────────────┐
│ Map(String, Variant(Array(UInt64), String, UInt64)) │
└─────────────────────────────────────────────────────┘

┌─map_of_variants───────────────┐
│ {'a':[],'b':0,'c':'str_0'}    │
│ {'a':[0],'b':1,'c':'str_1'}   │
│ {'a':[0,1],'b':2,'c':'str_2'} │
└───────────────────────────────┘
```

<div id="use_variant_default_implementation_for_comparisons">
  ## use\_variant\_default\_implementation\_for\_comparisons
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.1"},{"label": "1"},{"label": "تمكين التنفيذ الافتراضي للنوع Variant في دوال المقارنة"}]}]} />

يُمكّن أو يعطّل التنفيذ الافتراضي للنوع Variant في دوال المقارنة.

<div id="use_with_fill_by_sorting_prefix">
  ## use\_with\_fill\_by\_sorting\_prefix
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "23.5"},{"label": "1"},{"label": "الأعمدة التي تسبق أعمدة WITH FILL في جملة ORDER BY تُشكّل بادئة الفرز. وتُملأ الصفوف ذات القيم المختلفة في بادئة الفرز بشكل مستقل"}]}]} />

الأعمدة التي تسبق أعمدة WITH FILL في جملة ORDER BY تُشكّل بادئة الفرز. وتُملأ الصفوف ذات القيم المختلفة في بادئة الفرز بشكل مستقل

<div id="validate_enum_literals_in_operators">
  ## validate\_enum\_literals\_in\_operators
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "0"},{"label": "إعداد جديد"}]}]} />

إذا كان مفعّلًا، يتم التحقق من القيم الحرفية لـ enum في عوامل التشغيل مثل `IN` و`NOT IN` و`==` و`!=` مقابل نوع enum، ويُطرح استثناء إذا لم تكن القيمة الحرفية قيمة enum صالحة.

<div id="validate_mutation_query">
  ## validate\_mutation\_query
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.11"},{"label": "1"},{"label": "إعداد جديد للتحقق من استعلامات التعديل افتراضيًا."}]}]} />

تحقّق من استعلامات التعديل قبل قبولها. تُنفَّذ عمليات التعديل في الخلفية، وسيؤدي تشغيل استعلام غير صالح إلى تعلّق عمليات التعديل، ما يتطلب تدخّلًا يدويًا.

لا تغيّر هذا الإعداد إلا إذا واجهت خللًا غير متوافق مع الإصدارات السابقة.

<div id="validate_polygons">
  ## validate\_polygons
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "20.4"},{"label": "1"},{"label": "إلقاء استثناء إذا كان المضلع غير صالح في الدالة pointInPolygon افتراضيًا بدلًا من إرجاع نتائج قد تكون غير صحيحة"}]}]} />

يُمكّن أو يعطّل إلقاء استثناء في الدالة [pointInPolygon](/ar/reference/functions/regular-functions/geo/coordinates#pointinpolygon) إذا كان المضلع متقاطعًا مع نفسه أو مماسًا لنفسه.

القيم الممكنة:

* 0 — إلقاء الاستثناء معطّل. تقبل `pointInPolygon` المضلعات غير الصالحة وتُرجع لها نتائج قد تكون غير صحيحة.
* 1 — إلقاء الاستثناء مفعّل.

<div id="variant_throw_on_type_mismatch">
  ## variant\_throw\_on\_type\_mismatch
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "1"},{"label": "إعداد جديد للتحكم في سلوك عدم تطابق الأنواع في آلية التنفيذ الافتراضية لـ Variant"}]}]} />

عند تطبيق دالة على عمود [Variant](/ar/reference/data-types/variant) باستخدام آلية التنفيذ الافتراضية،
يحدّد هذا الإعداد ما يحدث للصفوف التي يكون نوعها الفعلي غير متوافق مع الدالة:

* `true` (الافتراضي) — إثارة استثناء.
* `false` — إرجاع `NULL` لهذه الصفوف بدلاً من ذلك.

<div id="vector_search_filter_strategy">
  ## vector\_search\_filter\_strategy
</div>

<SettingsInfoBlock type="VectorSearchFilterStrategy" default_value="auto" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "auto"},{"label": "إعداد جديد"}]}]} />

إذا كان استعلام vector search يتضمن عبارة WHERE، فإن هذا الإعداد يحدد ما إذا كان سيتم تقييمها أولًا (pre-filtering) أو ما إذا كان سيتم التحقق من vector similarity index أولًا (post-filtering). القيم الممكنة:

* 'auto' - post-filtering (قد تتغير الدلالات الدقيقة في المستقبل).
* 'postfilter' - استخدم vector similarity index لتحديد أقرب الجيران، ثم طبّق المرشحات الأخرى
* 'prefilter' - قيّم المرشحات الأخرى أولًا، ثم نفّذ بحث brute-force لتحديد الجيران.

<div id="vector_search_index_fetch_multiplier">
  ## vector\_search\_index\_fetch\_multiplier
</div>

**الأسماء البديلة**: `vector_search_postfilter_multiplier`

<SettingsInfoBlock type="Float" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "1"},{"label": "اسم بديل للإعداد 'vector_search_postfilter_multiplier'"}]}]} />

يُضرَب عدد أقرب الجيران المُجلَبين من فهرس تشابه المتجهات في هذا الرقم. لا يُطبَّق هذا إلا عند التصفية اللاحقة مع predicates أخرى، أو إذا كان الإعداد 'vector\_search\_with\_rescoring = 1'.

<div id="vector_search_with_rescoring">
  ## vector\_search\_with\_rescoring
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "0"},{"label": "إعداد جديد."}]}]} />

يحدّد ما إذا كان ClickHouse يُجري إعادة التقييم للاستعلامات التي تستخدم فهرس تشابه المتجهات.
من دون إعادة التقييم، يعيد فهرس تشابه المتجهات الصفوف التي تحتوي على أفضل المطابقات مباشرةً.
مع إعادة التقييم، تُوسَّع الصفوف إلى مستوى الحبيبة وتُفحَص جميع الصفوف داخل الحبيبة مرةً أخرى.
في معظم الحالات، لا تُحسِّن إعادة التقييم الدقة إلا بشكل طفيف، لكنها تُضعف أداء استعلامات البحث المتجهي بشكل ملحوظ.
ملاحظة: قد يلجأ الاستعلام الذي يُشغَّل من دون إعادة التقييم ومع تمكين النسخ المتماثلة المتوازية إلى إعادة التقييم.

<div id="wait_changes_become_visible_after_commit_mode">
  ## وضع\_انتظار\_ظهور\_التغييرات\_بعد\_الالتزام
</div>

<SettingsInfoBlock type="TransactionsWaitCSNMode" default_value="wait_unknown" />

انتظر حتى تصبح التغييرات المُلتزَم بها مرئية فعليًا في أحدث لقطة

<div id="wait_for_async_insert">
  ## wait\_for\_async\_insert
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

إذا كانت القيمة true، فانتظر معالجة الإدراج غير المتزامن

<div id="wait_for_async_insert_timeout">
  ## wait\_for\_async\_insert\_timeout
</div>

<SettingsInfoBlock type="ثوانٍ" default_value="120" />

مهلة الانتظار لمعالجة عملية الإدراج غير المتزامن

<div id="wait_for_part_commit_in_dependent_materialized_views">
  ## wait\_for\_part\_commit\_in\_dependent\_materialized\_views
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.6"},{"label": "0"},{"label": "إعداد جديد"}]}]} />

يتحكّم هذا الإعداد في ما إذا كانت كل وجهة sink تُثبّت الجزء الذي كتبته للتو قبل تشغيل سلسلة العروض المادية التابعة لها، بحيث تتمكّن السلسلة التي تعيد القراءة من المصدر عبر `JOIN` من رؤية الجزء الذي كتبته تلك الوجهة.

هذا الضمان يقتصر على كل مثيل من مثيلات الـ sink على حدة — وقد لا تكون الأجزاء التي كتبتها خيوط sink الأخرى ضمن عملية `INSERT` نفسها مرئية بعد. ولا يوفّر هذا الإعداد ترتيبًا لتثبيت العمليات عبر الخيوط.

ليس لهذا أي تأثير على عمليات الإدراج في الجداول التي لا تحتوي على عروض مادية تابعة.

<div id="wait_for_window_view_fire_signal_timeout">
  ## wait\_for\_window\_view\_fire\_signal\_timeout
</div>

<SettingsInfoBlock type="ثوانٍ" default_value="10" />

مهلة انتظار إشارة إطلاق window view أثناء معالجة وقت الحدث

<div id="webassembly_udf_max_fuel">
  ## webassembly\_udf\_max\_fuel
</div>

<SettingsInfoBlock type="UInt64" default_value="100000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": "100000"},{"label": "إعداد جديد للحدّ من تعليمات CPU ‏(fuel) لكل عملية تنفيذ لمثيل WebAssembly UDF."}]}]} />

حدّ الوقود لكل عملية تنفيذ لمثيل WebAssembly UDF. تستهلك كل تعليمة WebAssembly قدرًا من الوقود. تُضرب القيمة في 1024 قبل تمريرها إلى بيئة التشغيل، لذا فإن `webassembly_udf_max_fuel = 1` يعادل تقريبًا 1024 وحدة وقود. اضبطها على 0 لإلغاء أي حدّ. ينطبق ذلك فقط على الدوال التي يكون فيها الإعداد الخاص بكل دالة `webassembly_udf_enable_fuel` مضبوطًا على true، وهي القيمة الافتراضية.

<div id="webassembly_udf_max_input_block_size">
  ## webassembly\_udf\_max\_input\_block\_size
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": "0"},{"label": "إعداد جديد لتقييد حجم كتلة الإدخال لوظائف WebAssembly UDF."}]}]} />

الحد الأقصى لعدد الصفوف التي يتم تمريرها إلى WebAssembly UDF ضمن كتلة واحدة. اضبطه على 0 لمعالجة جميع الصفوف دفعة واحدة.

<div id="webassembly_udf_max_instances">
  ## webassembly\_udf\_max\_instances
</div>

<SettingsInfoBlock type="UInt64" default_value="32" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": "32"},{"label": "إعداد جديد يحدّ من عدد مثيلات WebAssembly UDF التي يمكن تشغيلها بالتوازي لكل دالة."}]}]} />

الحد الأقصى لعدد مثيلات WebAssembly UDF التي يمكن تشغيلها بالتوازي لكل دالة.

<div id="webassembly_udf_max_memory">
  ## webassembly\_udf\_max\_memory
</div>

<SettingsInfoBlock type="UInt64" default_value="134217728" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": "134217728"},{"label": "إعداد جديد يحدّ من الذاكرة لكل مثيل من WebAssembly UDF."}]}]} />

حد الذاكرة بالبايت لكل مثيل من WebAssembly UDF.

<div id="window_view_clean_interval">
  ## window\_view\_clean\_interval
</div>

<SettingsInfoBlock type="ثوانٍ" default_value="60" />

الفاصل الزمني لتنظيف window view، بالثواني، لتحرير البيانات القديمة.

<div id="window_view_heartbeat_interval">
  ## window\_view\_heartbeat\_interval
</div>

<SettingsInfoBlock type="ثوانٍ" default_value="15" />

الفاصل الزمني لنبضات الحياة، بالثواني، للإشارة إلى أن استعلام watch ما يزال قيد التشغيل.

<div id="workload">
  ## workload
</div>

<SettingsInfoBlock type="String" default_value="default" />

اسم workload المُستخدم للوصول إلى الموارد

<div id="write_full_path_in_iceberg_metadata">
  ## write\_full\_path\_in\_iceberg\_metadata
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "0"},{"label": "إعداد جديد."}]}]} />

يكتب المسارات الكاملة (بما في ذلك s3://) في ملفات البيانات الوصفية لـ Iceberg.

<div id="write_through_distributed_cache">
  ## write\_through\_distributed\_cache
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.10"},{"label": "0"},{"label": "إعداد لـ ClickHouse Cloud"}]}]} />

لا يكون لهذا الإعداد تأثير إلا في ClickHouse Cloud. يتيح الكتابة إلى distributed cache (كما ستتولى distributed cache أيضًا الكتابة إلى S3)

<div id="write_through_distributed_cache_buffer_size">
  ## write\_through\_distributed\_cache\_buffer\_size
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.7"},{"label": "0"},{"label": "إعداد جديد في Cloud"}]}]} />

لا يسري هذا إلا في ClickHouse Cloud. يحدد حجم المخزن المؤقت لآلية write-through في distributed cache. إذا كانت القيمة 0، فسيُستخدم حجم المخزن المؤقت الذي كان سيُستخدم في حال عدم وجود distributed cache.

<div id="zstd_window_log_max">
  ## zstd\_window\_log\_max
</div>

<SettingsInfoBlock type="Int64" default_value="0" />

يسمح بتحديد الحد الأقصى لـ window log في ZSTD (لن يُستخدم مع عائلة MergeTree)
