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

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

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

export const PrivatePreviewBadge = () => {
  return <div className="privatePreviewBadge">
            <div className="privatePreviewIcon">
            <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
                <path d="M5.33301 6.66667V4.66667V4.66667C5.33301 3.194 6.52701 2 7.99967 2V2C9.47234 2 10.6663 3.194 10.6663 4.66667V4.66667V6.66667" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path d="M8.00033 9.33337V11.3334" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path fillRule="evenodd" clipRule="evenodd" d="M11.333 14H4.66634C3.92967 14 3.33301 13.4033 3.33301 12.6666V7.99996C3.33301 7.26329 3.92967 6.66663 4.66634 6.66663H11.333C12.0697 6.66663 12.6663 7.26329 12.6663 7.99996V12.6666C12.6663 13.4033 12.0697 14 11.333 14Z" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
            </svg>
        </div>
            {'معاينة خاصة'}
        </div>;
};

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}>
                <span>Beta</span>
            </a>;
  }
  return <a href="https://clickhouse.com/docs/reference/settings/beta-and-experimental-features#beta-features" className="betaBadge">
            <span>ميزة Beta</span>
        </a>;
};

export const ExperimentalBadge = () => {
  return <a href="https://clickhouse.com/docs/reference/settings/beta-and-experimental-features#experimental-features" 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>
            ميزة تجريبية
        </a>;
};

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

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

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

## enable\_adaptive\_aggregator

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.8"},{"label": "1"},{"label": "إعداد جديد لتمكين تجميع `GROUP BY` التكيفي، الذي يجمّد جدول التجزئة المحلي لكل خيط عند بلوغه `adaptive_aggregator_freeze_threshold` مفتاحًا، بحيث تستمر المفاتيح المتكررة في التجميع ضمن الجداول المحلية الصغيرة، بينما تُوجَّه المفاتيح النادرة وفق تجزئتها إلى قوائم انتظار لكل bucket وتُجمَّع مرة واحدة فقط ضمن الدمج المتوازي للـbucket؛ وبذلك تُخزَّن المفاتيح النادرة وتُعالج مرة واحدة بدلًا من مرة لكل خيط."}]}]} />

يُفعّل خوارزمية `GROUP BY` التكيفية: يُجمّع كل خيط البيانات في جدول التجزئة المحلي الخاص به حتى يبلغ `adaptive_aggregator_freeze_threshold` مفتاحًا (أو `adaptive_aggregator_freeze_threshold_bytes` من الذاكرة)، ثم يُجمَّد الجدول، بحيث تستمر صفوف المفاتيح المرصودة مسبقًا (المتكررة) في تحديثه مباشرةً، بينما تُوجَّه المفاتيح الجديدة (النادرة) وفق تجزئتها إلى قوائم انتظار لكل bucket وتُجمَّع مرة واحدة فقط ضمن الدمج المتوازي للـbucket. تبقى المفاتيح المتكررة في جداول صغيرة مقيمة في ذاكرة التخزين المؤقت، بينما تُخزَّن المفاتيح النادرة وتُعالج مرة واحدة بدلًا من مرة لكل خيط.

تُراعى إعدادات التجميع الخارجي (`max_bytes_before_external_group_by`، `max_bytes_ratio_before_external_group_by`): عند تجاوز العتبة، تُفرَّغ قوائم الانتظار مبكرًا في الجدول المشترك، وإذا لم يكن ذلك كافيًا للعودة إلى ما دون العتبة، يُرحَّل الجدول المشترك إلى القرص باستخدام التجميع الخارجي العادي.

## enable\_adaptive\_memory\_spill\_scheduler

<ExperimentalBadge />

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

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

يحفّز المعالج على تفريغ البيانات إلى التخزين الخارجي بشكل تكيّفي. يتوفر حاليًا دعم عمليات hash join القابلة للتفريغ، سواء
`grace_hash` أو المسار التكيّفي `hash` / `parallel_hash`.

## enable\_add\_distinct\_to\_in\_subqueries

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "0"},{"label": "إعداد جديد لتقليل حجم الجداول المؤقتة المنقولة للاستعلامات الفرعية `IN` الموزعة."}]}]} />

فعِّل `DISTINCT` في الاستعلامات الفرعية `IN`. هذا إعداد للموازنة بين الفوائد والتكلفة: إذ يمكن أن يؤدي تفعيله إلى تقليل حجم الجداول المؤقتة المنقولة للاستعلامات الفرعية `IN` الموزعة بشكل كبير، وتسريع نقل البيانات بين المقاطع بشكل ملحوظ، من خلال ضمان إرسال القيم الفريدة فقط.
ومع ذلك، فإن تفعيل هذا الإعداد يضيف عبئًا إضافيًا على عمليات الدمج في كل عقدة، إذ يجب تنفيذ إزالة التكرار (`DISTINCT`). استخدم هذا الإعداد عندما يكون نقل البيانات عبر الشبكة هو عنق الزجاجة وتكون الكلفة الإضافية للدمج مقبولة.

## enable\_alp\_codec

<BetaBadge />

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.8"},{"label": "0"},{"label": "إعداد جديد لتمكين برنامج الترميز التجريبي للضغط `ALP` بشكل منفصل، من دون `allow_experimental_codecs`."}]}]} />

يُمكّن برنامج الترميز لضغط `ALP`.

## enable\_automatic\_decision\_for\_merging\_across\_partitions\_for\_final

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

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

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

تُستثنى أعمدة المفاتيح ذات الفاصلة العائمة من هذا الاستنتاج، إذ إن مُقارِن `FINAL` أقل دقة من تطابق القيم
بالنسبة إلى `Float32` و`Float64` و`BFloat16`: فالقيمة `-0.0` تُعدّ مساوية لـ `0.0`، وكل نمط بتات لـ `NaN`
يُعدّ مساويًا لأي نمط آخر. أما تعبير التقسيم فيميّز بين تلك القيم تمييزًا دقيقًا، ولذلك قد تقع الصفوف التي يعاملها المُقارِن
كمفتاح واحد في تقسيمات مختلفة، وعندها سيؤدي تخطّي الدمج عبر التقسيمات إلى إرجاعها جميعًا.
وينطبق هذا الاستثناء أيضًا عندما يكون النوع العائم مُتداخلًا داخل عمود مفتاح، مثل `Tuple(Float64, UInt8)`
أو `Array(Float64)`.

## enable\_cascades\_optimizer

<ExperimentalBadge />

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

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

فعّل مُحسِّن Cascades المعتمد على التكلفة لخطط الاستعلامات الموزعة.
لا يسري مفعوله إلا عند استخدام `make_distributed_plan = 1`: فهذا الإعداد وحده لا يغيّر تخطيط الاستعلامات على عقدة واحدة.

## enable\_early\_constant\_folding

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

تمكين تحسين الاستعلام، حيث نحلل نتائج الدوال والاستعلامات الفرعية ونعيد كتابة الاستعلام إذا كانت تتضمن ثوابت

## enable\_extended\_results\_for\_datetime\_functions

<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` |

## enable\_full\_text\_index

**الأسماء البديلة**: `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، فسيُسمح باستخدام فهرس النص الكامل.

## enable\_function\_early\_short\_circuit

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

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

فعّل طيّ الثوابت مبكرًا باستخدام التقييم قصير الدائرة لـ `and` و`or` أثناء تحليل الاستعلام.
عند تفعيله، تُحلَّل الفروع غير القابلة للوصول والمؤهلة في الاستعلامات الفرعية القياسية للحفاظ على أنواعها والتحقق من دلالات الاستعلام، لكنها لا تُنفَّذ. ويعود التحسين إلى التحليل العادي عندما تكون قيمة العددية القياسية أو قيم وقت التشغيل مطلوبة.

## enable\_funnel\_functions

<ExperimentalBadge />

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

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.9"},{"label": "0"},{"label": "أُضيف اسم بديل للإعداد `allow_experimental_funnel_functions`."}]}]} />

تمكين الدوال الخاصة بتحليل مسار التحويل.

## enable\_global\_with\_statement

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "21.2"},{"label": "1"},{"label": "تمرير عبارات WITH إلى استعلامات UNION وجميع الاستعلامات الفرعية افتراضيًا"}]}]} />

تمرير عبارات WITH إلى استعلامات UNION وجميع الاستعلامات الفرعية

## enable\_group\_by\_top\_k\_optimization

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.8"},{"label": "1"},{"label": "إعداد جديد للتحكم في تحسين تصفية TopK أثناء التجميع في استعلامات `GROUP BY key ORDER BY key LIMIT N`."}]}]} />

فعّل تحسين تصفية TopK أثناء التجميع في استعلامات `GROUP BY keys ORDER BY <prefix of keys> LIMIT K`، وكذلك في استعلامات `GROUP BY keys LIMIT K` التي لا تتضمن `ORDER BY` (إذ تكون أي مجموعات `K` نتيجة صالحة، لذا يُنشأ فرز على جميع المفاتيح).

عند تفعيله، يحتفظ المُجمِّع بكومة محدودة تضم أفضل `K` مفاتيح ظهرت حتى الآن، ويتخطى إدراج صفوف جديدة في جدول التجزئة عندما لا يمكن لمفتاح التجميع الخاص بها أن يندرج ضمن النتيجة النهائية. يؤدي ذلك إلى تجنب تجميع الصفوف التي سيتخلص منها `ORDER BY ... LIMIT` اللاحق. وعندما ترتب الكومة مفتاح `GROUP BY` بالكامل، فإنها تحذف أيضًا المجموعات المُزالة من جدول التجزئة الوسيط، مما يحدّ حجمه بـ `LIMIT` بدلًا من عدد المفاتيح المميزة. أما عندما يغطي `ORDER BY` بادئة حقيقية فقط من مفاتيح `GROUP BY`، فلا يمكن للترتيب تحديد مجموعة كاملة، لذا لا يُطبّق سوى تخطي الصفوف: يحتفظ جدول التجزئة بكل مجموعة مقبولة، وقد يستمر في النمو بحسب عدد عناصر أعمدة المفاتيح المتبقية.

يُعطّل التحسين عندما يتجاوز `LIMIT` المطلوب [query\_plan\_max\_limit\_for\_top\_k\_optimization](/ar/reference/settings/session-settings/query-plan#query_plan_max_limit_for_top_k_optimization) أو الحد الأقصى الصارم البالغ `100000`، لأن تكلفة الذاكرة ووحدة المعالجة المركزية للكومة تزداد بزيادة `LIMIT` المطلوب.

يُتخطى التحسين في أشكال الاستعلامات التي قد يؤدي فيها حذف المجموعات إلى تغيير النتيجة، بما في ذلك `WITH TOTALS` و`HAVING` و`QUALIFY` ودوال النافذة و`ROLLUP`/`CUBE`/`GROUPING SETS` و`LIMIT WITH TIES`، ووجود `COLLATE` على أي من مفاتيح `GROUP BY` المطابقة (أما `COLLATE` على عمود `ORDER BY` لاحق بعد بادئة المفتاح الكاملة فلا يمكن أن يؤثر في المجموعات المؤهلة، لذا لا يعطّل التحسين)، و`ORDER BY` على قيمة مجمّعة أو على أي عنصر ليس بادئة أولية من مفاتيح `GROUP BY`، وعند تعيين `max_rows_to_group_by` أو `exact_rows_before_limit`.

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

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

## enable\_hash\_join\_row\_store

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.9"},{"label": "1"},{"label": "إعداد جديد لتمكين تحويل حمولة hash join إلى تخطيط صفّي."}]}]} />

تمكين تحويل حمولة hash join إلى تخطيط صفّي.

## enable\_hdfs\_pread

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

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

يُفعِّل أو يُعطِّل `pread` لملفات HDFS. افتراضيًا، يُستخدَم `hdfsPread`. وإذا تم تعطيله، فسيُستخدَم `hdfsRead` و`hdfsSeek` لقراءة ملفات HDFS.

## enable\_http\_compression

<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 — مفعّل.

## enable\_identifier\_resolve\_cache

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.6"},{"label": "1"},{"label": "إعداد جديد للتحكم في ذاكرة التخزين المؤقت الخاصة بحلّ المعرّفات في محلل الاستعلامات"}]}]} />

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

## enable\_job\_stack\_trace

<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": "يُمكّن جمع تتبعات المكدس من جدولة المهمة. وهو معطّل افتراضيًا لتجنّب الكلفة الإضافية على الأداء."}]}]} />

يُخرج تتبّع المكدس لمنشئ المهمة عندما تؤدي المهمة إلى استثناء. وهو معطّل افتراضيًا لتجنّب الكلفة الإضافية على الأداء.

## enable\_json\_ast\_dialect

<ExperimentalBadge />

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.8"},{"label": "0"},{"label": "إعداد جديد لتفعيل القيمة `clickhouse_json` لإعداد `dialect`، التي تفسّر الاستعلامات على أنها أشجار AST بتنسيق JSON (ناتج `parseQueryToJSON`) بدلاً من نص SQL."}]}]} />

فعّل القيمة `clickhouse_json` لإعداد `dialect`.

عند ضبط `dialect` على `clickhouse_json`، تُفسَّر الاستعلامات على أنها أشجار AST بتنسيق JSON
(ناتج `parseQueryToJSON`) بدلاً من نص SQL. يظل استعلام `SET`
مُحلَّلاً بصيغة SQL عادية، بحيث يمكن تبديل اللهجة مرة أخرى.

مثال:

```sql theme={null}
SET enable_json_ast_dialect = 1;
SET dialect = 'clickhouse_json';

-- Subsequent queries are parsed as JSON ASTs:
{"type":"SelectWithUnionQuery", ...}
```

## enable\_json\_lazy\_type\_hints

<BetaBadge />

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

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.9"},{"label": "0"},{"label": "تمت إضافة اسم بديل للإعداد `allow_experimental_json_lazy_type_hints`."}]}, {"id": "row-2","items": [{"label": "26.9"},{"label": "0"},{"label": "أصبحت تلميحات النوع المؤجّلة لـ JSON في مرحلة Beta. اسم بديل للإعداد 'allow_experimental_json_lazy_type_hints'."}]}]} />

يُمكّن تلميحات النوع المؤجّلة لنوع [JSON](/ar/reference/data-types/newjson).

عند تمكين هذا الإعداد، فإن `ALTER TABLE ... MODIFY COLUMN json JSON(path TypeName)` الذي يقتصر على إضافة تلميحات النوع أو تغييرها يكون عملية على البيانات الوصفية فقط: إذ تُطبَّق تلميحات النوع وقت الاستعلام على أجزاء البيانات الموجودة وتُجسَّد أثناء عمليات الإدراج وعمليات الدمج في الخلفية بدلاً من إعادة كتابة البيانات التاريخية.

## enable\_lazy\_columns\_replication

<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` والتقاطات لامبدا للدوال عالية الرتبة (مثل `arrayMap`)، مما يجنّب نسخ الصفوف نفسها في الذاكرة عدة مرات دون داعٍ.

## enable\_materialized\_cte

<ExperimentalBadge />

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

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

تمكين تعبيرات الجدول الشائعة المُجسَّدة (`WITH <name> AS MATERIALIZED (<subquery>)`).
عند التمكين، يُنفَّذ تعبير الجدول الشائع المُعلَن بوصفه `MATERIALIZED` والمُشار إليه أكثر من مرة تنفيذًا واحدًا فقط، ويُخزَّن في جدول مؤقت، وتقرأ جميع الإشارات من ذلك الجدول. أما تعبير الجدول الشائع المُشار إليه مرة واحدة فقط، فيُدمَج مباشرةً كتعبير جدول شائع عادي لتجنّب الكلفة الإضافية.
وعند التعطيل، تُتجاهل الكلمة المفتاحية `MATERIALIZED`: فيُدمَج تعبير الجدول الشائع مباشرةً عند كل إشارة إليه كتعبير جدول شائع عادي، ويُسجَّل تحذير.

## enable\_materialized\_postgresql\_table

<ExperimentalBadge />

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

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.9"},{"label": "0"},{"label": "تمت إضافة اسم بديل للإعداد `allow_experimental_materialized_postgresql_table`."}]}]} />

يسمح باستخدام محرك الجداول `MaterializedPostgreSQL`.

## enable\_memory\_bound\_merging\_of\_aggregation\_results

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

فعّل استراتيجية الدمج المقيّدة بالذاكرة لنتائج التجميع.

## enable\_multiple\_prewhere\_read\_steps

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

انقل مزيدًا من الشروط من WHERE إلى PREWHERE، ونفّذ القراءة من القرص والتصفية على مراحل متعددة إذا كانت هناك شروط متعددة مدمجة باستخدام AND

## enable\_named\_columns\_in\_function\_tuple

<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() عندما تكون جميع الأسماء فريدة ويمكن التعامل معها كمُعرِّفات غير مقتبسة.

## enable\_nullable\_tuple\_type

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

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.9"},{"label": "1"},{"label": "أصبح `Nullable(Tuple)` الآن GA"}]}, {"id": "row-2","items": [{"label": "26.6"},{"label": "0"},{"label": "أصبح Nullable Tuple الآن Beta. أُضيف كـ اسم بديل لـ 'allow_experimental_nullable_tuple_type'."}]}]} />

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

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

## enable\_order\_by\_all

<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 │
└────┴────┴─────┘
```

## enable\_packed\_string\_keys\_in\_aggregation

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.8"},{"label": "1"},{"label": "إعداد جديد للتبديل بين جدول التجزئة المستند إلى `PackedStringRef` والمستخدم مع GROUP BY بمفتاح `String` واحد. تكون previous_value=false، لذا تؤدي `compatibility` مع الإصدارات السابقة للإصدار 26.8 إلى استعادة الطريقة القديمة المستندة إلى `StringHashTable`، بما في ذلك تقسيمها إلى buckets ثنائية المستوى."}]}]} />

استخدم جدول تجزئة بمفاتيح من مراجع سلاسل معبأة بطول 16 بايتًا (`PackedStringRef`) مع `GROUP BY` ذي مفتاح `String` واحد غير قابل لـ NULL. تُخزَّن المفاتيح التي يصل طولها إلى 11 بايتًا مباشرةً في المرجع المعبأ، بينما تُخزَّن المفاتيح الأطول بالإشارة إليها في Arena.
يكون هذا أسرع في معظم أحمال العمل، لكنه قد يكون أبطأ من الطريقة القديمة عند استخدام `GROUP BY` مع عدد قليل جدًا من المفاتيح المميزة التي يزيد طولها على 11 بايتًا، ولا سيما بطول 12..24 بايتًا؛ إذ يحتفظ جدول التجزئة القديم بالمفاتيح مباشرةً في الخلية، بينما يفك الجدول المعبأ مرجع مؤشر Arena عند كل عملية بحث.
عند تعطيله، تُستخدم الطريقة القديمة المستندة إلى `StringHashTable`، وهي الطريقة الافتراضية قبل الإصدار 26.8.

يجب أن تتفق جميع الخوادم المشاركة في استعلام موزّع على هذه القيمة. فعند استخدام `distributed_aggregation_memory_efficient`، تعتمد أرقام buckets ثنائية المستوى على تجزئة المفتاح، وهي تختلف بين الطريقتين؛ لذلك قد تقسم الخوادم التي تختلف في هذا الإعداد المفتاح نفسه إلى buckets مختلفة وتنتج نتيجة مدمجة بصورة غير صحيحة. ولضمان هذا الاتفاق، ترسل initiator دائمًا قيمتها الفعلية مع الاستعلامات الثانوية، حتى عندما تكون مستمدة فقط من الإعدادات الافتراضية للخادم/الملف الشخصي، متجاوزةً الإعدادات الافتراضية للخوادم البعيدة.

## enable\_parsing\_to\_custom\_serialization

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

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

إذا كانت القيمة true، فيمكن تحليل البيانات مباشرةً إلى الأعمدة ذات التسلسل المخصّص (مثل Sparse) وفقًا لتلميحات التسلسل المستمدة من الجدول.

## enable\_producing\_buckets\_out\_of\_order\_in\_aggregation

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

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

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

## enable\_quantized\_codec

<ExperimentalBadge />

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.8"},{"label": "0"},{"label": "إعداد جديد لتمكين برنامج الترميز للضغط التجريبي `Quantized` بشكل مستقل، دون `allow_experimental_codecs`."}]}]} />

يُمكّن برنامج الترميز للضغط `Quantized`.

## enable\_reads\_from\_query\_cache

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

إذا كان هذا الخيار مفعّلًا، فستُسترجَع نتائج استعلامات `SELECT` من [ذاكرة التخزين المؤقت للاستعلامات](/ar/concepts/features/performance/caches/query-cache).

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

* 0 - معطّل
* 1 - مفعّل

## enable\_s3\_requests\_logging

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

يُفعّل تسجيلًا مفصلًا جدًا لطلبات S3. وهذا مناسب لأغراض التصحيح فقط.

## enable\_scalar\_subquery\_optimization

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

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

إذا تم ضبطه على true، فإنه يمنع الاستعلامات الفرعية ذات القيمة المفردة من تسلسل/إلغاء تسلسل القيم المفردة الكبيرة، وقد يجنّب تنفيذ الاستعلام الفرعي نفسه أكثر من مرة.

## enable\_scopes\_for\_with\_statement

<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 الأب كما لو كانت مُعلنة ضمن النطاق الحالي نفسه.

لاحظ أن هذا إعداد توافق للمحلل يتيح تشغيل بعض الاستعلامات غير الصالحة التي كان المحلل القديم يستطيع تنفيذها.

## enable\_shared\_storage\_snapshot\_in\_query

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.6"},{"label": "0"},{"label": "إعداد جديد لمشاركة لقطة التخزين في الاستعلام"}]}, {"id": "row-2","items": [{"label": "25.12"},{"label": "1"},{"label": "تمكين مشاركة لقطة التخزين في الاستعلام افتراضيًا"}]}]} />

إذا كان مُمكّنًا، فستشارك جميع الاستعلامات الفرعية ضمن استعلام واحد نفس `StorageSnapshot` لكل جدول.
ويضمن ذلك عرضًا متسقًا للبيانات على مستوى الاستعلام بأكمله، حتى إذا جرى الوصول إلى الجدول نفسه عدة مرات.

وهذا مطلوب للاستعلامات التي يكون فيها الاتساق الداخلي لأجزاء البيانات مهمًا. مثال:

```sql theme={null}
SELECT
    count()
FROM events
WHERE (_part, _part_offset) IN (
    SELECT _part, _part_offset
    FROM events
    WHERE user_id = 42
)
```

من دون هذا الإعداد، قد تعمل الاستعلامات الخارجية والداخلية على لقطات مختلفة من البيانات، مما يؤدي إلى نتائج غير صحيحة.

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

* 0 - معطّل
* 1 - مفعّل

## enable\_sharing\_sets\_for\_mutations

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

السماح بمشاركة كائنات set المُنشأة من أجل الاستعلامات الفرعية IN بين المهام المختلفة ضمن عملية mutation نفسها. يقلل ذلك من استخدام الذاكرة واستهلاك وحدة المعالجة المركزية

## enable\_streaming\_queries

<ExperimentalBadge />

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

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

يسمح بالاستعلامات المستمرة `SELECT ... FROM t STREAM [CURSOR '{...}']`.
عند إيقافه، يُرفَض أي تعبير جدول يستخدم المعدِّل `STREAM`
أثناء بناء الخطة. هذا هو مفتاح التحكم الرئيسي لميزة
الاستعلامات المتدفقة؛ وقد تُقيَّد إمكانات إضافية بإعداداتها الخاصة.

## enable\_sz3\_codec

<ExperimentalBadge />

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.8"},{"label": "0"},{"label": "إعداد جديد لتمكين برنامج الترميز للضغط التجريبي `SZ3` بشكل مستقل، دون `allow_experimental_codecs`."}]}]} />

يُمكّن برنامج الترميز للضغط `SZ3`.

## enable\_time\_series\_aggregate\_functions

<PrivatePreviewBadge />

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

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.9"},{"label": "0"},{"label": "تم نقل دوال التجميع `timeSeries*` إلى مستوى المعاينة الخاصة. وأُضيف اسم بديل للإعداد `allow_experimental_time_series_aggregate_functions`."}]}]} />

يُفعّل دوال التجميع `timeSeries*` الخاصة بإعادة أخذ عينات السلاسل الزمنية على غرار Prometheus، وحساب rate ودلتا.

## enable\_time\_series\_table

<PrivatePreviewBadge />

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

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.9"},{"label": "0"},{"label": "تم نقل محرك الجداول `TimeSeries` ولهجة الاستعلام `promql` إلى مستوى المعاينة الخاصة. وتمت إضافة اسم بديل للإعداد `allow_experimental_time_series_table`."}]}]} />

يسمح بإنشاء جداول بمحرك الجداول [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) مُفعّل.

## enable\_time\_time64\_type

**الأسماء البديلة**: `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).

## enable\_trino\_dialect

<ExperimentalBadge />

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.9"},{"label": "0"},{"label": "إعداد جديد لتمكين القيمة `trino` للإعداد `dialect`، الذي يترجم بناء جملة Trino SQL ويطابق أسماء دوال Trino مع مكافئاتها في ClickHouse."}]}]} />

فعّل القيمة `trino` للإعداد `dialect`.

عند ضبط `dialect` على `trino`، تُكتب الاستعلامات بلغة Trino SQL: إذ يُترجم بناء
الجملة الخاص بـ Trino (القيم الحرفية `ARRAY[...]` و`TRY_CAST` و`UNNEST` وأنواع `ROW` و`OFFSET` قبل `LIMIT`)
إلى ClickHouse SQL، وتُطابق أسماء دوال Trino مع مكافئاتها في
ClickHouse. يظل استعلام `SET` محللًا بصيغة SQL عادية، بحيث يمكن إعادة
تبديل اللهجة.

تتوافق دلالات الاستعلام أيضًا مع Trino: إذ يُفعّل `join_use_nulls`،
ويُعطّل `use_variant_as_common_type`، ويُفعّل محلّل الاستعلامات.
وتظل عبارة `SETTINGS` الصريحة في الاستعلام ذات أولوية أعلى.

## enable\_unaligned\_array\_join

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

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

## enable\_unique\_key

<ExperimentalBadge />

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

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.9"},{"label": "0"},{"label": "تمت إضافة اسم بديل للإعداد `allow_experimental_unique_key`."}]}]} />

يسمح بإنشاء جداول تتضمن الـ clause `UNIQUE KEY` في engines عائلة MergeTree.

## enable\_url\_encoding

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

يكون معطّلًا افتراضيًا.

## enable\_vertical\_final

<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 عبر تمييز الصفوف على أنها محذوفة ثم ترشيحها لاحقًا بدلًا من دمج الصفوف

## enable\_writes\_to\_query\_cache

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

إذا كان هذا الإعداد مفعّلًا، فسيتم تخزين نتائج استعلامات `SELECT` في [ذاكرة التخزين المؤقت للاستعلامات](/ar/concepts/features/performance/caches/query-cache).

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

* 0 - معطّل
* 1 - مفعّل

## enable\_zxc\_codec

<ExperimentalBadge />

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.8"},{"label": "0"},{"label": "إعداد جديد لتمكين استخدام برنامج الترميز التجريبي للضغط `ZXC` بشكل مستقل، دون `allow_experimental_codecs`."}]}]} />

يُمكّن برنامج الترميز للضغط `ZXC`.
