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

> جدول نظامي يحتوي على معلومات عن سياسات التخزين ووحدات التخزين المعرّفة في تهيئة الخادم.

# system.storage_policies

<div id="description">
  ## الوصف
</div>

يحتوي على معلومات حول سياسات التخزين ووحدات التخزين المُعرَّفة في [تهيئة الخادم](/ar/reference/engines/table-engines/mergetree-family/mergetree#table_engine-mergetree-multiple-volumes_configure).

<div id="columns">
  ## الأعمدة
</div>

* `policy_name` ([String](/ar/reference/data-types/string)) — اسم سياسة التخزين.
* `volume_name` ([String](/ar/reference/data-types/string)) — اسم وحدة التخزين.
* `volume_priority` ([UInt64](/ar/reference/data-types/int-uint)) — أولوية وحدة التخزين.
* `disks` ([Array(String)](/ar/reference/data-types/array)) — قائمة بأسماء جميع الأقراص التابعة لسياسة التخزين هذه.
* `volume_type` ([Enum8('JBOD' = 0, 'SINGLE\_DISK' = 1, 'UNKNOWN' = 2)](/ar/reference/data-types/enum)) — نوع وحدة التخزين: JBOD أو قرص واحد.
* `max_data_part_size` ([UInt64](/ar/reference/data-types/int-uint)) — الحجم الأقصى لجزء بيانات يمكن تخزينه على أي من أقراص وحدة التخزين.
* `move_factor` ([Float32](/ar/reference/data-types/float)) — عندما تنخفض المساحة المتاحة عن هذه القيمة، تبدأ البيانات بالانتقال تلقائيًا إلى وحدة التخزين التالية، إن وُجدت (القيمة الافتراضية: 0.1).
* `prefer_not_to_merge` ([UInt8](/ar/reference/data-types/int-uint)) — لا ينبغي استخدام هذا الإعداد. يعطّل دمج أجزاء البيانات على وحدة التخزين هذه، مما يضر بالأداء ويؤدي إلى تدهوره.
* `perform_ttl_move_on_insert` ([UInt8](/ar/reference/data-types/int-uint)) — يعطّل إجراء TTL move عند INSERT جزء بيانات. افتراضيًا، عند تفعيله، إذا أُدرج جزء بيانات انتهت صلاحيته بالفعل وفق قاعدة TTL move، فإنه ينتقل فورًا إلى وحدة التخزين أو القرص المحدد في قاعدة TTL move.
* `load_balancing` ([Enum8('ROUND\_ROBIN' = 0, 'LEAST\_USED' = 1)](/ar/reference/data-types/enum)) — سياسة موازنة الأقراص: `round_robin` أو `least_used`.

<div id="volume-selection-on-insert">
  ## اختيار وحدة التخزين عند `INSERT`
</div>

عندما يُنشئ `INSERT` جزء بيانات جديدًا، يختار ClickHouse قرص الوجهة
بتطبيق القواعد التالية بالترتيب. وتُعتمد أول قاعدة تنطبق **ويمكنها
حجز مساحة للجزء**؛ وإلا (إذا كانت القاعدة غير منطبقة، أو لا توجد مساحة
حرة، أو تم تجاوز `max_data_part_size`) فيستمر التقييم مع القاعدة
التالية.

1. **قاعدة TTL move** — إذا كان الشرط `TTL <expr> TO VOLUME 'X'` (أو `TO DISK 'X'`)
   قد أصبح بالفعل من الماضي بالنسبة إلى الصفوف التي يجري إدراجها، **وكان**
   `perform_ttl_move_on_insert = 1` (افتراضيًا) على **وحدة تخزين وجهة
   TTL** (وبالنسبة إلى `TO DISK 'X'`، تكون وحدة التخزين التي تحتوي على القرص `X`)، فإن الجزء
   يُكتب مباشرةً إلى تلك الوجهة. وإذا فشل الحجز هناك، فتتراجع عملية
   `insert` إلى الخطوات 2–4؛ ويُسجَّل تحذير، لكن `INSERT`
   لا يفشل لهذا السبب وحده.
2. **`max_data_part_size`** — ترفض وحدة التخزين الأجزاء الأكبر من
   `max_data_part_size` الخاص بها. ويُتحقق من ذلك لكل وحدة تخزين على حدة؛ ولا
   يقيّد حجز الخطوة 1 من نوع `TTL ... TO DISK 'X'`، لأنه يستهدف القرص
   مباشرةً.
3. **`volume_priority`** — من بين وحدات التخزين المتبقية، تُختار
   الوحدة ذات أقل قيمة `volume_priority`. أما وحدات التخزين التي لا تحتوي على
   `<volume_priority>` صريح فتُرتَّب بحسب موضعها في الإعدادات.
4. **`load_balancing`** — بعد اختيار وحدة التخزين، يُختار القرص داخل
   تلك الوحدة وفقًا لسياسة `load_balancing` الخاصة بها
   (`round_robin` أو `least_used`).

<Info>
  **تجاوز**

  إذا كانت `min_free_disk_bytes_to_perform_insert` أو
  `min_free_disk_ratio_to_perform_insert` غير صفرية، فيُتجاوز
  الترتيب المذكور أعلاه. يحاول `INSERT` فقط استخدام وحدة التخزين ذات
  أقل `volume_priority`، ويطرح `NOT_ENOUGH_SPACE` إذا لم يستوفِ أي قرص
  في تلك الوحدة الحد المطلوب. وتُستثنى عمليات الإدراج في قاعدة بيانات `system`.
</Info>

<Note>
  تُقرأ قيمة `perform_ttl_move_on_insert` من وحدة تخزين **وجهة TTL**،
  وليس من وحدة التخزين المصدر. وبالنسبة إلى قاعدة `TO DISK 'X'`، تُقرأ
  العلامة من وحدة التخزين التي تحتوي على القرص `X`. ولا يكون لضبطها على أي وحدة تخزين أخرى ضمن
  السياسة أي تأثير في مسار `insert`.
</Note>

لفرض أن تحترم عمليات الإدراج `volume_priority` حتى عندما تنطبق قاعدة
TTL move "منتهية بالفعل"، اضبط `perform_ttl_move_on_insert = 0` على
وحدة تخزين وجهة TTL (وبالنسبة إلى `TO DISK 'X'`، على وحدة التخزين التي تحتوي على
القرص `X`). عندئذٍ يُكتب الجزء أولًا إلى وحدة التخزين ذات الأولوية الأقل ثم
يُنقل إلى وجهة TTL بواسطة مهمة نقل في الخلفية (يمكن ملاحظتها عبر
`system.moves`). راجع
[إعداد `perform_ttl_move_on_insert` في محرك MergeTree](/ar/reference/engines/table-engines/mergetree-family/mergetree#table_engine-mergetree-multiple-volumes_configure).
