| الطريقة | الصياغة | متى تُستخدم |
|---|---|---|
| الحذف الخفيف | DELETE FROM [table] | يُستخدم عند حذف كميات صغيرة من البيانات. تُستبعد الصفوف فورًا من جميع استعلامات SELECT اللاحقة، لكنها في البداية لا تُزال من القرص، بل تُعلَّم داخليًا فقط على أنها محذوفة. |
| الحذف بالتعديل | ALTER TABLE [table] DELETE | يُستخدم عندما يجب حذف البيانات من القرص فورًا (على سبيل المثال، لأغراض الامتثال). ويؤثر سلبًا في أداء SELECT. |
| تفريغ الجدول | TRUNCATE TABLE [db.table] | يزيل جميع البيانات من الجدول بكفاءة. |
| حذف التقسيم | DROP PARTITION | يزيل جميع البيانات من القسم بكفاءة. |
عمليات الحذف الخفيف
SELECT اللاحقة. وتُزال هذه الصفوف المحذوفة لاحقًا أثناء دورات الدمج الطبيعية، مما يترتب عليه قدر أقل من عمليات الإدخال/الإخراج. ونتيجة لذلك، قد تظل البيانات، لفترة غير محددة، غير محذوفة فعليًا من التخزين، وإنما موسومة فقط بأنها محذوفة. إذا كنت بحاجة إلى ضمان حذف البيانات، ففكّر في استخدام أمر تعديل المذكور أعلاه.
DELETE الخفيفة سلبًا أيضًا على أداء استعلامات SELECT. كما أن هذا الأمر غير متوافق مع الجداول التي تحتوي على إسقاطات.
لاحظ أنه يتم استخدام تعديل في هذه العملية لوسم الصفوف المحذوفة (عن طريق إضافة عمود _row_exists)، مما يترتب عليه بعض عمليات I/O.
بوجه عام، يُفضَّل استخدام عمليات الحذف الخفيف بدلًا من التعديلات إذا كان من المقبول بقاء البيانات المحذوفة على القرص (على سبيل المثال، في الحالات غير المرتبطة بالامتثال). ومع ذلك، ينبغي تجنب هذا النهج إذا كانت هناك حاجة إلى حذف جميع البيانات.
اقرأ المزيد عن عمليات الحذف الخفيف.
عمليات الحذف بالتعديل
ALTER TABLE ... DELETE، على سبيل المثال.
WHERE. ولا تتمتع هذه العملية بخاصية الذرية، إذ تُستبدل الأجزاء بأجزاء خضعت لـ تعديل بمجرد أن تصبح جاهزة، وسيطّلع استعلام SELECT الذي يبدأ تنفيذه أثناء تعديل على بيانات من الأجزاء التي خضعت لـ تعديل بالفعل، إلى جانب بيانات من الأجزاء التي لم تخضع لها بعد. ويمكن للمستخدمين تتبّع حالة التقدّم عبر جدول system.mutations. وهذه عمليات كثيفة من ناحية I/O، لذا ينبغي استخدامها بحذر لأنها قد تؤثر في أداء SELECT على مستوى الـ cluster.
اقرأ المزيد عن عمليات الحذف بالتعديل.
تفريغ الجدول
TRUNCATE TABLE الموضح أدناه. وهذه عملية منخفضة التكلفة.