ما الذي يتيح التزامن العالي
تُعد الاستعلامات الفردية السريعة أساسًا لارتفاع QPS. فكلما قلّ العمل الذي ينفذه كل استعلام، زاد عدد الاستعلامات التي يستطيع الخادم تشغيلها في الوقت نفسه. وتشمل الميزات الرئيسية التي تقلل العمل المطلوب لكل استعلام ما يلي:- الفهرس الأساسي المتناثر لعائلة محركات الجداول MergeTree، الذي يتجنب قراءة البيانات غير المطابقة للاستعلام.
- ذواكر التخزين المؤقت، مثل ذاكرة التخزين المؤقت للاستعلامات، التي تعرض استعلامات
SELECTالمتكررة مباشرةً من النتائج المخزنة مؤقتًا. - الإسقاطات، التي تحسب البيانات مسبقًا عند الإدراج ويمكن أن يختارها ClickHouse تلقائيًا، والعروض المادية، التي تخزن النتائج المحسوبة مسبقًا في جدول هدف منفصل يمكن للاستعلامات القراءة منه مباشرةً.
التحكم في التزامن وفرض حدوده
افتراضيًا، لا يفرض ClickHouse OSS حدًا على عدد الاستعلامات المتزامنة. يضبط ClickHouse Cloud القيمةmax_concurrent_queries_for_all_users على 1000 افتراضيًا. يمكنك تهيئة الحدود على عدة مستويات:
- يحدّ
max_concurrent_queriesمن العدد الإجمالي للاستعلامات المنفّذة بالتزامن على الخادم. وتفرضmax_concurrent_insert_queriesوmax_concurrent_select_queriesالحد نفسه على استعلاماتINSERTوSELECTكلٌّ على حدة. والقيمة الافتراضية للثلاثة هي0(بلا حدود). - يحدّ
max_concurrent_queries_for_userوmax_concurrent_queries_for_all_usersمن التزامن لكل مستخدم أو لجميع المستخدمين.
عزل أعباء العمل
لمنع أعباء العمل المتزامنة من التأثير في بعضها بعضًا، يوفر ClickHouse ما يلي:- جدولة أعباء العمل لتنظيم كيفية تقاسم أعباء العمل لموارد CPU والذاكرة وIO.
- الحصص للحد من استخدام الموارد لكل مستخدم خلال فاصل زمني.
- قيود تعقيد الاستعلام للحماية من الاستعلامات الفردية التي تستهلك قدرًا مفرطًا من الموارد.
- التحكم في الوصول المستند إلى الدور المدمج لتحديد نطاق الاستعلامات المسموح بها لكل مستخدم.