تتوفر هذه الإعدادات في system.settings، وهي مُولَّدة تلقائيًا من الشفرة المصدرية.
max_execution_speed
الحد الأقصى لعدد الصفوف التي تُنفَّذ في الثانية. يُجرى التحقق من ذلك عند كل كتلة بيانات عند انتهاء مهلة
timeout_before_checking_execution_speed.
إذا كانت سرعة التنفيذ مرتفعة، فستُخفَّض.
max_execution_speed_bytes
الحد الأقصى لعدد بايتات التنفيذ في الثانية. يُتحقَّق منه عند كل كتلة بيانات عندما تنتهي مهلة
timeout_before_checking_execution_speed.
إذا كانت سرعة التنفيذ مرتفعة، فستُخفَّض.
max_execution_time
الحد الأقصى لوقت تنفيذ الاستعلام، بالثواني.
قد يكون فهم المَعلَمة max_execution_time مربكًا بعض الشيء.
إذ إنها تعمل بالاعتماد على الاستيفاء وفقًا لسرعة تنفيذ الاستعلام الحالية
(ويُتحكَّم في هذا السلوك بواسطة timeout_before_checking_execution_speed).
سيُوقِف ClickHouse الاستعلام إذا تجاوز وقت التنفيذ المتوقَّع
القيمة المحددة في max_execution_time. افتراضيًا، تُضبط timeout_before_checking_execution_speed
على 10 ثوانٍ. وهذا يعني أنه بعد 10 ثوانٍ من تنفيذ الاستعلام، سيبدأ ClickHouse
في تقدير وقت التنفيذ الإجمالي. فإذا كانت max_execution_time، على سبيل المثال،
مضبوطة على 3600 ثانية (ساعة واحدة)، فسينهي ClickHouse الاستعلام إذا تجاوز الوقت المقدَّر
هذا الحد البالغ 3600 ثانية. وإذا ضبطت timeout_before_checking_execution_speed
على 0، فسيستخدم ClickHouse الوقت الفعلي كأساس لـ max_execution_time.
إذا تجاوز وقت تشغيل الاستعلام عدد الثواني المحدد، فسيُحدَّد
السلوك بواسطة timeout_overflow_mode، والتي تُضبط افتراضيًا على throw.
max_execution_time_leaf
مشابه من حيث المعنى لـ max_execution_time، ولكنه يُطبَّق فقط
على العقد الطرفية في الاستعلامات الموزعة أو البعيدة.
على سبيل المثال، إذا أردنا تقييد وقت التنفيذ على عقدة طرفية إلى 10s ولكن
من دون فرض أي حد على العقدة الأصلية، فبدلاً من استخدام max_execution_time في
إعدادات الاستعلام الفرعي المتداخلة:
SELECT count()
FROM cluster(cluster, view(SELECT * FROM t SETTINGS max_execution_time = 10));يمكن استخدام max_execution_time_leaf كأحد إعدادات الاستعلام:
SELECT count()
FROM cluster(cluster, view(SELECT * FROM t)) SETTINGS max_execution_time_leaf = 10;