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