Skip to main content
تتوفر هذه الإعدادات في system.settings، وهي مُولَّدة تلقائيًا من الشفرة المصدرية.

min_chunk_bytes_for_parallel_parsing

  • النوع: عدد صحيح غير موقّع
  • القيمة الافتراضية: 1 MiB
الحد الأدنى لحجم الجزء، بالبايت، الذي سيحلّله كل خيط تنفيذ بالتوازي.

min_compress_block_size

لجداول MergeTree. لتقليل زمن الاستجابة عند معالجة الاستعلامات، تُضغط كتلة عند كتابة العلامة التالية إذا كان حجمها لا يقل عن min_compress_block_size. والقيمة الافتراضية هي 65,536. أما الحجم الفعلي للكتلة، فإذا كانت البيانات غير المضغوطة أقل من max_compress_block_size، فلن يكون أقل من هذه القيمة ولا أقل من حجم البيانات الخاص بعلامة واحدة. لننظر إلى مثال. افترض أن index_granularity ضُبطت على 8192 عند إنشاء الجدول. لنفترض أننا نكتب عمودًا من النوع UInt32 (4 بايت لكل قيمة). عند كتابة 8192 صفًا، سيكون الإجمالي 32 كيلوبايت من البيانات. وبما أن min_compress_block_size = 65,536، فستُنشأ كتلة مضغوطة لكل علامتين. ولنفترض أننا نكتب عمود URL من النوع String (بمتوسط حجم 60 بايت لكل قيمة). عند كتابة 8192 صفًا، سيكون المتوسط أقل قليلًا من 500 كيلوبايت من البيانات. وبما أن هذا أكبر من 65,536، فستُنشأ كتلة مضغوطة لكل علامة. وفي هذه الحالة، عند قراءة البيانات من القرص ضمن نطاق علامة واحدة، لن يجري فك ضغط بيانات إضافية.
هذا إعداد مخصص للخبراء، ويُفضَّل عدم تغييره إذا كنت لا تزال في بداية استخدام ClickHouse.

min_filtered_ratio_for_lazy_final

الحد الأدنى لنسبة العلامات التي تُصفّيها عملية تحليل الفهرس لتحسين FINAL الكسول. إذا كانت نسبة العلامات المُصفّاة أقل من هذه النسبة، فسيتم الرجوع إلى FINAL العادي. تؤدي القيمة 0 إلى تعطيل هذا التحقق.

min_hit_rate_to_use_consecutive_keys_optimization

الحد الأدنى لمعدل الإصابة لذاكرة التخزين المؤقت المستخدمة في تحسين المفاتيح المتتالية في التجميع للإبقاء عليه مفعّلًا

min_os_cpu_wait_time_ratio_to_throw

الحد الأدنى للنسبة بين وقت انتظار CPU في نظام التشغيل (المقياس OSCPUWaitMicroseconds) ووقت انشغاله (المقياس OSCPUVirtualTimeMicroseconds) لبدء النظر في رفض الاستعلامات. يُستخدم الاستيفاء الخطي بين الحد الأدنى والحد الأقصى للنسبة لحساب الاحتمال، ويكون الاحتمال عند هذه النقطة 0.

min_outstreams_per_resize_after_split

يحدّد الحد الأدنى لعدد تدفقات الإخراج للمعالج Resize أو StrictResize بعد تنفيذ عملية التقسيم أثناء إنشاء خط المعالجة. وإذا كان عدد التدفقات الناتج أقل من هذه القيمة، فلن تُجرى عملية التقسيم.

ما هي عقدة Resize

تُعدّ عقدة Resize معالجًا ضمن مسار تنفيذ الاستعلام يضبط عدد تدفقات البيانات المارة عبر خط المعالجة. ويمكنها زيادة عدد التدفقات أو تقليله لموازنة عبء العمل عبر عدة خيوط تنفيذ أو معالجات. على سبيل المثال، إذا كان الاستعلام يتطلب قدرًا أكبر من التوازي، يمكن لعقدة Resize تقسيم تدفق واحد إلى عدة تدفقات. وبالمقابل، يمكنها دمج عدة تدفقات في عدد أقل من التدفقات لتوحيد معالجة البيانات. تضمن عقدة Resize توزيع البيانات بالتساوي عبر التدفقات مع الحفاظ على بنية كتل البيانات. ويساعد ذلك على تحسين استخدام الموارد ورفع أداء الاستعلام.

لماذا يلزم تقسيم عقدة Resize

أثناء تنفيذ خط المعالجة، يحدث تنازع شديد على ExecutingGraph::Node::status_mutex الخاص بعقدة Resize المركزية، لا سيّما في البيئات ذات العدد الكبير من الأنوية، ويؤدي هذا التنازع إلى:
  1. زيادة زمن الانتظار في ExecutingGraph::updateNode، مما يؤثر مباشرةً في أداء الاستعلام.
  2. هدر قدر كبير من دورات CPU في تنازع القفل الدوراني (native_queued_spin_lock_slowpath)، مما يضعف الكفاءة.
  3. انخفاض استخدام CPU، مما يحدّ من التوازي والإنتاجية.

كيفية تقسيم عقدة Resize

  1. يُتحقَّق من عدد تدفقات الإخراج للتأكد من إمكانية إجراء التقسيم: بحيث تفي تدفقات الإخراج لكل معالج ناتج عن التقسيم بعتبة min_outstreams_per_resize_after_split أو تتجاوزها.
  2. تُقسَّم عقدة Resize إلى عقد Resize أصغر ذات عدد متساوٍ من المنافذ، بحيث تتولى كل منها مجموعة فرعية من تدفقات الإدخال والإخراج.
  3. تُعالَج كل مجموعة بشكل مستقل، مما يقلل التنازع على القفل.

تقسيم عقدة Resize بمدخلات/مخرجات بعدد اعتباطي

في بعض الحالات، عندما لا يكون عدد المدخلات/المخرجات قابلاً للقسمة على عدد عقد Resize المُقسَّمة، تُوصَل بعض المدخلات بـ NullSources وتُوصَل بعض المخرجات بـ NullSinks. يتيح ذلك إجراء التقسيم من دون التأثير في تدفّق البيانات الإجمالي.

الغرض من الإعداد

يضمن الإعداد min_outstreams_per_resize_after_split أن يكون تقسيم عُقد Resize ذا جدوى، ويمنع إنشاء عدد قليل جدًا من التدفقات، مما قد يؤدي إلى المعالجة المتوازية بصورة غير فعّالة. ومن خلال فرض حد أدنى لعدد تدفقات الإخراج، يساعد هذا الإعداد في الحفاظ على توازن بين التوازي والكلفة الإضافية، مما يُحسّن تنفيذ الاستعلام في السيناريوهات التي تتضمن تقسيم التدفقات ودمجها.

تعطيل الإعداد

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

min_table_rows_to_use_projection_index

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