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

متى تستخدم كلًّا منهما

استخدم OPTIMIZE FINAL عندما:
  • تريد تحسين أداء الاستعلام بشكل دائم
  • يمكنك تحمّل تكلفة التحسين لمرة واحدة
  • تُجري صيانة دورية للجدول
  • تريد تنظيف البيانات المكررة فعليًا
استخدم FINAL عندما:
  • تحتاج إلى نتائج مع إزالة التكرار فورًا
  • لا يمكنك انتظار التحسين الدائم أو لا ترغب فيه
  • لا تحتاج إلى بيانات مع إزالة التكرار إلا من حين لآخر
  • تعمل مع بيانات تتغير باستمرار
كلتاهما أداتان قيّمتان، لكن لكلٍّ منهما غرض مختلف ضمن استراتيجية إزالة التكرار في ClickHouse.
آخر تعديل في ٢٥ يونيو ٢٠٢٦