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

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

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

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

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

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

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

اطّلع على المزيد حول [عمليات الحذف خفيفة الوزن](/docs/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
```

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

اقرأ المزيد عن [delete mutations](/docs/ar/reference/statements/alter/delete).

<div id="truncate-table">
  ## اقتطاع الجدول
</div>

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

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

اطّلع على المزيد حول [TRUNCATE TABLE](/docs/ar/reference/statements/truncate).

<div id="drop-partition">
  ## إسقاط القسم
</div>

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

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

اطّلع على المزيد حول [DROP PARTITION](/docs/ar/reference/statements/alter/partition).

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

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