OPTIMIZE FINAL هو أمر DDL يعيد تنظيم البيانات فعليًا وبشكل دائم
ويحسّنها على القرص. وهو يدمج فعليًا أجزاء البيانات في جداول MergeTree,
وينفّذ إزالة التكرار للبيانات أثناء العملية عبر حذف الصفوف المكررة من التخزين.
FINAL هو مُعدِّل للاستعلام وقت التنفيذ يوفّر نتائج بعد إزالة التكرار من دون
تغيير بنية البيانات المخزنة. ويعمل من خلال تطبيق منطق الدمج
عند القراءة. وهو مؤقت، ولا يؤثر إلا في نتيجة الاستعلام الحالية.
غالبًا ما يُنصح المستخدمون بتجنب استخدام OPTIMIZE FINAL، لأنه يضيف
عبئًا كبيرًا على الأداء، لكن ينبغي عدم الخلط بين الاثنين. وغالبًا ما يكون من الضروري
استخدام FINAL للحصول على نتائج خالية من التكرار، خاصة عند استخدام
محركات الجداول مثل ReplacingMergeTree التي قد تحتوي على صفوف مكررة لم
تُستبدل بعد أثناء عملية الدمج الخلفية التي تتم تدريجيًا.
يلخّص الجدول أدناه الفروق الرئيسية:
| Aspect | OPTIMIZE FINAL | FINAL |
|---|---|---|
| النوع | أمر DDL | مُعدِّل للاستعلام |
| التأثير | تحسين دائم للتخزين | إزالة تكرار مؤقتة وقت الاستعلام |
| الأداء | تكلفة مرتفعة مرة واحدة، ثم استعلامات أسرع | تكلفة أقل لكل مرة، لكنها تتكرر مع كل استعلام |
| تعديل البيانات | نعم - يغيّر التخزين فعليًا | لا - عملية للقراءة فقط |
| حالة الاستخدام | صيانة/تحسين دوري | استعلامات آنية بعد إزالة التكرار |
متى تستخدم كلًّا منهما
OPTIMIZE FINAL عندما:
- تريد تحسين أداء الاستعلام بشكل دائم
- يمكنك تحمّل تكلفة التحسين لمرة واحدة
- تُجري صيانة دورية للجدول
- تريد تنظيف البيانات المكررة فعليًا
FINAL عندما:
- تحتاج إلى نتائج مع إزالة التكرار فورًا
- لا يمكنك انتظار التحسين الدائم أو لا ترغب فيه
- لا تحتاج إلى بيانات مع إزالة التكرار إلا من حين لآخر
- تعمل مع بيانات تتغير باستمرار