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