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

حذف خفيف الوزن

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

عمليات الحذف بالطفرة

يمكن تنفيذ عمليات الحذف بالطفرة باستخدام الأمر ALTER TABLE ... DELETE، على سبيل المثال.
يمكن تنفيذ هذه العمليات إما بشكل متزامن (وهو السلوك الافتراضي إذا كانت غير مكررة) أو بشكل غير متزامن (بحسب الإعداد mutations_sync). وهذه عمليات كثيفة جدًا من ناحية I/O، إذ تعيد كتابة جميع الأجزاء التي تطابق تعبير WHERE. ولا تتمتع هذه العملية بخاصية الذرية، إذ تُستبدل الأجزاء بأجزاء خضعت لـ طفرة بمجرد أن تصبح جاهزة، وسيطّلع استعلام SELECT الذي يبدأ تنفيذه أثناء طفرة على بيانات من الأجزاء التي خضعت لـ طفرة بالفعل، إلى جانب بيانات من الأجزاء التي لم تخضع لها بعد. ويمكن للمستخدمين تتبّع حالة التقدّم عبر جدول system.mutations. وهذه عمليات كثيفة من ناحية I/O، لذا ينبغي استخدامها بحذر لأنها قد تؤثر في أداء SELECT على مستوى الـ cluster. اقرأ المزيد عن عمليات الحذف بالطفرة.

تفريغ الجدول

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

حذف التقسيم

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

مراجع إضافية

آخر تعديل في ١٤ أغسطس ٢٠٢٦