الانتقال إلى المحتوى الرئيسي
هل تبحث عن تفاصيل متقدمة حول الفهرسة؟تقدّم هذه الصفحة الفهرس الأساسي المتناثر في ClickHouse، وكيفية بنائه، وآلية عمله، وكيف يساعد في تسريع الاستعلامات.للاطلاع على استراتيجيات فهرسة متقدمة وتفاصيل تقنية أعمق، راجع شرحًا معمقًا عن الفهارس الأساسية.

كيف يعمل الفهرس الأساسي المتناثر في ClickHouse؟


يساعد الفهرس الأساسي المتناثر في ClickHouse على تحديد الحبيبات—وهي كتل من الصفوف—التي يُحتمل أن تحتوي على بيانات تطابق شرط query على أعمدة primary key للجدول، وذلك بكفاءة. في القسم التالي، نشرح كيفية إنشاء هذا الفهرس من القيم الموجودة في تلك الأعمدة.

إنشاء الفهرس الأساسي المتناثر

لتوضيح كيفية بناء الفهرس الأساسي المتناثر، نستخدم جدول uk_price_paid_simple مع بعض الرسوم المتحركة. وللتذكير بما سبق، في ① جدول المثال لدينا ذي المفتاح الأساسي (town, street)، تُخزَّن ② البيانات المُدرجة ③ على القرص، مرتبةً حسب قيم أعمدة المفتاح الأساسي، ومضغوطةً، في ملفات منفصلة لكل عمود:

لأغراض المعالجة، تُقسَّم بيانات كل عمود ④ منطقيًا إلى حبيبات—تغطي كل منها 8,192 صفًا—وهي أصغر الوحدات التي تعمل عليها آليات معالجة البيانات في ClickHouse. وهذا التقسيم إلى حبيبات هو أيضًا ما يجعل الفهرس الأساسي متناثرًا: فبدلًا من فهرسة كل صف، يخزّن ClickHouse ⑤ قيم المفتاح الأساسي من صف واحد فقط لكل حبيبة—وتحديدًا الصف الأول. وينتج عن ذلك مُدخل فهرس واحد لكل حبيبة:

وبفضل هذا التبعثر، يكون الفهرس الأساسي صغيرًا بما يكفي ليتسع بالكامل في الذاكرة، مما يتيح تصفيةً سريعةً للاستعلامات التي تتضمن شروطًا على أعمدة المفتاح الأساسي. في القسم التالي، نوضح كيف يساعد ذلك في تسريع مثل هذه الاستعلامات.

استخدام الفهرس الأساسي

نوضح بإيجاز كيف يُستخدم الفهرس الأساسي المتناثر لتسريع الاستعلام من خلال رسم متحرك آخر:

① يتضمن استعلام المثال شرطًا على كلٍّ من عمودَي المفتاح الأساسي: town = 'LONDON' AND street = 'OXFORD STREET'. ② لتسريع الاستعلام، يحمّل ClickHouse الفهرس الأساسي للجدول إلى الذاكرة. ③ ثم يفحص إدخالات الفهرس لتحديد الحبيبات التي قد تحتوي على صفوف تطابق الشرط، أي الحبيبات التي لا يمكن تخطيها. ④ بعد ذلك، تُحمَّل هذه الحبيبات التي يُحتمل أن تكون ذات صلة وتُعالَج في الذاكرة، إلى جانب الحبيبات المقابلة من أي أعمدة أخرى مطلوبة للاستعلام.

مراقبة الفهارس الأساسية

لكل جزء بيانات في الجدول فهرسه الأساسي الخاص به. ويمكننا فحص محتويات هذه الفهارس باستخدام الدالة الجدولية mergeTreeIndex. يعرض الاستعلام التالي عدد المدخلات في الفهرس الأساسي لكل جزء بيانات في جدول المثال لدينا:
يعرض هذا الاستعلام أول 10 إدخالات من الفهرس الأساسي لأحد أجزاء البيانات الحالية. لاحظ أن هذه الأجزاء تُدمَج باستمرار في الخلفية لتشكيل أجزاء أكبر:
أخيرًا، نستخدم عبارة EXPLAIN لمعرفة كيف تُستخدَم الفهارس الأساسية لجميع أجزاء البيانات لتجاوز الحبيبات التي لا يمكن أن تحتوي على صفوف تطابق شروط الاستعلام الوارد في المثال. وتُستبعد هذه الحبيبات من التحميل والمعالجة:
لاحظ كيف يُظهر الصف 13 من مخرجات EXPLAIN أعلاه أن 3 فقط من أصل 3,609 حبيبات من جميع أجزاء البيانات قد حددها تحليل الفهرس الأساسي للمعالجة. أما الحبيبات المتبقية، فقد جرى تخطيها بالكامل. ويمكننا أيضًا ملاحظة أنه جرى تخطي معظم البيانات بمجرد تشغيل الاستعلام:
كما هو موضح أعلاه، لم تُعالَج سوى نحو 25,000 صف من أصل ما يقارب 30 مليون صف في جدول المثال:

النقاط الرئيسية

  • تساعد الفهارس الأساسية المتناثرة ClickHouse على تخطي البيانات غير الضرورية عبر تحديد الحبيبات التي قد تحتوي على صفوف تطابق شروط الاستعلام على أعمدة المفتاح الأساسي.
  • يخزّن كل فهرس قيم المفتاح الأساسي من الصف الأول فقط في كل حبيبة (تحتوي الحبيبة افتراضيًا على 8,192 صفًا)، مما يجعله مدمجًا بما يكفي ليوضع في الذاكرة.
  • لكل جزء بيانات في جدول MergeTree فهرسه الأساسي الخاص، ويُستخدم هذا الفهرس بشكل مستقل أثناء تنفيذ الاستعلامات.
  • أثناء تنفيذ الاستعلامات، يتيح الفهرس لـ ClickHouse تخطي الحبيبات، مما يقلل من عمليات I/O واستخدام الذاكرة ويُسرّع الأداء.
  • يمكنك فحص محتويات الفهرس باستخدام الدالة الجدولية ‏mergeTreeIndex ومراقبة استخدام الفهرس باستخدام clause ‏EXPLAIN.

أين تجد مزيدًا من المعلومات

للتعمق أكثر في كيفية عمل الفهارس الأساسية المتناثرة في ClickHouse، بما في ذلك اختلافها عن فهارس قواعد البيانات التقليدية وأفضل الممارسات لاستخدامها، اطّلع على الشرح التفصيلي حول الفهرسة. إذا كنت مهتمًا بكيفية معالجة ClickHouse للبيانات التي يحددها مسح الفهرس الأساسي بدرجة عالية من التوازي، فراجع دليل توازي الاستعلام هنا.
آخر تعديل في ٢٩ يونيو ٢٠٢٦