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

# إعدادات جداول MergeTree الأخرى

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

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>;
};

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/docs/beta-and-experimental-features#experimental-features">تعرّف على المزيد.</a></u>
        </div>;
};

هذه الإعدادات متاحة في [system.merge\_tree\_settings](/docs/ar/reference/system-tables/merge_tree_settings)، وهي مُولَّدة تلقائيًا من الشيفرة المصدرية لـ ClickHouse.

<div id="adaptive_write_buffer_initial_size">
  ## adaptive\_write\_buffer\_initial\_size
</div>

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

الحجم الأولي لمخزن مؤقت للكتابة التكيفية

<div id="add_implicit_sign_column_constraint_for_collapsing_engine">
  ## add\_implicit\_sign\_column\_constraint\_for\_collapsing\_engine
</div>

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

إذا كانت القيمة `true`، فسيُضاف قيد ضمني إلى العمود `sign` في جدول من نوع CollapsingMergeTree
أو VersionedCollapsingMergeTree، بحيث لا يُسمح إلا بالقيم الصالحة (`1` و `-1`).

<div id="alter_column_secondary_index_mode">
  ## alter\_column\_secondary\_index\_mode
</div>

<SettingsInfoBlock type="AlterColumnSecondaryIndexMode" default_value="rebuild" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "rebuild"},{"label": "تغيير السلوك للسماح بأوامر ALTER `column` عندما تكون لها فهارس ثانوية تابعة"}]}]} />

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

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

* `rebuild` (الافتراضي): يعيد بناء أي فهارس ثانوية تتأثر بالعمود في أمر `ALTER`.
* `throw`: يمنع أي `ALTER` للأعمدة المشمولة بفهارس ثانوية **صريحة** عن طريق رفع استثناء. ولا يشمل هذا القيد الفهارس الضمنية، إذ ستُعاد بناؤها.
* `drop`: يحذف الفهارس الثانوية التابعة. ولن تحتوي الأجزاء الجديدة على هذه الفهارس، مما يتطلب `MATERIALIZE INDEX` لإعادة إنشائها.
* `compatibility`: يطابق السلوك الأصلي: `throw` مع `ALTER ... MODIFY COLUMN` و`rebuild` مع `ALTER ... UPDATE/DELETE`.
* `ignore`: مخصص لاستخدام الخبراء. سيترك الفهارس في حالة غير متسقة، مما قد يؤدي إلى نتائج استعلام غير صحيحة.

<div id="apply_patches_on_merge">
  ## apply\_patches\_on\_merge
</div>

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

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

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

<div id="assign_part_uuids">
  ## assign\_part\_uuids
</div>

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

عند التفعيل، سيُخصَّص معرّف جزء فريد لكل جزء جديد.
قبل التفعيل، تحقّق من أن جميع النسخ المتماثلة تدعم الإصدار 4 من UUID.

<div id="auto_statistics_types">
  ## auto\_statistics\_types
</div>

<SettingsInfoBlock type="String" default_value="basic, uniq_v2" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.7"},{"label": "basic, uniq_v2"},{"label": "اعتبار نوع الإحصاءات `minmax` مُهمَلًا واستبداله بـ `basic` (وهو أشمل من `minmax`) في الإحصاءات التلقائية الافتراضية؛ وكذلك استبدال `uniq` بـ `uniq_v2` لتقليل الحمل الإضافي على عمليات الإدراج والذاكرة"}]}, {"id": "row-2","items": [{"label": "26.4"},{"label": "minmax, uniq"},{"label": "تفعيل الإحصاءات التلقائية افتراضيًا"}]}, {"id": "row-3","items": [{"label": "25.10"},{"label": ""},{"label": "إعداد جديد"}]}]} />

قائمة مفصولة بفواصل لأنواع الإحصاءات التي تُحسب تلقائيًا لجميع الأعمدة المناسبة.
أنواع الإحصاءات المدعومة: basic و tdigest و countmin و uniq و uniq\_v2.
نوع الإحصاءات `minmax` مُهمَل: فهو مجموعة فرعية من `basic`، لذا ينبغي استخدام `basic` بدلًا منه.

<div id="background_task_preferred_step_execution_time_ms">
  ## background\_task\_preferred\_step\_execution\_time\_ms
</div>

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

الوقت المستهدف لتنفيذ خطوة واحدة من عملية الدمج أو التعديل. يمكن تجاوزه إذا استغرقت
إحدى الخطوات وقتًا أطول

<div id="clean_deleted_rows">
  ## clean\_deleted\_rows
</div>

<SettingsInfoBlock type="CleanDeletedRows" default_value="أبدًا" />

إعداد متقادم، بلا أي تأثير.

<div id="clone_replica_zookeeper_create_get_part_batch_size">
  ## clone\_replica\_zookeeper\_create\_get\_part\_batch\_size
</div>

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

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

حجم الدفعة لطلبات get-part متعددة الإنشاء في ZooKeeper عند استنساخ النسخة المتماثلة.

<div id="compatibility_allow_sampling_expression_not_in_primary_key">
  ## compatibility\_allow\_sampling\_expression\_not\_in\_primary\_key
</div>

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

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

<div id="compute_exact_num_defaults_for_sparse_columns">
  ## compute\_exact\_num\_defaults\_for\_sparse\_columns
</div>

<ExperimentalBadge />

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.7"},{"label": "0"},{"label": "إعداد جديد يضبط الحساب الدقيق لـ num_defaults لكل عمود لأغراض التقليم المستند إلى متناثر وإعادة كتابة العدّ البسيط"}]}]} />

احسب العدد الدقيق للقيم الافتراضية لكل عمود أثناء عمليات `insert` و
`الدمج`، بدلًا من تقدير `sampling` الأقل تكلفة والمستخدَم لاتخاذ قرار
`serialization` لـ `متناثر`. هذا الإعداد مطلوب بواسطة `optimize_trivial_count_with_sparsity_filter`،
الذي يستخدم العداد المحفوظ `num_defaults` (كما تتطلب أعمدة `Nullable`
أيضًا `nullable_serialization_version = 'allow_sparse'`).
يؤدي تركه معطّلًا إلى الإبقاء على سرعة عمليات `insert`/`الدمج` كما
كانت سابقًا؛ أما تفعيله فيضيف مرورًا بتعقيد O(rows) لكل عمود مؤهَّل لـ `متناثر`.

<div id="deduplicate_merge_projection_mode">
  ## deduplicate\_merge\_projection\_mode
</div>

<SettingsInfoBlock type="DeduplicateMergeProjectionMode" default_value="throw" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.8"},{"label": "throw"},{"label": "عدم السماح بإنشاء إسقاط غير متسقة"}]}]} />

يحدد ما إذا كان يُسمح بإنشاء إسقاط للجدول الذي يستخدم MergeTree غير الكلاسيكي،
أي الذي لا يندرج ضمن MergeTree من النوعين (Replicated, Shared). خيار `ignore` مخصص فقط
للتوافق، وقد يؤدي إلى نتائج غير صحيحة. بخلاف ذلك، إذا كان ذلك مسموحًا، فإنه يحدد
الإجراء المتخذ عند merge للإسقاطات: إما `drop` أو `rebuild`. لذلك فإن
MergeTree الكلاسيكي يتجاهل هذا الإعداد. كما أنه يتحكم أيضًا في `OPTIMIZE DEDUPLICATE`،
لكن تأثيره يمتد إلى جميع أعضاء MergeTree family. وعلى غرار
الخيار `lightweight_mutation_projection_mode`، فهو أيضًا على مستوى part.

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

* `ignore`
* `throw`
* `drop`
* `rebuild`

<div id="deduplication_hashes_cache_update_wait_ms">
  ## deduplication\_hashes\_cache\_update\_wait\_ms
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.7"},{"label": "100"},{"label": "إعداد جديد. البديل ذو التسمية الصحيحة لـ async_block_ids_cache_update_wait_ms؛ ويتحكم في مدة انتظار عملية الإدراج إلى أن يتم تحديث ذاكرة التخزين المؤقت الموحّدة `deduplication_hashes`."}]}]} />

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

<div id="default_compression_codec">
  ## default\_compression\_codec
</div>

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

يحدّد مرمّز الضغط الافتراضي الذي يُستخدم إذا لم يُعرَّف أي مرمّز لعمود معيّن في تعريف الجدول.
ترتيب اختيار مرمّز الضغط لعمود ما:

1. مرمّز الضغط المعرَّف للعمود في تعريف الجدول
2. مرمّز الضغط المعرَّف في `default_compression_codec` (هذا الإعداد)
3. مرمّز الضغط الافتراضي المعرَّف في إعدادات `compression`
   القيمة الافتراضية: سلسلة فارغة (غير معرَّفة).

<div id="disk">
  ## القرص
</div>

اسم قرص التخزين. يمكن تحديده بدلًا من سياسة التخزين.

<div id="dynamic_serialization_version">
  ## dynamic\_serialization\_version
</div>

<SettingsInfoBlock type="MergeTreeDynamicSerializationVersion" default_value="v3" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "v2"},{"label": "إضافة إعداد للتحكم في إصدارات تسلسل Dynamic"}]}, {"id": "row-2","items": [{"label": "25.12"},{"label": "v3"},{"label": "تفعيل إصدار التسلسل v3 لـ Dynamic افتراضيًا لتحسين عمليتَي التسلسل\/إلغاء التسلسل"}]}]} />

إصدار التسلسل لنوع البيانات Dynamic. مطلوب لضمان التوافق.

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

* `v1`
* `v2`
* `v3`

<div id="enforce_index_structure_match_on_partition_manipulation">
  ## enforce\_index\_structure\_match\_on\_partition\_manipulation
</div>

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

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

إذا كان هذا الإعداد مُمكّنًا لجدول الوجهة في استعلام لمعالجة قسم
(`ATTACH/MOVE/REPLACE PARTITION`)، فيجب أن تكون الفهارس والإسقاطات
متطابقة بين جدولَي المصدر والوجهة. وإلا، يمكن أن يشتمل جدول الوجهة
على فهارس وإسقاطات أكثر من تلك الموجودة في جدول المصدر.

<div id="execute_merges_on_single_replica_time_threshold">
  ## execute\_merges\_on\_single\_replica\_time\_threshold
</div>

<SettingsInfoBlock type="ثوانٍ" default_value="0" />

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

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

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

<div id="finished_mutations_to_keep">
  ## finished\_mutations\_to\_keep
</div>

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

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

<div id="force_read_through_cache_for_merges">
  ## force\_read\_through\_cache\_for\_merges
</div>

<ExperimentalBadge />

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

فرض القراءة عبر ذاكرة التخزين المؤقت لنظام الملفات أثناء عمليات الدمج

<div id="initialization_retry_period">
  ## initialization\_retry\_period
</div>

<SettingsInfoBlock type="ثوانٍ" default_value="60" />

فترة إعادة المحاولة لتهيئة الجدول، بالثواني.

<div id="kill_threads">
  ## kill\_threads
</div>

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

إعداد متقادم، ولا تأثير له.

<div id="lightweight_mutation_projection_mode">
  ## lightweight\_mutation\_projection\_mode
</div>

<SettingsInfoBlock type="LightweightMutationProjectionMode" default_value="throw" />

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

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

* `throw`
* `drop`
* `rebuild`

<div id="load_existing_rows_count_for_old_parts">
  ## load\_existing\_rows\_count\_for\_old\_parts
</div>

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

إذا كان هذا الإعداد مفعّلًا مع [exclude\_deleted\_rows\_for\_part\_size\_in\_merge](/docs/ar/reference/settings/merge-tree-settings/exclude#exclude_deleted_rows_for_part_size_in_merge)،
فسيُحتسب عدد الصفوف المحذوفة لأجزاء البيانات الموجودة عند
بدء تشغيل الجدول. لاحظ أن ذلك قد يبطئ تحميل الجدول عند بدء التشغيل.

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

* `true`
* `false`

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

* الإعداد [exclude\_deleted\_rows\_for\_part\_size\_in\_merge](/docs/ar/reference/settings/merge-tree-settings/exclude#exclude_deleted_rows_for_part_size_in_merge)

<div id="lock_acquire_timeout_for_background_operations">
  ## lock\_acquire\_timeout\_for\_background\_operations
</div>

<SettingsInfoBlock type="ثوانٍ" default_value="120" />

لعمليات الخلفية مثل عمليات الدمج وعمليات التعديل وما إلى ذلك، يحدِّد عدد الثواني قبل الفشل في الحصول على أقفال الجدول.

<div id="mutation_workload">
  ## mutation\_workload
</div>

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

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

* [جدولة أعباء العمل](/docs/ar/concepts/features/configuration/server-config/workload-scheduling)

<div id="non_replicated_deduplication_window">
  ## non\_replicated\_deduplication\_window
</div>

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

عدد أحدث blocks المُدخلة في جدول
[MergeTree](/docs/ar/reference/engines/table-engines/mergetree-family/mergetree) غير المكرَّر
التي تُحفَظ لها قيم hash sums للتحقق من التكرارات.

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

* أي عدد صحيح موجب.
* `0` (تعطيل deduplication).

تُستخدم آلية deduplication مشابهة لتلك المستخدمة في الجداول المكرَّرة (راجع
الإعداد [replicated\_deduplication\_window](/docs/ar/reference/settings/merge-tree-settings/replicated-deduplication-window#replicated_deduplication_window)): إذ
يشمل hash sum الخاص بـ deduplication كامل inserted block. وتُكتَب قيم
hash sums إلى ملف محلي على قرص بدلًا من ClickHouse Keeper.

<div id="notify_newest_block_number">
  ## notify\_newest\_block\_number
</div>

<ExperimentalBadge />

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "0"},{"label": "مزامنة Cloud"}]}]} />

إبلاغ SharedJoin أو SharedSet بأحدث رقم block. في ClickHouse Cloud فقط.

<div id="nullable_serialization_version">
  ## nullable\_serialization\_version
</div>

<SettingsInfoBlock type="MergeTreeNullableSerializationVersion" default_value="basic" />

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

يتحكم في أسلوب التسلسل المستخدم لأعمدة `Nullable(T)`.

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

* basic — استخدم أسلوب التسلسل القياسي لـ `Nullable(T)`.

* allow\_sparse — السماح لـ `Nullable(T)` باستخدام الترميز المتناثر.

<div id="object_serialization_version">
  ## object\_serialization\_version
</div>

<SettingsInfoBlock type="MergeTreeObjectSerializationVersion" default_value="v3" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "v2"},{"label": "إضافة إعداد للتحكم في إصدارات تسلسل JSON"}]}, {"id": "row-2","items": [{"label": "25.12"},{"label": "v3"},{"label": "تفعيل إصدار التسلسل v3 لـ JSON افتراضيًا لاستخدام تسلسل البيانات المشتركة المتقدم"}]}]} />

إصدار التسلسل لنوع بيانات JSON. وهو مطلوب للتوافق.

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

* `v1`
* `v2`
* `v3`

لا يدعم تغيير إصدار تسلسل البيانات المشتركة إلا الإصدار `v3`.

<div id="old_parts_lifetime">
  ## old\_parts\_lifetime
</div>

<SettingsInfoBlock type="Seconds" default_value="480" />

المدة (بالثواني) التي تُحفَظ خلالها الأجزاء غير النشطة للحماية من فقدان البيانات
أثناء إعادة تشغيل الخادوم بشكل مفاجئ.

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

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

بعد دمج عدة أجزاء في جزء جديد، يضع ClickHouse علامة على الأجزاء الأصلية
على أنها غير نشطة، ولا يحذفها إلا بعد مرور `old_parts_lifetime` ثانية.
وتُزال الأجزاء غير النشطة إذا لم تكن مستخدمة في الاستعلامات الحالية، أي إذا
كانت قيمة `refcount` للجزء تساوي 1.

لا يُستدعى `fsync` للأجزاء الجديدة، لذلك تبقى هذه الأجزاء لبعض الوقت موجودة فقط
في ذاكرة RAM الخاصة بالخادوم (ذاكرة التخزين المؤقت لنظام التشغيل). وإذا أُعيد تشغيل الخادوم
بشكل مفاجئ، فقد تُفقَد الأجزاء الجديدة أو تتلف. لذلك، لا تُحذف الأجزاء غير النشطة
فورًا حمايةً للبيانات.

أثناء بدء التشغيل، يتحقق ClickHouse من سلامة الأجزاء. فإذا كان الجزء
المُدمَج تالفًا، يعيد ClickHouse الأجزاء غير النشطة إلى القائمة النشطة،
ثم يدمجها مرة أخرى لاحقًا. بعد ذلك، يُعاد تسمية الجزء التالف (تُضاف
البادئة `broken_`) ويُنقل إلى المجلد `detached`. أما إذا لم يكن الجزء
المُدمَج تالفًا، فتُعاد تسمية الأجزاء الأصلية غير النشطة (تُضاف
البادئة `ignored_`) وتُنقل إلى المجلد `detached`.

القيمة الافتراضية لـ `dirty_expire_centisecs` (وهو إعداد في نواة Linux) هي 30
ثانية (وهي الحد الأقصى للمدة التي تُخزَّن خلالها البيانات المكتوبة في ذاكرة RAM فقط)، ولكن
عند وجود أحمال كثيفة على نظام القرص، قد تُكتَب البيانات بعد ذلك بوقت أطول بكثير. وقد اختيرت
تجريبيًا قيمة 480 ثانية لـ `old_parts_lifetime`، وهي مدة يُضمَن خلالها
كتابة الجزء الجديد إلى القرص.

<div id="optimize_row_order">
  ## optimize\_row\_order
</div>

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

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

لا يكون له تأثير إلا على جداول MergeTree-engine العادية. ولا يفعل شيئًا مع
جداول محرك MergeTree المتخصصة (مثل CollapsingMergeTree).

تُضغط جداول MergeTree (اختياريًا) باستخدام [ترميزات الضغط](/docs/ar/reference/statements/create/table#column_compression_codec).
وتحقق ترميزات الضغط العامة مثل LZ4 و ZSTD أعلى معدلات ضغط
إذا كانت البيانات تُظهر أنماطًا. وعادةً ما تُضغط السلاسل الطويلة من القيمة نفسها
بكفاءة عالية جدًا.

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

العثور على الترتيب الأمثل للصفوف غير ممكن عمليًا من الناحية الحسابية (NP hard).
لذلك، يستخدم ClickHouse آلية استدلالية للعثور بسرعة على ترتيب صفوف
يُحسّن معدلات الضغط مقارنة بترتيب الصفوف الأصلي.

<details markdown="1">
  <summary>آلية استدلالية للعثور على ترتيب للصفوف</summary>

  من الممكن عمومًا إعادة ترتيب صفوف الجدول (أو جزء الجدول)
  بحرية، لأن SQL تعتبر الجدول نفسه (أو جزء الجدول نفسه) بترتيبات صفوف مختلفة
  مكافئًا.

  تُقيَّد حرية إعادة ترتيب الصفوف هذه عند تعريف مفتاح أساسي
  للجدول. في ClickHouse، يفرض المفتاح الأساسي `C1, C2, ..., CN` أن
  تكون صفوف الجدول مرتبة بحسب الأعمدة `C1`, `C2`, ... `Cn` ([clustered index](https://en.wikipedia.org/wiki/Database_index#Clustered)).
  ونتيجة لذلك، لا يمكن إعادة ترتيب الصفوف إلا داخل "فئات تكافؤ" للصفوف،
  أي الصفوف التي لها القيم نفسها في أعمدة المفتاح الأساسي الخاصة بها.
  والفكرة هنا أن المفاتيح الأساسية عالية الكاردينالية، مثل المفاتيح الأساسية
  التي تتضمن عمود طابع زمني من النوع `DateTime64`، تؤدي إلى عدد كبير من فئات التكافؤ
  الصغيرة. وبالمثل، فإن الجداول ذات المفتاح الأساسي منخفض الكاردينالية تُنشئ عددًا قليلًا من
  فئات التكافؤ الكبيرة. أما الجدول الذي لا يحتوي على مفتاح أساسي فيمثل الحالة
  القصوى لفئة تكافؤ واحدة تمتد عبر جميع الصفوف.

  كلما قل عدد فئات التكافؤ وكبر حجمها، زادت درجة
  الحرية عند إعادة ترتيب الصفوف.

  الآلية الاستدلالية المطبقة للعثور على أفضل ترتيب للصفوف داخل كل فئة تكافؤ
  اقترحها D. Lemire و O. Kaser في
  [Reordering columns for smaller indexes](https://doi.org/10.1016/j.ins.2011.02.002)
  وتعتمد على فرز الصفوف داخل كل فئة تكافؤ حسب الكاردينالية
  التصاعدية للأعمدة غير التابعة للمفتاح الأساسي.

  وهي تنفذ ثلاث خطوات:

  1. العثور على جميع فئات التكافؤ استنادًا إلى قيم الصفوف في أعمدة المفتاح الأساسي.
  2. لكل فئة تكافؤ، حساب (أو غالبًا تقدير) الكاردينالية
     للأعمدة غير التابعة للمفتاح الأساسي.
  3. لكل فئة تكافؤ، فرز الصفوف بترتيب الكاردينالية التصاعدية
     للأعمدة غير التابعة للمفتاح الأساسي.
</details>

إذا كان هذا الإعداد مُمكّنًا، فإن عمليات الإدراج تتحمل كلفة إضافية على CPU لتحليل
ترتيب صفوف البيانات الجديدة وتحسينه. ومن المتوقع أن تستغرق عمليات INSERT وقتًا أطول
بنسبة 30-50% تبعًا لخصائص البيانات.
وتتحسن معدلات ضغط LZ4 أو ZSTD بمتوسط يتراوح بين 20-40%.

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

<div id="packed_skip_index_max_bytes">
  ## packed\_skip\_index\_max\_bytes
</div>

<ExperimentalBadge />

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.6"},{"label": "0"},{"label": "إعداد جديد. قم بتجميع أي تدفق فرعي لفهرس التخطي لا يتجاوز حجمه المتسلسل على القرص هذا العدد من البايتات داخل أرشيف `skp_idx.packed` واحد لكل جزء؛ أما التدفقات الفرعية الأكبر فتظل في تخطيط `skp_idx_<name>.idx2` \/ `.mrk2` المستقل. يُتخذ القرار لكل تدفق فرعي وقت الكتابة."}]}]} />

الحدّ (بالبايتات المتسلسلة على القرص، أي بعد ضغط التدفق الفرعي وسلسلة
التجزئة) الذي إذا كان تدفق فرعي لفهرس التخطي دونه، فسيُجمَّع داخل أرشيف
`skp_idx.packed` واحد لكل جزء بدلًا من كتابته في ملف
`skp_idx_<name>.idx2` / `.mrk2` منفصل. أما التدفقات الفرعية الأكبر من ذلك فتبقى في
التخطيط القديم القائم على ملف لكل تدفق. ويُتخذ القرار بشكل مستقل لكل تدفق فرعي وقت الكتابة،
لذلك يمكن أن يحتوي جزء واحد على فهارس صغيرة
(مثل `minmax`) مُجمَّعة، وأخرى كبيرة (مثل `bloom_filter` ثقيل) في ملفات منفصلة. اضبط القيمة على 0
لتعطيل التجميع بالكامل (وهو الافتراضي).

يتكوّن كل تدفق فرعي لفهرس التخطي فعليًا من ملف بيانات وملف علامات؛ ويُخزَّن كلاهما مؤقتًا
في الذاكرة حتى بلوغ الحدّ قبل اتخاذ قرار spill. لذلك فإن الذاكرة القصوى أثناء
الكتابة تتناسب مع `2 * packed_skip_index_max_bytes * (number of substreams that stay
below the threshold)`.

فهارس النص الكامل غير مدعومة بهذا الإعداد ولا تُجمَّع أبدًا.

يقلّل التجميع من الضغط على inode عند تعريف العديد من فهارس التخطي على جدول (على سبيل المثال
باستخدام `add_minmax_index_for_numeric_columns`).

تنسيق التخزين على القرص ذاتي الوصف: يكتشف القارئون `skp_idx.packed` ويخدمون التدفقات الفرعية
المجمَّعة من داخله بشفافية. يؤثر تغيير هذا الإعداد في الأجزاء المكتوبة حديثًا فقط؛
أما الأجزاء الموجودة فستحتفظ بأي تخطيط كانت عليه وقت الكتابة.

<div id="part_minmax_index_columns">
  ## part\_minmax\_index\_columns
</div>

<SettingsInfoBlock type="MergeTreePartMinMaxIndexColumns" default_value="partition_key_only" />

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

يحدِّد الأعمدة التي يغطيها فهرس min-max لكل جزء. وتُفعِّل كل قيمة مجموعة إضافية من الأعمدة فوق المجموعة السابقة.

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

* `partition_key_only` — لا تُتتبَّع إلا أعمدة مفتاح التقسيم.
* `with_block_number_offset` — أعمدة مفتاح التقسيم، بالإضافة إلى العمودين الافتراضيين المحفوظين `_block_number` و`_block_offset`. يتيح ذلك الاستبعاد على مستوى الجزء باستخدام هذين العمودين.

<div id="propagate_types_serialization_versions_to_nested_types">
  ## propagate\_types\_serialization\_versions\_to\_nested\_types
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": "1"},{"label": "تمرير إصدار تسلسل أنواع البيانات إلى الأنواع المتداخلة افتراضيًا"}]}]} />

إذا كانت القيمة true، فستُمرَّر إصدارات التسلسل مثل string\_serialization\_version إلى داخل الأنواع المتداخلة مثل Array/Map/Nullable/JSON/etc. وإذا كان هذا الخيار معطّلًا، فلن يسري إصدار التسلسل إلا على الأعمدة ذات المستوى الأعلى من هذا النوع وعلى عناصر Tuple el

<div id="ratio_of_defaults_for_sparse_serialization">
  ## ratio\_of\_defaults\_for\_sparse\_serialization
</div>

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

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

إذا كان العمود متناثرًا (يحتوي في معظمه على أصفار)، يمكن لـ ClickHouse ترميزه
بتنسيق متناثر وتحسين العمليات الحسابية تلقائيًا، إذ لا تتطلب البيانات
فك الضغط الكامل أثناء الاستعلامات. ولتمكين هذا
التسلسل المتناثر، عيّن الإعداد `ratio_of_defaults_for_sparse_serialization`
ليكون أقل من 1.0. وإذا كانت القيمة أكبر من أو تساوي 1.0،
فستُكتب الأعمدة دائمًا باستخدام التسلسل الكامل العادي.

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

* قيمة Float بين `0` و `1` لتمكين التسلسل المتناثر
* `1.0` (أو أكبر) إذا كنت لا تريد استخدام التسلسل المتناثر

**مثال**

لاحظ أن العمود `s` في الجدول التالي يكون سلسلة نصية فارغة في 95% من
الصفوف. في `my_regular_table` لا نستخدم التسلسل المتناثر، وفي
`my_sparse_table` نضبط `ratio_of_defaults_for_sparse_serialization` على
0.95:

```sql theme={null}
CREATE TABLE my_regular_table
(
`id` UInt64,
`s` String
)
ENGINE = MergeTree
ORDER BY id;

INSERT INTO my_regular_table
SELECT
number AS id,
number % 20 = 0 ? toString(number): '' AS s
FROM
numbers(10000000);

CREATE TABLE my_sparse_table
(
`id` UInt64,
`s` String
)
ENGINE = MergeTree
ORDER BY id
SETTINGS ratio_of_defaults_for_sparse_serialization = 0.95;

INSERT INTO my_sparse_table
SELECT
number,
number % 20 = 0 ? toString(number): ''
FROM
numbers(10000000);
```

لاحظ أن العمود `s` في `my_sparse_table` يشغل مساحة تخزين أقل على القرص:

```sql theme={null}
SELECT table, name, data_compressed_bytes, data_uncompressed_bytes FROM system.columns
WHERE table LIKE 'my_%_table';
```

```response theme={null}
┌─table────────────┬─name─┬─data_compressed_bytes─┬─data_uncompressed_bytes─┐
│ my_regular_table │ id   │              37790741 │                75488328 │
│ my_regular_table │ s    │               2451377 │                12683106 │
│ my_sparse_table  │ id   │              37790741 │                75488328 │
│ my_sparse_table  │ s    │               2283454 │                 9855751 │
└──────────────────┴──────┴───────────────────────┴─────────────────────────┘
```

يمكنك التحقق مما إذا كان عمودٌ ما يستخدم الترميز المتناثر بعرض
العمود `serialization_kind` من الجدول `system.parts_columns`:

```sql theme={null}
SELECT column, serialization_kind FROM system.parts_columns
WHERE table LIKE 'my_sparse_table';
```

يمكنك الاطلاع على الأجزاء من `s` التي خُزّنت باستخدام التسلسل المتناثر:

```response theme={null}
┌─column─┬─serialization_kind─┐
│ id     │ Default            │
│ s      │ Default            │
│ id     │ Default            │
│ s      │ Default            │
│ id     │ Default            │
│ s      │ Sparse             │
│ id     │ Default            │
│ s      │ Sparse             │
│ id     │ Default            │
│ s      │ Sparse             │
│ id     │ Default            │
│ s      │ Sparse             │
│ id     │ Default            │
│ s      │ Sparse             │
│ id     │ Default            │
│ s      │ Sparse             │
│ id     │ Default            │
│ s      │ Sparse             │
│ id     │ Default            │
│ s      │ Sparse             │
│ id     │ Default            │
│ s      │ Sparse             │
└────────┴────────────────────┘
```

<div id="reduce_blocking_parts_sleep_ms">
  ## reduce\_blocking\_parts\_sleep\_ms
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "5000"},{"label": "Cloud sync"}]}]} />

متوفر فقط في ClickHouse Cloud. الحد الأدنى للوقت الذي يجب انتظاره قبل محاولة
تقليل الأجزاء المُعيقة مرة أخرى إذا لم يتم إسقاط/استبدال أي نطاقات. سيؤدي
خفض هذا الإعداد إلى تشغيل المهام في background\_schedule\_pool بشكل متكرر، مما
يسفر عن عدد كبير من الطلبات إلى ZooKeeper في المجموعات كبيرة الحجم

<div id="replace_long_file_name_to_hash">
  ## replace\_long\_file\_name\_to\_hash
</div>

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

إذا كان اسم ملف العمود طويلًا جدًا (أكثر من `max_file_name_length`
بايت)، فاستبدله بـ SipHash128

<div id="replicated_can_become_leader">
  ## replicated\_can\_become\_leader
</div>

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

إذا كانت القيمة `true`، فستحاول النسخ المتماثلة للجداول المكرّرة على هذه العقدة تولّي القيادة.

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

* `true`
* `false`

<div id="search_orphaned_parts_disks">
  ## search\_orphaned\_parts\_disks
</div>

<SettingsInfoBlock type="SearchOrphanedPartsDisks" default_value="any" />

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

يفحص ClickHouse جميع الأقراص بحثًا عن الأجزاء اليتيمة عند تنفيذ أي ATTACH أو CREATE table،
وذلك لتجنّب إغفال أجزاء البيانات الموجودة على أقراص غير معرّفة (غير مشمولة في سياسة التخزين).
تنشأ الأجزاء اليتيمة نتيجة إعادة تهيئة للتخزين قد تكون غير آمنة، على سبيل المثال إذا جرى استبعاد قرص من سياسة التخزين.
يحدّد هذا الإعداد نطاق الأقراص التي سيجري البحث فيها وفقًا لخصائص تلك الأقراص.

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

* any - النطاق غير مقيّد.
* local - يقتصر النطاق على الأقراص المحلية.
* none - نطاق فارغ، لا تُجرى أي عملية بحث

<div id="serialization_info_version">
  ## serialization\_info\_version
</div>

<SettingsInfoBlock type="MergeTreeSerializationInfoVersion" default_value="with_types" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.11"},{"label": "with_types"},{"label": "تغيير إلى التنسيق الأحدث الذي يتيح تسلسلًا مخصصًا للسلاسل النصية"}]}, {"id": "row-2","items": [{"label": "25.10"},{"label": "basic"},{"label": "إعداد جديد"}]}]} />

إصدار معلومات التسلسل المستخدَم عند كتابة `serialization.json`.
هذا الإعداد مطلوب لضمان التوافق أثناء ترقيات العنقود.

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

* `basic` - تنسيق basic.
* `with_types` - تنسيق يتضمن الحقل الإضافي `types_serialization_versions`، مما يتيح إصدارات تسلسل لكل نوع.
  وهذا يجعل إعدادات مثل `string_serialization_version` فعّالة.

أثناء الترقيات المتدرجة، اضبط هذا على `basic` لكي تُنتج الخوادم الجديدة
أجزاء بيانات متوافقة مع الخوادم القديمة. بعد اكتمال الترقية،
بدّل إلى `WITH_TYPES` لتمكين إصدارات التسلسل لكل نوع.

<div id="share_nested_offsets">
  ## share\_nested\_offsets
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "1"},{"label": "عند ضبطه على false، تُعامل أعمدة Array ذات الأسماء المنقطة التي تشترك في بادئة واحدة كأعمدة مستقلة بدلًا من أن تشارك ملفات offsets ضمن دلالات Nested القديمة"}]}]} />

عند تفعيله (وهو الإعداد الافتراضي)، تُعامل أعمدة Array ذات الأسماء المنقطة التي تشترك في بادئة واحدة (مثل n.a و n.b)
على أنها جزء من بنية Nested: إذ تشترك في ملف offsets واحد على القرص (مثل n.size0)،
ويُتحقق أثناء INSERT من تساوي أحجام المصفوفات فيها.
وعند تعطيله، يحصل كل عمود Array على ملف offsets مستقل، ولا تعود الأسماء المنقطة تحمل أي
دلالات خاصة، كما يمكن أن يتعايش عمود scalar مع أعمدة Array منقطة تشترك في البادئة نفسها
(مثل n UInt32 إلى جانب n.a Array(String)). هذا الإعداد غير قابل للتغيير بعد إنشاء الجدول.

<div id="simultaneous_parts_removal_limit">
  ## simultaneous\_parts\_removal\_limit
</div>

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

إذا كان هناك عدد كبير من الأجزاء القديمة، فسيحاول مؤشر ترابط التنظيف حذف ما يصل إلى
`simultaneous_parts_removal_limit` جزءًا خلال تكرار واحد.
ويعني تعيين `simultaneous_parts_removal_limit` إلى `0` عدم وجود حد.

<div id="storage_policy">
  ## storage\_policy
</div>

<SettingsInfoBlock type="String" default_value="default" />

اسم سياسة تخزين القرص

<div id="string_serialization_version">
  ## string\_serialization\_version
</div>

<SettingsInfoBlock type="MergeTreeStringSerializationVersion" default_value="with_size_stream" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.11"},{"label": "with_size_stream"},{"label": "التبديل إلى التنسيق الأحدث ذي الأحجام المنفصلة"}]}, {"id": "row-2","items": [{"label": "25.10"},{"label": "single_stream"},{"label": "إعداد جديد"}]}]} />

يتحكم هذا الإعداد في تنسيق التسلسل لأعمدة `String` ذات المستوى الأعلى.

لا يكون هذا الإعداد فعّالًا إلا عندما تكون قيمة `serialization_info_version` مضبوطة على "with\_types".
وعند ضبطه على `with_size_stream`، تُسلسَل أعمدة `String` ذات المستوى الأعلى باستخدام
عمود فرعي منفصل `.size` لتخزين أطوال السلاسل النصية بدلًا من تضمينها مباشرةً. يتيح ذلك أعمدة فرعية
حقيقية باسم `.size`، ويمكن أن يحسّن كفاءة الضغط.

لا تتأثر أنواع `String` المتداخلة (مثل داخل `Nullable` أو `LowCardinality` أو `Array` أو `Map`)
بهذا الإعداد، إلا عندما تظهر داخل `Tuple`.

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

* `single_stream` — استخدم تنسيق التسلسل القياسي مع أحجام مضمنة.
* `with_size_stream` — استخدم تدفّق أحجام منفصلًا لأعمدة `String` ذات المستوى الأعلى.

<div id="temporary_directories_lifetime">
  ## temporary\_directories\_lifetime
</div>

<SettingsInfoBlock type="ثوانٍ" default_value="86400" />

عدد الثواني التي يتم خلالها الاحتفاظ بدلائل tmp\_. يجب ألا تخفض هذه القيمة،
لأن عمليات الدمج والتعديل قد لا تتمكن من العمل إذا كانت قيمة هذا
الإعداد منخفضة.

<div id="try_fetch_recompressed_part_timeout">
  ## try\_fetch\_recompressed\_part\_timeout
</div>

<SettingsInfoBlock type="ثوانٍ" default_value="7200" />

المهلة الزمنية (بالثواني) قبل بدء الدمج مع إعادة الضغط. خلال هذه
المدة، يحاول ClickHouse جلب الجزء المُعاد ضغطه من النسخة المتماثلة التي أُسنِد
إليها هذا الدمج مع إعادة الضغط.

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

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

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

<div id="ttl_only_drop_parts">
  ## ttl\_only\_drop\_parts
</div>

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

يتحكم هذا الإعداد في ما إذا كانت أجزاء البيانات تُحذف بالكامل في جداول MergeTree عندما تكون جميع
الصفوف في ذلك الجزء قد انتهت صلاحيتها وفقًا لإعدادات `TTL` الخاصة بها.

عندما يكون `ttl_only_drop_parts` معطّلًا (افتراضيًا)، لا تُزال إلا الصفوف التي
انتهت صلاحيتها استنادًا إلى إعدادات `TTL` الخاصة بها.

عندما يكون `ttl_only_drop_parts` مفعّلًا، يُحذف الجزء بالكامل إذا كانت جميع
الصفوف في ذلك الجزء قد انتهت صلاحيتها وفقًا لإعدادات `TTL` الخاصة بها.

<div id="wait_for_unique_parts_send_before_shutdown_ms">
  ## wait\_for\_unique\_parts\_send\_before\_shutdown\_ms
</div>

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

قبل إيقاف التشغيل، سينتظر الجدول المدة الزمنية المطلوبة حتى تجلب النسخ المتماثلة الأخرى الأجزاء الفريدة
(الموجودة فقط على النسخة المتماثلة الحالية) (0 يعني
التعطيل).

<div id="zookeeper_session_expiration_check_period">
  ## zookeeper\_session\_expiration\_check\_period
</div>

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

الفاصل الزمني للتحقق من انتهاء صلاحية جلسة ZooKeeper، بالثواني.

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

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