الانتقال إلى المحتوى الرئيسي

التعديلات الفورية

عند تمكين التعديلات الفورية، تُعلَّم الصفوف التي جرى تحديثها فورًا، وستُرجع استعلامات SELECT اللاحقة القيم المعدَّلة تلقائيًا. وعندما لا تكون التعديلات الفورية مُمكَّنة، فقد تحتاج إلى الانتظار حتى تُطبَّق تعديلاتك بواسطة عملية تعمل في الخلفية لكي تتمكّن من رؤية القيم المعدَّلة. يمكن تمكين التعديلات الفورية للجداول من عائلة MergeTree عبر تفعيل الإعداد على مستوى الاستعلام apply_mutations_on_fly.

مثال

لنُنشئ جدولًا ونُجري بعض عمليات mutation:
دعونا نتحقق من نتيجة التحديثات باستخدام استعلام SELECT:
لاحظ أن قيم الصفوف لم تُحدَّث بعد عند الاستعلام من الجدول الجديد:
لنرَ الآن ما الذي يحدث عند تفعيل عمليات التعديل الفوري:
يعرض استعلام SELECT الآن النتيجة الصحيحة فورًا، من دون الحاجة إلى انتظار تطبيق عمليات التعديل:

تأثير الأداء

عند تمكين التعديلات الفورية، لا تُجسَّد التعديلات على الفور، بل لا تُطبَّق إلا أثناء استعلامات SELECT. ومع ذلك، يُرجى ملاحظة أن هذه التعديلات لا تزال تُجسَّد بشكل غير متزامن في الخلفية، وهي عملية مكلفة. إذا ظل عدد التعديلات المُرسلة يتجاوز، على مدى فترة زمنية معينة، عدد التعديلات التي تُعالَج في الخلفية، فسيواصل طابور التعديلات غير المُجسَّدة التي يجب تطبيقها النمو. وسيؤدي ذلك في نهاية المطاف إلى تراجع أداء استعلامات SELECT. نقترح تمكين الإعداد apply_mutations_on_fly مع إعدادات أخرى على مستوى MergeTree مثل number_of_mutations_to_throw وnumber_of_mutations_to_delay للحد من النمو غير المحدود للتعديلات غير المُجسَّدة.

دعم الاستعلامات الفرعية والدوال غير الحتمية

توفّر التعديل الفوري دعمًا محدودًا للاستعلامات الفرعية والدوال غير الحتمية. ولا يُدعَم إلا الاستعلامات الفرعية ذات القيمة المفردة التي تكون نتيجتها بحجم معقول (ويتحكم فيه الإعداد mutations_max_literal_size_to_replace). كما لا تُدعَم إلا الدوال غير الحتمية الثابتة (مثل الدالة now()). تتحكم الإعدادات التالية في هذه السلوكيات:
  • mutations_execute_nondeterministic_on_initiator - إذا كانت القيمة true، تُنفَّذ الدوال غير الحتمية على النسخة المتماثلة المُبادِرة وتُستبدل بقيم حرفية في استعلامات UPDATE وDELETE. القيمة الافتراضية: false.
  • mutations_execute_subqueries_on_initiator - إذا كانت القيمة true، تُنفَّذ الاستعلامات الفرعية ذات القيمة المفردة على النسخة المتماثلة المُبادِرة وتُستبدل بقيم حرفية في استعلامات UPDATE وDELETE. القيمة الافتراضية: false.
  • mutations_max_literal_size_to_replace - الحد الأقصى لحجم القيم الحرفية المُسلسلة، بالبايت، التي سيتم استبدالها في استعلامات UPDATE وDELETE. القيمة الافتراضية: 16384 (16 KiB).
آخر تعديل في ٢٩ يونيو ٢٠٢٦