الانتقال إلى المحتوى الرئيسي

نظرة عامة

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

إعدادات overflow_mode

تحتوي معظم القيود أيضًا على إعداد overflow_mode، الذي يحدّد ما يحدث عند تجاوز الحدّ، ويمكن أن يأخذ إحدى القيمتين التاليتين:
  • throw: إثارة استثناء (افتراضيًا).
  • break: إيقاف تنفيذ الاستعلام وإرجاع النتيجة الجزئية، كما لو أن بيانات المصدر قد نفدت.

إعدادات group_by_overflow_mode

يتضمن إعداد group_by_overflow_mode أيضًا القيمة any:
  • any : واصِل التجميع للمفاتيح التي دخلت إلى المجموعة، ولكن لا تُضِف مفاتيح جديدة إلى المجموعة.

قائمة الإعدادات

تُستخدم الإعدادات التالية لفرض قيود على تعقيد الاستعلام.
يمكن أن تكون قيمة القيود المفروضة على “الحد الأقصى لكمية شيء ما” هي 0، ما يعني أنها “دون قيود”.
الإعدادوصف مختصر
max_memory_usageالحد الأقصى لمقدار ذاكرة RAM التي يمكن استخدامها لتنفيذ استعلام على خادم واحد.
max_memory_usage_for_userالحد الأقصى لمقدار ذاكرة RAM التي يمكن استخدامها لتنفيذ استعلامات المستخدم على خادم واحد.
max_rows_to_readالحد الأقصى لعدد الصفوف التي يمكن قراءتها من جدول عند تنفيذ استعلام.
max_bytes_to_readالحد الأقصى لعدد البايتات (من البيانات غير المضغوطة) التي يمكن قراءتها من جدول عند تنفيذ استعلام.
read_overflow_mode_leafيحدد ما يحدث عندما يتجاوز حجم البيانات المقروءة أحد حدود العقد الطرفية.
max_rows_to_read_leafالحد الأقصى لعدد الصفوف التي يمكن قراءتها من جدول محلي على عقدة طرفية عند تنفيذ استعلام موزّع.
max_bytes_to_read_leafالحد الأقصى لعدد البايتات (من البيانات غير المضغوطة) التي يمكن قراءتها من جدول محلي على عقدة طرفية عند تنفيذ استعلام موزّع.
read_overflow_mode_leafيحدد ما يحدث عندما يتجاوز حجم البيانات المقروءة أحد حدود العقد الطرفية.
max_rows_to_group_byالحد الأقصى لعدد المفاتيح الفريدة الناتجة عن التجميع.
group_by_overflow_modeيحدد ما يحدث عندما يتجاوز عدد المفاتيح الفريدة للتجميع الحد المسموح.
max_bytes_before_external_group_byيفعّل أو يعطّل تنفيذ عبارات GROUP BY باستخدام الذاكرة الخارجية.
max_bytes_ratio_before_external_group_byنسبة الذاكرة المتاحة المسموح باستخدامها لـ GROUP BY. وعند بلوغها، تُستخدم الذاكرة الخارجية للتجميع.
max_bytes_before_external_sortيفعّل أو يعطّل تنفيذ عبارات ORDER BY باستخدام الذاكرة الخارجية.
max_bytes_ratio_before_external_sortنسبة الذاكرة المتاحة المسموح باستخدامها لـ ORDER BY. وعند بلوغها، يُستخدم الفرز الخارجي.
max_rows_to_sortالحد الأقصى لعدد الصفوف قبل الفرز. يتيح ذلك تقييد استهلاك الذاكرة أثناء الفرز.
max_bytes_to_sortالحد الأقصى لعدد البايتات قبل الفرز.
sort_overflow_modeيحدد ما يحدث إذا تجاوز عدد الصفوف المستلمة قبل الفرز أحد الحدود.
max_result_rowsيقيّد عدد الصفوف في النتيجة.
max_result_bytesيقيّد حجم النتيجة بالبايتات (غير مضغوطة).
result_overflow_modeيحدد ما يجب فعله إذا تجاوز حجم النتيجة أحد الحدود.
max_execution_timeالحد الأقصى لوقت تنفيذ الاستعلام بالثواني.
timeout_overflow_modeيحدد ما يجب فعله إذا استمر تنفيذ الاستعلام مدة أطول من max_execution_time أو إذا كان وقت التنفيذ التقديري أطول من max_estimated_execution_time.
max_execution_time_leafمماثل دلاليًا لـ max_execution_time، لكنه يُطبَّق فقط على العقد الطرفية في الاستعلامات الموزعة أو البعيدة.
timeout_overflow_mode_leafيحدد ما يحدث عندما يستمر تنفيذ الاستعلام على العقدة الطرفية مدة أطول من max_execution_time_leaf.
min_execution_speedالحد الأدنى لسرعة التنفيذ بالصفوف في الثانية.
min_execution_speed_bytesالحد الأدنى لعدد بايتات التنفيذ في الثانية.
max_execution_speedالحد الأقصى لعدد صفوف التنفيذ في الثانية.
max_execution_speed_bytesالحد الأقصى لعدد بايتات التنفيذ في الثانية.
timeout_before_checking_execution_speedيتحقق، بعد انقضاء الوقت المحدد بالثواني، من أن سرعة التنفيذ ليست بطيئة جدًا (أي لا تقل عن min_execution_speed).
max_estimated_execution_timeالحد الأقصى لوقت التنفيذ التقديري للاستعلام بالثواني.
max_columns_to_readالحد الأقصى لعدد الأعمدة التي يمكن قراءتها من جدول في استعلام واحد.
max_temporary_columnsالحد الأقصى لعدد الأعمدة المؤقتة التي يجب الاحتفاظ بها في RAM في الوقت نفسه عند تشغيل استعلام، بما في ذلك الأعمدة الثابتة.
max_temporary_non_const_columnsالحد الأقصى لعدد الأعمدة المؤقتة التي يجب الاحتفاظ بها في RAM في الوقت نفسه عند تشغيل استعلام، من دون احتساب الأعمدة الثابتة.
max_subquery_depthيحدد ما يحدث إذا احتوى الاستعلام على عدد من الاستعلامات الفرعية المتداخلة يتجاوز العدد المحدد.
max_ast_depthالحد الأقصى لعمق التداخل في الشجرة النحوية للاستعلام.
max_ast_elementsالحد الأقصى لعدد العناصر في الشجرة النحوية للاستعلام.
max_rows_in_setالحد الأقصى لعدد الصفوف في مجموعة البيانات ضمن عبارة IN المُنشأة من استعلام فرعي.
max_bytes_in_setالحد الأقصى لعدد البايتات (للبيانات غير المضغوطة) المستخدمة بواسطة مجموعة في عبارة IN المُنشأة من استعلام فرعي.
set_overflow_modeيحدد ما يحدث عند تجاوز كمية البيانات أحد الحدود.
max_rows_in_distinctالحد الأقصى لعدد الصفوف المختلفة عند استخدام DISTINCT.
max_bytes_in_distinctالحد الأقصى لحجم الحالة في الذاكرة، محسوبًا بالبايتات (غير المضغوطة)، التي يستخدمها جدول تجزئة عند استخدام DISTINCT.
distinct_overflow_modeيحدد ما يحدث عند تجاوز كمية البيانات أحد الحدود.
max_rows_to_transferالحد الأقصى للحجم (بالصفوف) الذي يمكن تمريره إلى خادم بعيد أو حفظه في جدول مؤقت عند تنفيذ قسم GLOBAL IN/JOIN.
max_bytes_to_transferالحد الأقصى لعدد البايتات (للبيانات غير المضغوطة) التي يمكن تمريرها إلى خادم بعيد أو حفظها في جدول مؤقت عند تنفيذ قسم GLOBAL IN/JOIN.
transfer_overflow_modeيحدد ما يحدث عند تجاوز كمية البيانات أحد الحدود.
max_rows_in_joinيقيّد عدد الصفوف في جدول التجزئة المستخدم عند ضمّ الجداول.
max_bytes_in_joinالحد الأقصى لحجم جدول التجزئة المستخدم عند ضمّ الجداول، بالبايت.
join_overflow_modeيحدد الإجراء الذي ينفذه ClickHouse عند بلوغ أيٍّ من حدود join التالية.
max_partitions_per_insert_blockيقيّد الحد الأقصى لعدد الأقسام في كتلة بيانات مُدرجة واحدة، ويُطرَح استثناء إذا كانت الكتلة تحتوي على عدد كبير جدًا من الأقسام.
throw_on_max_partitions_per_insert_blockيتيح لك التحكم في السلوك عند بلوغ max_partitions_per_insert_block.
max_temporary_data_on_disk_size_for_userالحد الأقصى لكمية البيانات التي تستهلكها الملفات المؤقتة على القرص، بالبايت، لجميع استعلامات المستخدم المتزامنة قيد التشغيل.
max_temporary_data_on_disk_size_for_queryالحد الأقصى لكمية البيانات التي تستهلكها الملفات المؤقتة على القرص، بالبايت، لجميع الاستعلامات المتزامنة قيد التشغيل.
max_sessions_for_userالحد الأقصى لعدد الجلسات المتزامنة لكل مستخدم مُصادَق عليه على خادم ClickHouse.
max_partitions_to_readيقيّد الحد الأقصى لعدد الأقسام التي يمكن الوصول إليها في استعلام واحد.

الإعدادات المتقادمة

الإعدادات التالية متقادمة

max_pipeline_depth

الحد الأقصى لعمق مسار المعالجة. وهو يقابل عدد التحويلات التي تمر بها كل كتلة بيانات أثناء معالجة الاستعلام. ويُحتسب ضمن حدود خادم واحد. وإذا زاد عمق مسار المعالجة عن ذلك، يتم رفع استثناء.
آخر تعديل في ٢٥ يونيو ٢٠٢٦