Skip to main content
متاح ابتداءً من الإصدار 25.6محرك الجداول هذا متاح ابتداءً من الإصدار 25.6 فأحدث، وذلك في كلٍّ من OSS وCloud.
يرث هذا المحرك من MergeTree. ويكمن الفرق الأساسي في كيفية دمج أجزاء البيانات: ففي جداول CoalescingMergeTree، يستبدل ClickHouse جميع الصفوف التي لها المفتاح الأساسي نفسه (أو بصورة أدق، مفتاح الفرز نفسه) بصف واحد يحتوي على أحدث القيم غير NULL لكل عمود. يتيح ذلك تنفيذ عمليات upsert على مستوى الأعمدة، ما يعني أنه يمكنك تحديث أعمدة محددة فقط بدلًا من تحديث الصفوف بالكامل. CoalescingMergeTree مخصص للاستخدام مع أنواع Nullable في الأعمدة غير المفتاحية. وإذا لم تكن الأعمدة Nullable، فسيكون السلوك مماثلًا لما هو عليه في ReplacingMergeTree.

إنشاء جدول

للاطلاع على وصف معلمات الطلب، راجع وصف الطلب.

معاملات CoalescingMergeTree

الأعمدة

columns - اختياري. قيمة من نوع tuple تحتوي على أسماء الأعمدة التي ستُدمَج قيمها. يجب ألا تكون الأعمدة المحددة ضمن partition أو مفتاح الفرز. إذا لم يتم تحديد columns، فسيقوم ClickHouse بدمج القيم في جميع الأعمدة غير الموجودة في مفتاح الفرز.

بنود الاستعلام

عند إنشاء جدول CoalescingMergeTree، تكون البنود نفسها مطلوبة، كما هو الحال عند إنشاء جدول MergeTree.

مثال على الاستخدام

انظر إلى الجدول التالي:
أدرج البيانات فيه:
ستكون النتيجة كما يلي:
الاستعلام المُوصى به للحصول على النتيجة الصحيحة والنهائية:
يؤدي استخدام المُعدِّل FINAL إلى إجبار ClickHouse على تطبيق منطق الدمج وقت الاستعلام، مما يضمن حصولك على قيمة “الأحدث” الصحيحة والموحَّدة لكل عمود. وهذه هي الطريقة الأكثر أمانًا ودقة عند الاستعلام من جدول CoalescingMergeTree.
قد يُرجع النهج الذي يستخدم GROUP BY نتائج غير صحيحة إذا لم تكن الأجزاء الأساسية قد دُمجت بالكامل.

تجميع عناصر Tuple

عند تمكين الإعداد allow_tuple_element_aggregation، تُسطَّح أعمدة Tuple بشكل متكرر بحيث يشارك كل عنصر نهائي في الدمج بصورة مستقلة. يتيح لك ذلك تخزين عدة حقول في عمود Tuple واحد مع دمجها عنصرًا بعنصر أثناء عمليات الدمج، بحيث يحتفظ كل عمود فرعي Nullable بأحدث قيمة غير NULL بصورة مستقلة. تنطبق القواعد نفسها على الأعمدة الفرعية المسطحة كما تنطبق على الأعمدة العادية:
  • تُستبعد من الدمج الأعمدة الفرعية التي تنتمي إلى Tuple موجود في مفتاح الفرز أو مفتاح التقسيم.
  • إذا تم تحديد columns، فلن تُدمج إلا الأعمدة الفرعية التابعة لأعمدة Tuple المُدرجة.
هذا الإعداد غير قابل للتغيير ويجب تحديده عند إنشاء الجدول.
آخر تعديل في ٢٣ يوليو ٢٠٢٦