الانتقال إلى المحتوى الرئيسي
يخزّن نوع تخطيط القاموس cached القاموس في cache يحتوي على عدد ثابت من الخلايا. وتتضمن هذه الخلايا العناصر الأكثر استخدامًا. يكون مفتاح القاموس من النوع UInt64. عند البحث عن قيمة في القاموس، يُبحث أولًا في cache. ولكل block من البيانات، تُطلب جميع المفاتيح التي لا توجد في cache أو التي انتهت صلاحيتها من المصدر باستخدام SELECT attrs... FROM db.table WHERE id IN (k1, k2, ...). ثم تُكتب البيانات المستلمة إلى cache. إذا لم يُعثر على المفاتيح في القاموس، فستُنشأ مهمة لتحديث cache وتُضاف إلى قائمة انتظار التحديث. ويمكن التحكم في خصائص قائمة انتظار التحديث باستخدام الإعدادات max_update_queue_size, update_queue_push_timeout_milliseconds, query_wait_timeout_milliseconds, max_threads_for_updates. بالنسبة إلى قواميس cache، يمكن ضبط lifetime لانتهاء صلاحية البيانات في cache. وإذا مرّ وقت أطول من lifetime منذ تحميل البيانات في خلية معيّنة، فلن تُستخدم قيمة الخلية ويصبح المفتاح منتهي الصلاحية. ويُعاد طلب المفتاح في المرة التالية التي يلزم فيها استخدامه. ويمكن تهيئة هذا السلوك باستخدام الإعداد allow_read_expired_keys. تُعد هذه أقل طرق تخزين القواميس كفاءةً بين جميع الطرق. وتعتمد سرعة cache بدرجة كبيرة على صحة الإعدادات وسيناريو الاستخدام. ولا يحقق القاموس من النوع cache أداءً جيدًا إلا عندما تكون معدلات النجاح مرتفعة بما يكفي (الموصى به 99% فأكثر). ويمكنك عرض متوسط معدل النجاح في جدول system.dictionaries. إذا كان الإعداد allow_read_expired_keys مضبوطًا على 1، بينما القيمة الافتراضية هي 0، فسيتمكن القاموس من دعم التحديثات غير المتزامنة. وإذا طلب client مفاتيح وكانت جميعها موجودة في cache، لكن بعضًا منها منتهي الصلاحية، فسيُرجع القاموس المفاتيح منتهية الصلاحية إلى client ويطلبها بشكل غير متزامن من المصدر. لتحسين أداء cache، استخدم استعلامًا فرعيًا مع LIMIT، واستدعِ الدالة باستخدام القاموس من خارجها. جميع أنواع المصادر مدعومة. مثال على الإعدادات:
LAYOUT(CACHE(SIZE_IN_CELLS 1000000000))

اضبط حجم cache بحيث يكون كبيرًا بما يكفي. ستحتاج إلى التجربة لاختيار عدد الخلايا:
  1. اضبط قيمة مبدئية.
  2. شغّل الاستعلامات حتى يمتلئ cache بالكامل.
  3. قيّم استهلاك الذاكرة باستخدام جدول system.dictionaries.
  4. زِد عدد الخلايا أو قلّله حتى تصل إلى استهلاك الذاكرة المطلوب.
لا يُنصح باستخدام ClickHouse كمصدر لهذا التخطيط. تتطلب عمليات البحث في القاموس قراءات نقطية عشوائية، وهذا ليس نمط الوصول الذي جرى تحسين ClickHouse من أجله.
آخر تعديل في ٢٩ يونيو ٢٠٢٦