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

# نظرة عامة على حذف البيانات

> كيفية حذف البيانات في ClickHouse

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

| الطريقة                                                                    | الصياغة                      | متى تُستخدم                                                                                                                                                                 |
| -------------------------------------------------------------------------- | ---------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [الحذف الخفيف](/ar/concepts/features/operations/delete/lightweight-delete) | `DELETE FROM [table]`        | يُستخدم عند حذف كميات صغيرة من البيانات. تُستبعد الصفوف فورًا من جميع استعلامات SELECT اللاحقة، لكنها في البداية لا تُزال من القرص، بل تُعلَّم داخليًا فقط على أنها محذوفة. |
| [الحذف بالتعديل](/ar/reference/statements/alter/delete)                    | `ALTER TABLE [table] DELETE` | يُستخدم عندما يجب حذف البيانات من القرص فورًا (على سبيل المثال، لأغراض الامتثال). ويؤثر سلبًا في أداء SELECT.                                                               |
| [تفريغ الجدول](/ar/reference/statements/truncate)                          | `TRUNCATE TABLE [db.table]`  | يزيل جميع البيانات من الجدول بكفاءة.                                                                                                                                        |
| [حذف التقسيم](/ar/reference/statements/alter/partition#drop-partitionpart) | `DROP PARTITION`             | يزيل جميع البيانات من القسم بكفاءة.                                                                                                                                         |

فيما يلي ملخص للطرق المختلفة لحذف البيانات في ClickHouse:

<div id="lightweight-deletes">
  ## عمليات الحذف الخفيف
</div>

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

```sql theme={null}
-- delete all data from 2018 with a lightweight delete. Not recommended.
DELETE FROM posts WHERE toYear(CreationDate) = 2018
```

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

لاحظ أنه يتم استخدام تعديل في هذه العملية [لوسم الصفوف المحذوفة](/ar/snippets/delete#how-lightweight-deletes-work-internally-in-clickhouse) (عن طريق إضافة عمود `_row_exists`)، مما يترتب عليه بعض عمليات I/O.

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

اقرأ المزيد عن [عمليات الحذف الخفيف](/ar/concepts/features/operations/delete/lightweight-delete).

<div id="delete-mutations">
  ## عمليات الحذف بالتعديل
</div>

يمكن تنفيذ عمليات الحذف بالتعديل باستخدام الأمر `ALTER TABLE ... DELETE`، على سبيل المثال.

```sql theme={null}
-- delete all data from 2018 with a mutation. Not recommended.
ALTER TABLE posts DELETE WHERE toYear(CreationDate) = 2018
```

يمكن تنفيذ هذه العمليات إما بشكل متزامن (وهو السلوك الافتراضي إذا كانت غير مكررة) أو بشكل غير متزامن (بحسب الإعداد [mutations\_sync](/ar/reference/settings/session-settings#mutations_sync)). وهذه عمليات كثيفة جدًا من ناحية I/O، إذ تعيد كتابة جميع الأجزاء التي تطابق تعبير `WHERE`. ولا تتمتع هذه العملية بخاصية الذرية، إذ تُستبدل الأجزاء بأجزاء خضعت لـ تعديل بمجرد أن تصبح جاهزة، وسيطّلع استعلام `SELECT` الذي يبدأ تنفيذه أثناء تعديل على بيانات من الأجزاء التي خضعت لـ تعديل بالفعل، إلى جانب بيانات من الأجزاء التي لم تخضع لها بعد. ويمكن للمستخدمين تتبّع حالة التقدّم عبر جدول [system.mutations](/ar/reference/system-tables/mutations#monitoring-mutations). وهذه عمليات كثيفة من ناحية I/O، لذا ينبغي استخدامها بحذر لأنها قد تؤثر في أداء `SELECT` على مستوى الـ cluster.

اقرأ المزيد عن [عمليات الحذف بالتعديل](/ar/reference/statements/alter/delete).

<div id="truncate-table">
  ## تفريغ الجدول
</div>

إذا كنت بحاجة إلى حذف جميع البيانات من جدول، فاستخدم الأمر `TRUNCATE TABLE` الموضح أدناه. وهذه عملية منخفضة التكلفة.

```sql theme={null}
TRUNCATE TABLE posts
```

اقرأ المزيد عن [TRUNCATE TABLE](/ar/reference/statements/truncate).

<div id="drop-partition">
  ## حذف التقسيم
</div>

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

```sql theme={null}
ALTER TABLE posts (DROP PARTITION '2008')
```

اقرأ المزيد عن [DROP PARTITION](/ar/reference/statements/alter/partition).

<div id="more-resources">
  ## مراجع إضافية
</div>

* [التعامل مع التحديثات وعمليات الحذف في ClickHouse](https://clickhouse.com/blog/handling-updates-and-deletes-in-clickhouse)
