الانتقال إلى المحتوى الرئيسي
تجمع هذه الصفحة أمثلة لفهارس تخطي البيانات في ClickHouse، وتوضح كيفية تعريف كل نوع، ومتى يُستخدم، وكيفية التحقق من تطبيقه. تعمل جميع الميزات مع جداول عائلة MergeTree. صياغة الفهرس:
يدعم ClickHouse ستة أنواع من فهارس التخطي: يتضمن كل قسم أمثلة باستخدام بيانات نموذجية، ويوضح كيفية التحقق من استخدام الفهرس أثناء تنفيذ الاستعلام.

فهرس MinMax

يُعد فهرس minmax الأنسب لشروط النطاق على البيانات ذات الترتيب غير المحكم أو على الأعمدة المرتبطة بـ ORDER BY.
اطّلع على مثال عملي يتضمن EXPLAIN واستبعاد البيانات غير اللازمة.

فهرس Set

استخدم فهرس set عندما يكون عدد القيم المميّزة محليًا (في كل كتلة) منخفضًا؛ ولا يكون مفيدًا إذا كانت كل كتلة تحتوي على عدد كبير من القيم المميّزة.
يوضح دليل التشغيل الأساسي سير عمل الإنشاء/التجسيد والأثر قبل ذلك وبعده. text هو فهرس معكوس للبيانات النصية المُجزأة إلى رموز. وقد صُمم خصيصًا لأعباء عمل البحث النصي الكامل، مما يتيح بحثًا فعّالًا وحتميًا عن الرموز والمصطلحات. ويُوصى به لحالات استخدام اللغة الطبيعية أو البحث النصي على نطاق واسع. راجع البحث النصي الكامل باستخدام الفهارس النصية لمزيد من التفاصيل والأمثلة.
اطّلع على مثال أكثر اكتمالًا عن observability هنا في الوثائق. الفهرس النصي حتمي بالكامل وقابل للضبط بالكامل من حيث تقسيم النص إلى رموز ومعالجة النص، وذلك مقابل زيادة طفيفة في استهلاك التخزين مقارنةً بالفهارس المعتمدة على bloom filter،

مرشح Bloom عام (قيَمي)

يُعد فهرس bloom_filter مناسبًا لعمليات المساواة والتحقق من العضوية باستخدام IN في حالات “البحث عن إبرة في كومة قش”. ويقبل معلمة اختيارية تمثل معدل النتائج الإيجابية الكاذبة (الافتراضي 0.025).
تم إهمال استخدام الفهارس ngrambf_v1 للبحث النصي الكامل في إصدارات ClickHouse >= 26.2 لصالح فهارس text (راجع هنا لمزيد من التفاصيل).
يقسّم الفهرس ngrambf_v1 السلاسل النصية إلى n-grams. ويعمل بكفاءة مع الاستعلامات LIKE '%...%'. كما يدعم String/FixedString/Map (عبر mapKeys/mapValues)، بالإضافة إلى إمكانية ضبط الحجم وعدد دوال hash والبذرة. راجع وثائق مرشح Bloom لـ N-gram لمزيد من التفاصيل.
يوضح هذا الدليل أمثلة عملية ويوضح متى يُستخدم token بدلًا من ngram. أدوات مساعدة لتحسين المعلمات: تؤثر معلمات ngrambf_v1 الأربع (حجم n-gram، وحجم bitmap، ودوال hash، وseed) تأثيرًا كبيرًا في الأداء واستهلاك الذاكرة. استخدم هذه الدوال لحساب الحجم الأمثل لـ bitmap وعدد دوال hash استنادًا إلى حجم n-gram المتوقع ومعدل الإيجابيات الكاذبة المطلوب:
راجع وثائق المعلمات للاطلاع على إرشادات الضبط الكاملة.
أصبح استخدام فهارس tokenbf_v1 في البحث النصي الكامل مهملًا في إصدارات ClickHouse >= 26.2 لصالح فهارس text (راجع هنا لمزيد من التفاصيل).
يفهرس tokenbf_v1 الرموز المفصولة بمحارف غير حرفية رقمية. ينبغي استخدامه مع hasToken، أو أنماط الكلمات في LIKE، أو equals/IN. وهو يدعم الأنواع String/FixedString/Map. راجع صفحتي مرشح Bloom للرموز وأنواع مرشح Bloom لمزيد من التفاصيل.
اطّلع على أمثلة حول observability وإرشادات بشأن token مقابل ngram هنا.

أضِف الفهارس أثناء CREATE TABLE (أمثلة متعددة)

تدعم فهارس التخطي أيضًا التعبيرات المركبة وأنواع Map/Tuple/Nested. ويوضح المثال أدناه ذلك:

تطبيق MATERIALIZE على البيانات الموجودة والتحقق

يمكنك إضافة فهرس إلى أجزاء البيانات الموجودة باستخدام MATERIALIZE، وفحص الاستبعاد باستخدام EXPLAIN أو سجلات التتبّع، كما هو موضح أدناه:
يوضح هذا المثال التطبيقي لـ minmax بنية مخرجات EXPLAIN وعدد عمليات الاستبعاد.

متى تستخدم فهارس التخطي ومتى تتجنبها

استخدم فهارس التخطي عندما:
  • تكون قيم التصفية متفرقة داخل كتل البيانات
  • يوجد ارتباط قوي بأعمدة ORDER BY، أو تؤدي أنماط إدخال البيانات إلى تجميع القيم المتشابهة معًا
  • إجراء عمليات بحث نصي في مجموعات بيانات سجلات كبيرة (النوعان ngrambf_v1/tokenbf_v1)
تجنب فهارس التخطي عندما:
  • يُرجَّح أن تحتوي معظم الكتل على قيمة مطابقة واحدة على الأقل (وسيتم قراءة الكتل في جميع الأحوال)
  • التصفية على أعمدة ذات كاردينالية عالية من دون أي ارتباط بترتيب البيانات
اعتبارات مهمةإذا ظهرت قيمة ولو مرة واحدة فقط في كتلة بيانات، فسيتعين على ClickHouse قراءة الكتلة بالكامل. اختبر الفهارس باستخدام مجموعات بيانات واقعية، واضبط درجة التحبيب والمعلمات الخاصة بالنوع استنادًا إلى قياسات الأداء الفعلية.

تجاهل الفهارس أو فرض استخدامها مؤقتًا

عطّل فهارس معيّنة حسب الاسم لكل استعلام على حدة أثناء الاختبار واستكشاف الأخطاء وإصلاحها. تتوفر أيضًا إعدادات لفرض استخدام الفهارس عند الحاجة. راجع ignore_data_skipping_indices.

ملاحظات ومحاذير

  • لا تُدعَم فهارس التخطي إلا في جداول عائلة MergeTree؛ ويتم الاستبعاد على مستوى الحبيبات/الكتل.
  • الفهارس المعتمدة على مرشحات Bloom احتمالية (فالنتائج الإيجابية الكاذبة تؤدي إلى قراءات إضافية، لكنها لا تتسبب في تخطي بيانات صالحة).
  • ينبغي التحقق من مرشحات Bloom وفهارس التخطي الأخرى باستخدام EXPLAIN والتتبّع؛ واضبط درجة التحبيب لتحقيق توازن بين الاستبعاد وحجم الفهرس.
آخر تعديل في ٢٥ يونيو ٢٠٢٦