adaptive_aggregator_freeze_threshold
عدد المفاتيح الذي عنده يجمّد المُجمِّع التكيفي جدول التجزئة المحلي الخاص بالخيط (راجعenable_adaptive_aggregator). تُبقي القيم الأصغر الجداول المجمّدة ضمن ذاكرة التخزين المؤقت، بينما تتيح القيم الأكبر لها استيعاب قدر أكبر من المفاتيح المتكررة. تؤدي القيمة 0 إلى تجميد الجداول عند أول فرصة، مما يجعل الخوارزمية تعمل كتجزئة خالصة وفقًا لتجزئة المفتاح: يُوجَّه كل مفتاح وفقًا لتجزئته ويُجمَّع لدى مالك واحد، لكن يُؤجَّل ذلك إلى مرحلة الدمج بدلًا من تبادله بين الخيوط أثناء الفحص.
adaptive_aggregator_freeze_threshold_bytes
حجم الذاكرة الذي عنده يُجمِّد المُجمِّع التكيفي جدول التجزئة المحلي لخيط (انظرenable_adaptive_aggregator). يُجمَّد الجدول عند بلوغ أيٍّ من هذه القيمة وadaptive_aggregator_freeze_threshold أولًا. الحجم هو عدد البايتات التي خصصها الجدول المحلي نفسه (مخزن جدول التجزئة وساحاته)، ويُتحقق منه بين الكتل. يصبح حد البايتات مهمًا عندما تكون المفاتيح أو حالات التجميع عريضة، إذ إن عتبة عدد المفاتيح وحدها قد تسمح لهذه الجداول بتجاوز سعة ذاكرات التخزين المؤقت في CPU. عند القيمة الافتراضية، تستمر الجداول ذات عروض المفاتيح والحالات العادية في التجميد وفقًا لعدد المفاتيح. تعطل القيمة 0 حد البايتات، لذا تحدد عتبة عدد المفاتيح وحدها وقت التجميد.
add_http_cors_header
كتابة ترويسة CORS لـ HTTP.analyze_index_with_space_filling_curves
إذا كان فهرس جدول ما يتضمن منحنىً مالئًا للفراغ، مثلORDER BY mortonEncode(x, y) أو ORDER BY hilbertEncode(x, y)، وكان الاستعلام يتضمن شروطًا على وسائطه، مثل x >= 10 AND x <= 20 AND y >= 20 AND y <= 30، فسيُستخدم المنحنى المالئ للفراغ في تحليل الفهرس. حاليًا، يتخطى التحليل ثنائي الأبعاد المنحنيات ذات الوسائط من النوع UInt64 لأن تطبيقات المنحنيات تستخدم 32 بت فقط لكل وسيطة.
analyzer_inline_views
عند تمكينه، يستبدل analyzer طرق العرض العادية (غير المُجسَّدة وغير المعلَّمة بمعلمات) بالاستعلامات الفرعية التي تعرّفها، مما يتيح تحسينات عابرة للحدود مثل دفع عبارات التصفية وتشذيب الأعمدة.any_join_distinct_right_table_keys
يُمكّن السلوك القديم لخادم ClickHouse في عملياتANY INNER|LEFT JOIN.
استخدم هذا الإعداد فقط للتوافق مع الإصدارات السابقة إذا كانت حالات الاستخدام لديك تعتمد على سلوك
JOIN القديم.- لا تتطابق نتائج العمليتين
t1 ANY LEFT JOIN t2وt2 ANY RIGHT JOIN t1لأن ClickHouse يستخدم منطق ربط مفاتيح الجداول من اليسار إلى اليمين بعلاقة متعدد إلى واحد. - تحتوي نتائج عمليات
ANY INNER JOINعلى جميع صفوف الجدول الأيسر، كما هو الحال في عملياتSEMI LEFT JOIN.
- تتطابق نتائج العمليتين
t1 ANY LEFT JOIN t2وt2 ANY RIGHT JOIN t1لأن ClickHouse يستخدم منطقًا يوفّر ربطًا للمفاتيح بعلاقة واحد إلى متعدد في عملياتANY RIGHT JOIN. - تحتوي نتائج عمليات
ANY INNER JOINعلى صف واحد لكل مفتاح من الجدولين الأيسر والأيمن.
- 0 — السلوك القديم معطّل.
- 1 — السلوك القديم مُمكّن.
archive_adaptive_buffer_max_size_bytes
يحدّد الحجم الأقصى للمخزن المؤقت المتكيّف المستخدم عند الكتابة إلى ملفات الأرشيف (على سبيل المثال، أرشيفات tararrow_flight_request_descriptor_type
نوع الواصف المستخدم لطلبات Arrow Flight. يرسل ‘path’ اسم مجموعة البيانات كواصف path. ويرسل ‘command’ استعلام SQL كواصف command (وهو مطلوب لـ Dremio). القيم الممكنة:- ‘path’ — استخدم FlightDescriptor::Path (الافتراضي، ويعمل مع معظم خوادم Arrow Flight)
- ‘command’ — استخدم FlightDescriptor::Command مع استعلام SELECT (مطلوب لـ Dremio)
backup_slow_all_threads_after_retryable_s3_error
عند ضبطه علىtrue، يتم إبطاء جميع الخيوط التي تنفّذ طلبات S3 إلى نقطة نهاية النسخة الاحتياطية نفسها
إذا واجه أي طلب S3 واحد خطأ S3 قابلاً لإعادة المحاولة، مثل ‘Slow Down’.
وعند ضبطه على false، يتعامل كل خيط مع التراجع بين محاولات طلبات S3 بشكل مستقل عن الخيوط الأخرى.
cache_warmer_threads
لا يكون لهذا الإعداد تأثير إلا في ClickHouse Cloud. عدد الخيوط الخلفية المخصّصة لتنزيل أجزاء البيانات الجديدة استباقيًا إلى ذاكرة التخزين المؤقت لنظام الملفات عند تمكين cache_populated_by_fetch. استخدم القيمة صفر للتعطيل.calculate_text_stack_trace
احسب تتبّع المكدس النصي عند حدوث استثناءات أثناء تنفيذ الاستعلام. هذا هو السلوك الافتراضي. ويتطلب ذلك عمليات بحث عن الرموز، ما قد يبطئ اختبارات التشويش عند تنفيذ عدد كبير جدًا من الاستعلامات الخاطئة. وفي الحالات العادية، ينبغي ألا تعطّل هذا الخيار.cancel_http_readonly_queries_on_client_close
يلغي استعلامات HTTP للقراءة فقط (مثلSELECT) عند إغلاق العميل للاتصال دون انتظار الاستجابة.
القيمة الافتراضية في Cloud: 1.
cascades_aggregation_pushdown
النظر في دفع التجميع الجزئي إلى ما قبل الـ join (التجميع الفوري - Eager) كبديل قائم على التكلفة في مُحسِّن Cascades. لا يسري مفعوله إلا مع تفعيلenable_cascades_optimizer = 1 وmake_distributed_plan = 1 معًا.
checksum_on_read
تحقّق من قيم التحقّق عند القراءة. يكون هذا الإعداد مفعّلًا افتراضيًا، ويجب أن يظل مفعّلًا دائمًا في بيئة الإنتاج. لا يُرجى توقّع أي فائدة من تعطيل هذا الإعداد. وقد يُستخدم فقط لأغراض التجربة واختبارات الأداء. لا ينطبق هذا الإعداد إلا على الجداول من عائلة MergeTree. أمّا في محركات الجداول الأخرى، وعند تلقّي البيانات عبر الشبكة، فيُجرى دائمًا التحقّق من قيم التحقّق.الضغط
يطبّق ضغطًا عامًا على جسم الاستجابة، مثلcompression=gz. لاحظ أن هذا مستقل عن Content-Encoding (ضغط HTTP) وعن المعلمة القديمة compress (ضغط ClickHouse الأصلي). ويعادل ذلك تحديد امتداد ملف مضغوط في مسار URL.
هذا إعداد لتشكيل الاستجابة ضمن واجهة HTTP: يُطبَّق قبل تنفيذ الاستعلام (إذ تُعَدّ مخازن الاستجابة المؤقتة مسبقًا)، لذا يجب توفيره عبر معلمة HTTP URL، أو امتداد الملف في مسار URL، أو ملف تعريف المستخدم، وليس عبر عبارة SETTINGS داخل الاستعلام (إذ لا يكون لها أي تأثير ويُرفَض استخدامها).
connection_pool_max_wait_ms
مدة الانتظار بالمللي ثانية للحصول على اتصال عندما يكون تجمع الاتصالات ممتلئًا. يُطبَّق الانتظار على كل نسخة متماثلة على حدة، إذ يوجد تجمع اتصالات واحد لكل نسخة متماثلة. وعند انتهاء المهلة، تفشل المحاولة بالخطأNO_FREE_CONNECTION. في مسار تجاوز الفشل المستخدم مع استعلامات SELECT الموزعة، يُعامل ذلك
كأي نسخة متماثلة أخرى غير صالحة للاستخدام: يحاول الاستعلام النسخ المتماثلة المتبقية، ولا يفشل بالخطأ
ALL_CONNECTION_TRIES_FAILED إلا بعد تجربة جميعها. لذلك، لا يفرض هذا الإعداد حدًا على
الاستعلام ككل؛ فمع N نسخة متماثلة وT محاولات لكل منها، قد يصل إجمالي وقت الانتظار إلى
connection_pool_max_wait_ms مضروبًا في N مضروبًا في T، حيث إن T هو
connections_with_failover_max_tries، لكنه لا يقل أبدًا عن واحد،
لأن النسخة المتماثلة تُجرَّب دائمًا مرة واحدة قبل استبعادها. استخدم
max_execution_time لفرض حد على
الاستعلام نفسه.
ولا يحجب skip_unavailable_shards هذا الخطأ: فالنسخة المتماثلة التي لم يجد لها المُبادِر منفذ اتصال
حرًّا لم يجرِ الاتصال بها أصلًا، ومن ثَمّ لا يُعامل السيجمنت على أنه غير متاح.
القيم الممكنة:
- عدد صحيح موجب.
- 0 — مهلة انتظار لا نهائية. يظل الانتظار قابلاً للمقاطعة بواسطة
KILL QUERY، وبواسطةmax_execution_timeعند استخدام timeout_overflow_mode الافتراضيthrow. في وضعbreak، لا يلغي الحد الزمني الاستعلام، لذا يستمر الانتظار حتى يتم تحرير اتصال؛ بينما يظلKILL QUERYقادرًا على مقاطعته.
connections_with_failover_max_tries
الحد الأقصى لعدد محاولات الاتصال بكل نسخة متماثلة لمحرك الجدول Distributed.convert_query_to_cnf
عند ضبطه علىtrue، سيُحوَّل استعلام SELECT إلى الصيغة العادية الاقترانية (CNF). في بعض الحالات، قد يؤدي إعادة كتابة الاستعلام بصيغة CNF إلى تنفيذ أسرع (راجع مشكلة Github للاطلاع على الشرح).
على سبيل المثال، لاحظ كيف لا يُعدَّل استعلام SELECT التالي (وهو السلوك الافتراضي):
convert_query_to_cnf على true ونرَ ما الذي سيتغير:
WHERE أُعيدت كتابتها إلى صيغة CNF، لكن مجموعة النتائج هي نفسها تمامًا — فالمنطق البولياني لم يتغير:
count_matches_stop_at_empty_match
يتوقف العدّ بمجرد أن يطابق النمط طولًا صفريًا في الدالةcountMatches.
cross_to_inner_join_rewrite
استخدم INNER JOIN بدلًا من الربط بالفاصلة/CROSS JOIN إذا كانت هناك تعبيرات ربط في قسم WHERE. القيم: 0 - بدون إعادة كتابة، 1 - طبّق ذلك عند الإمكان على الربط بالفاصلة/CROSS JOIN، 2 - افرض إعادة كتابة جميع عمليات الربط بالفاصلة، وCROSS JOIN عند الإمكانdata_type_default_nullable
يسمح بأن تكون أنواع البيانات في تعريفات الأعمدة التي لا تتضمن مُعدِّلات صريحة NULL or NOT NULL من النوع Nullable. القيم الممكنة:- 1 — تُضبط أنواع البيانات في تعريفات الأعمدة على
Nullableافتراضيًا. - 0 — تُضبط أنواع البيانات في تعريفات الأعمدة على أنها غير
Nullableافتراضيًا.
decimal_check_overflow
التحقق من تجاوز السعة في عمليات الحساب/المقارنة العشريةdeduplicate_blocks_in_dependent_materialized_views
يُفعِّل أو يعطِّل التحقق من إزالة التكرار للعروض المادية التي تتلقى البيانات من جداول Replicated*. القيم الممكنة:- 0 — معطّل.
- 1 — مفعّل.
defer_partition_pruning_after_final
عند التمكين (وهو الإعداد الافتراضي)، يتم تخطّي تقليم الأقسام في استعلاماتFINAL على الجداول التي لا تكون
أعمدة مفتاح القسم فيها جزءًا من مفتاح الفرز. وهذا هو السلوك الآمن من ناحية الصحة
الذي أُدخل في 26.3: فقد يحتاج FINAL إلى إزالة تكرار الصفوف التي تشترك في
مفتاح أساسي واحد لكنها موجودة في أقسام مختلفة، وسيؤدي تقليم الأقسام إلى استبعاد
مثل هذه الصفوف بصمت من مدخلات إزالة التكرار.
عند التعطيل، يُطبَّق تقليم الأقسام حتى مع FINAL، مما يعيد سلوك ما قبل 26.3.
وقد يكون هذا أسرع بكثير للاستعلامات التي تحتوي على شروط WHERE على
عمود القسم، لكنه يكون صحيحًا فقط عندما يستحيل وجود صفوف لها المفتاح الأساسي نفسه
في أقسام مختلفة — مثل جداول سجل الأحداث التي يُحدَّد فيها عمود القسم وقت insert
ولا يتغير مطلقًا.
لا يؤثر هذا الإعداد إلا في الجداول المُقسَّمة التي لا تكون أعمدة مفتاح القسم فيها مُتضمَّنة
ضمن مفتاح الفرز؛ أما في الجداول الأخرى، فيُطبَّق تقليم الأقسام دائمًا.
القيم الممكنة:
- 0 — طبّق تقليم الأقسام قبل
FINAL(سلوك ما قبل 26.3، أسرع لكنه غير آمن في الحالة العامة). - 1 — أجّل تقليم الأقسام إلى ما بعد
FINAL(الافتراضي، آمن من ناحية الصحة).
describe_compact_output
إذا كانت القيمة true، فأدرِج فقط أسماء الأعمدة وأنواعها في نتيجة الاستعلام DESCRIBEdialect
اللهجة المستخدمة لتحليل الاستعلام. القيم المدعومة:clickhouse(افتراضي) — ClickHouse SQL القياسية.kusto— Kusto Query Language. يتطلب الإعداد التجريبيallow_experimental_kusto_dialect.prql— PRQL. يتطلب الإعداد التجريبيallow_experimental_prql_dialect.polyglot— يترجم SQL من لهجات أخرى، مثل MySQL وPostgreSQL، إلى ClickHouse SQL. يتطلب الإعداد التجريبيallow_experimental_polyglot_dialect.promql— PromQL (لغة استعلام Prometheus)، ويُقيَّم على جدول TimeSeries ويُضبط من خلال الإعداداتpromql_databaseوpromql_tableوpromql_evaluation_time.clickhouse_json— بدلًا من نص SQL، يُفسَّر الاستعلام على أنه JSON AST (ناتجparseQueryToJSON). يظل استعلامSETمعروفًا بصيغته العادية، بحيث يمكن التبديل مجددًا إلى لهجة أخرى. يتطلب الإعداد التجريبيenable_json_ast_dialect.trino— Trino SQL: يترجم صياغة Trino (ARRAY[...]وTRY_CASTوUNNESTوغيرها) ويطابق أسماء دوال Trino مع نظيراتها في ClickHouse. يتطلب الإعداد التجريبيenable_trino_dialect.
discard_query_data
إذا كان مُمكّنًا، يتجاوز الخادم إرسال صفوف نتيجة الاستعلام إلى العميل. ومع ذلك، يظل الاستعلام يُنفَّذ ويُسجَّل بالكامل على الخادم، كما يواصل العميل تلقي الحزم الأخرى. يُستخدم لحركة المرور الظلية، واختبارات الأداء، والتشويش. ليس له أي تأثير على الاستعلامات الثانوية. يؤثر فقط في بروتوكول TCP الأصلي.distinct_overflow_mode
يحدّد ما يحدث عند تجاوز كمية البيانات أحد الحدود. القيم الممكنة:throw: رفع استثناء (الافتراضي).break: إيقاف تنفيذ الاستعلام وإرجاع نتيجة جزئية، كما لو أن بيانات المصدر قد نفدت.
do_not_merge_across_partitions_select_final
حسّن أداء استعلامات FINAL بتجنّب عمليات الدمج عبر أقسام مختلفة. عند تفعيل هذا الإعداد، لن تُدمَج الأجزاء من أقسام مختلفة معًا أثناء استعلامات SELECT FINAL. وبدلًا من ذلك، سيقتصر الدمج على الأجزاء داخل كل قسم على حدة. ويمكن أن يحسّن ذلك أداء الاستعلام بشكل كبير عند العمل مع الجداول المُقسّمة.dynamic_throw_on_type_mismatch
عند تطبيق دالة على عمود Dynamic باستخدام التنفيذ الافتراضي، يحدد هذا الإعداد ما يحدث للصفوف التي يكون نوعها الفعلي غير متوافق مع الدالة:true(الافتراضي) — طرح استثناء.false— إرجاعNULLلتلك الصفوف بدلًا من ذلك.
enforce_strict_identifier_format
عند تمكينه، يُسمح فقط بالمعرّفات التي تحتوي على أحرف وأرقام وشرطات سفلية.engine_url_skip_empty_files
يفعّل أو يعطّل تخطي الملفات الفارغة في الجداول التي تستخدم محرك URL. القيم الممكنة:- 0 — يُطلق
SELECTاستثناءً إذا كان الملف الفارغ غير متوافق مع التنسيق المطلوب. - 1 — يعيد
SELECTنتيجة فارغة للملف الفارغ.
exact_rows_before_limit
عند تفعيل هذا الإعداد، سيقدّم ClickHouse قيمة دقيقة لإحصائية rows_before_limit_at_least، ولكن سيكون ذلك على حساب ضرورة قراءة البيانات التي تسبق الحد بالكاملexcept_default_mode
يضبط الوضع الافتراضي في استعلام EXCEPT. القيم الممكنة: سلسلة فارغة، ‘ALL’، ‘DISTINCT’. إذا كانت فارغة، فسيؤدي الاستعلام من دون وضع إلى إطلاق استثناء.exclude_materialize_skip_indexes_on_insert
يستثني فهارس التخطي المحددة من بنائها وتخزينها أثناء عمليات INSERT. وستظل فهارس التخطي المستثناة تُبنى وتُخزَّن أثناء عمليات الدمج أو من خلال استعلام MATERIALIZE INDEX صريح. لا يكون له أي تأثير إذا كانت materialize_skip_indexes_on_insert مضبوطة على false. مثال:execute_exists_as_scalar_subquery
نفِّذ استعلامات EXISTS الفرعية غير المرتبطة باعتبارها استعلامات فرعية ذات القيمة المفردة. وكما هو الحال في الاستعلامات الفرعية ذات القيمة المفردة، تُستخدم الذاكرة المؤقتة ويُطبَّق طيّ الثوابت على النتيجة. القيمة الافتراضية في Cloud:0.
explain_query_plan_default
التنسيق الافتراضي الذي يستخدمهEXPLAIN PLAN.
القيم الممكنة:
pretty(الافتراضي منذ 26.7) — تكونactionsوcompactوprettyمضبوطة افتراضيًا علىtrue، ما ينتج مخططًا موجزًا ومنسقًا ومشروحًا بالإجراءات.legacy— المخرجات المستخدمة قبل 26.7.
actions أو compact أو pretty صراحةً في تعليمة EXPLAIN (على سبيل المثال، EXPLAIN actions = 0, compact = 0, pretty = 0 SELECT ...) دائمًا إلى تجاوز هذا الإعداد.
يحتفظ EXPLAIN PLAN مع json = 1 أو distributed = 1 بالقيم الافتراضية القديمة (قبل 26.7) بغض النظر عن هذا الإعداد، ما لم يتم ضبط actions أو compact أو pretty صراحةً. ولا يمكن لمخرجات pretty تمثيل نتائج JSON أو المخططات الموزعة لكل shard، لذا لا تُعرض هذه الأوضاع بشكل صحيح إلا بصيغة legacy.
explain_syntax_single_record
أعد مخرجاتEXPLAIN SYNTAX كسجل واحد (يتضمن أسطرًا جديدة مضمنة) بدلًا من سجل لكل سطر، لتكون النتيجة صفًا واحدًا يمكن استرجاعه (على سبيل المثال، يعيد SELECT count() FROM (EXPLAIN SYNTAX ...) القيمة 1).
يؤدي تحديد الخيار single_record صراحةً في عبارة EXPLAIN SYNTAX (على سبيل المثال، EXPLAIN SYNTAX single_record = 0 SELECT ...) إلى تجاوز هذا الإعداد دائمًا.
اضبطه على false لاستعادة المخرجات السابقة للإصدار 26.8، بسجل لكل سطر، أو اضبط compatibility على أي إصدار أقدم من 26.8.
extract_key_value_pairs_max_pairs_per_row
الأسماء البديلة:extract_kvp_max_pairs_per_row
الحد الأقصى لعدد الأزواج التي يمكن أن تُنتجها الدالة extractKeyValuePairs. يُستخدم كإجراء احترازي لمنع استهلاك قدر كبير جدًا من الذاكرة.
extremes
ما إذا كان سيتم احتساب القيم القصوى (القيم الصغرى والكبرى في أعمدة نتيجة استعلام). يقبل 0 أو 1. القيمة الافتراضية هي 0 (معطّل). لمزيد من المعلومات، راجع قسم “القيم القصوى”.fallback_to_stale_replicas_for_distributed_queries
يفرض توجيه الاستعلام إلى نسخة متماثلة قديمة إذا لم تكن البيانات المحدَّثة متاحة. راجع Replication. يختار ClickHouse أكثر النسخ المتماثلة القديمة صلةً بالجدول. يُستخدم عند تنفيذSELECT من distributed table تشير إلى replicated tables.
افتراضيًا، 1 (مُمكّن).
file_like_engine_default_partition_strategy
استراتيجية التقسيم الافتراضية للمحركات المشابهة للملفات. تُطبّق فقط على استعلاماتCREATE التي يكون مسارها خاليًا من نمط glob وعنصر النائب {_partition_id}. يستخدم المسار الذي يحتوي على {_partition_id} استراتيجية wildcard دائمًا. أما المسار الذي يحتوي على نمط glob آخر، فلا يستخدم أي استراتيجية تقسيم ويتجاهل PARTITION BY. إذا كان هذا الإعداد هو wildcard ولم يحتوِ المسار على {_partition_id}، فلن تُستخدم أي استراتيجية تقسيم؛ وترفض محركات الجداول التي لا تستطيع حفظ هذا القرار في وسيطات محركها (مثل HDFS) استعلام CREATE هذا.
filesystem_prefetches_limit
الحد الأقصى لعمليات الجلب المسبق. يشير الصفر إلى عدم وجود حد. ويُوصى باستخدام الإعدادfilesystem_prefetches_max_memory_usage بدلًا من ذلك إذا كنت تريد تقييد عدد عمليات الجلب المسبق
filter
يضيف عبارةWHERE إلى الاستعلام ضمن استعلام فرعي مغلّف. تُدمج عوامل التصفية المتعددة باستخدام AND. تتيح واجهة HTTP استخدام عدة معاملات URL باسم filter، تُدمج بالترتيب باستخدام AND ومع قيمة هذا الإعداد.
هذا إعداد لإنشاء الاستعلامات يطبّقه المحرك على الاستعلام المُحلَّل، وذلك بلفّه كجدول مشتق؛ لذا فهو يتكامل مع الاستعلام الحالي ويعمل عبر جميع البروتوكولات. ويمكن تمريره عبر معامل URL لـ HTTP، أو عبارة SETTINGS داخل الاستعلام، أو ملف تعريف المستخدم.
يؤثر في استعلامات SELECT / UNION التي تُنتج نتائج. أما في استعلامات الكتابة (INSERT … SELECT، CREATE … AS SELECT)، فلا يسري إلا إذا تضمّنه SELECT المصدر في عبارة SETTINGS الخاصة به؛ أما القيمة الموروثة من ملف تعريف أو جلسة، أو المضبوطة في تعليمة INSERT / CREATE نفسها، فلا تُنقل إلى SELECT المصدر — وهي قاعدة عدم النقل نفسها التي تنطبق على أي إعداد آخر.
لا يُعد
filter آلية للتحكم في الوصول، ويجب عدم استخدامه بديلاً عن سياسات الأمان على مستوى الصفوف أو إعداد additional_table_filters. فهو لا يفعل سوى إضافة عبارة WHERE إلى الاستعلام الفرعي المغلّف، لذلك تظل البيانات الأساسية مقروءة ومُعالجة قبل تطبيق عامل التصفية — ويمكن للاستعلام الاطلاع على الصفوف المُستبعَدة أثناء المعالجة، مثلاً باستخدام throwIf لتسريب المعلومات عبر مسار الخطأ. استخدم الأمان على مستوى الصفوف أو additional_table_filters عندما يكون الهدف تقييد الصفوف التي يمكن للمستخدم الوصول إليها.final
يطبّق المُعدِّل FINAL تلقائيًا على جميع الجداول في الاستعلام التي يمكن تطبيق FINAL عليها، بما في ذلك الجداول المنضمّة والجداول في الاستعلامات الفرعية والجداول الموزعة. القيم الممكنة:- 0 - معطّل
- 1 - مُمكّن
finalize_projection_parts_synchronously
عند تمكين هذا الإعداد، تُنهى أجزاء الإسقاط بشكل متزامن أثناء INSERT، مما يقلل استخدام الذاكرة عند الذروة، ولكن على حساب تقليل توازي الرفع إلى S3. افتراضيًا، يظل تدفق المخرجات لكل إسقاط نشطًا إلى أن يُنهى الجزء بالكامل (بما في ذلك جميع الإسقاطات)، مما يتيح تداخل عمليات الرفع إلى S3، لكنه يزيد استخدام الذاكرة عند الذروة بما يتناسب مع عدد الإسقاطات. لا يؤثر هذا الإعداد إلا في مسار INSERT؛ أما الدمج وعمليات mutation فتُنهي الإسقاطات بشكل متزامن بالفعل.flatten_nested
يضبط تنسيق البيانات لأعمدة Nested. القيم الممكنة:- 1 — يُسطَّح عمود Nested إلى مصفوفات منفصلة.
- 0 — يبقى عمود Nested مصفوفة واحدة من قيم Tuple.
0، يمكن استخدام أي مستوى من التعشيق.
أمثلة
الاستعلام:
format
يتجاوزFORMAT الاستعلام لكلٍّ من الإدخال والإخراج. وله أولوية على التنسيق المحدد في الاستعلام وفي امتداد الملف. وتكون لإعدادات input_format وoutput_format الأكثر تحديدًا أولوية على إعداد format العام هذا، كلٌّ في اتجاهه المعني.
framing_output_format
يتيح ضم أجزاء مختلفة من استجابة الاستعلام في دفق واحد: фрагменты البيانات، والإجماليات والقيم القصوى، وحزم التقدم، وأحداث التنميط (المقاييس)، وسجلات الخادم — أي كل ما يدعمه البروتوكول الأصلي. تكون تنسيقات التأطير مستقلة عن تنسيقات الإخراج: فهي تغلف البايتات التي ينتجها أي تنسيق إخراج، وذلك بفصل фрагменты البايتات هذه وترميزها عند الحاجة. إن تسلسل حمولات جميع حزمdata وtotals وextremes يطابق تمامًا ما كان سينتجه تنسيق الإخراج من دون تأطير. وتُمثَّل الحزم المساعدة (التقدم والسجلات وأحداث التنميط والاستثناءات) بصيغة JSON.
يوجد استثناء مقصود واحد: فتنسيق الإخراج الذي يحذف الإجماليات والقيم القصوى من مخرجاته العادية لأنه لا يستطيع تمثيلها (عائلة JSONCompactEachRow) يُخرجها ضمن التأطير في حزمتَي totals وextremes. بالنسبة إلى هذه التنسيقات، يكون تسلسل حزم data وحدها مطابقًا تمامًا للإخراج غير المؤطر، بينما تحمل حزمتا totals وextremes صفوفًا إضافية لا يحتويها الإخراج غير المؤطر.
تُضمَّن سجلات الخادم إذا كان الإعداد send_logs_level مضبوطًا، وتُضمَّن أحداث التنميط إذا كان الإعداد send_profile_events مفعّلًا (وتُرسل بحد أقصى مرة واحدة كل interactive_delay ميكروثانية، كما تُقيَّد حزم التقدم أيضًا بواسطة interactive_delay).
ينتهي الدفق الناجح بحزمة progress نهائية تحمل العدادات النهائية (result_rows وresult_bytes وmemory_usage)، وتُكتب بعد حزم log وprofile_events الختامية التي يصدرها تسجيل اكتمال الاستعلام، تمامًا مثل حزمة التقدم النهائية في البروتوكول الأصلي. عند الفشل، تكون حزمة exception هي الحزمة الأخيرة بدلًا من ذلك — مع استثناء واحد: عندما يحدث الفشل بعد إنتاج جزء من دفق الحزم بالفعل ضمن الاستجابة، بحيث لا يعود بالإمكان تجاهله (مثل فشل كتابة حزمة في منتصفها، أو فشل تسليم حزمة exception نفسها، أو فشل دفق الاستجابة أثناء تفريغه أو إغلاقه)، يفشل التأطير بطريقة مغلقة — يُنهى الدفق دون حزمة exception ختامية، ويرى العميل استجابة مقتطعة واتصال HTTP مُجهضًا بدلًا من حزمة ختامية قابلة للتحليل. لا يُلحق أي شيء مطلقًا بعد دفق حزم جزئي، ولذلك لا يُخلط معه نص خطأ HTTP عادي.
أي شيء لا يفعّله الاستعلام إلا من خلال عبارة SETTINGS الخاصة به — مثل تنسيق التأطير أو send_logs_level أو send_profile_events — لا يُعرف إلا بعد تحليل الاستعلام، لذا لا تُلتقط السجلات وأحداث التنميط المقابلة إلا بدءًا من تنفيذ الاستعلام. ولا تُلتقط السجلات وأحداث التنميط الخاصة بمرحلة التحليل والتخطيط والتحليل الدلالي إلا عندما يأتي الإعداد من الجلسة أو URL. على سبيل المثال، الاستعلام الذي يفشل أثناء التحليل الدلالي (مثل الإشارة إلى جدول غير معروف) ويُفعّل send_logs_level في عبارة SETTINGS الخاصة به فقط، لا يسلّم سوى حزمة exception دون سجلات مرحلة التحليل الدلالي؛ اضبط send_logs_level على الجلسة أو URL لالتقاط تلك السجلات.
ينطبق التحذير نفسه المتعلق بالاكتشاف المتأخر على send_logs_source_regexp: إذ تصفي قائمة انتظار السجلات الإدخالات حسب المصدر عند التقاط كل إدخال، لذلك لا يسري التعبير النمطي المضبوط في عبارة SETTINGS الخاصة بالاستعلام إلا بدءًا من تنفيذ الاستعلام. تُصفّى حزم log الخاصة بمراحل التحليل والتخطيط والتحليل الدلالي وفق قيمة الإعداد في الجلسة أو URL (وتكون غير مفلترة إذا لم يكن مضبوطًا هناك)، لذا قد تتضمن مصادر لا تطابق التعبير النمطي على مستوى الاستعلام؛ وبالعكس، لا يستعيد تعبير نمطي أوسع على مستوى الاستعلام الإدخالات التي أسقطها تعبير نمطي أضيق في الجلسة أو URL. اضبط send_logs_source_regexp على الجلسة أو URL لتصفية دورة حياة الاستعلام كاملةً.
ينطبق الإعداد حاليًا على بروتوكول HTTP ويُتجاهل في الواجهات الأخرى.
القيم الممكنة:
None- يمرّر بشفافية كل ما ينطبق (البيانات، الإجماليات، القيم القصوى، التقدم) إلى تنسيق الإخراج، ويتجاهل ما لا ينطبق (المقاييس، السجلات)، لذا يعمل كل شيء كما هو افتراضيًا.EventStream- يؤطّر الحزم كأحداث HTTP يرسلها الخادم (text/event-stream). تُرسل كل حزمة كحدث بالاسم المقابل:data،totals،extremes،progress،log،profile_events،exception. تُرسل حزم التقدم والحزم المساعدة الأخرى بتنسيق JSON. ولأن الأحداث التي يرسلها الخادم بروتوكول نصي يتعامل مع فواصل الأسطر (بما فيها محارف إرجاع العربة،\r) كمحددات، تُرمَّز كتلة البيانات المنسقة بترميز base64 ضمن حقلdataواحد في الحدث، ويُفك ترميزها إلى الحمولة المنسقة بالكامل بكل أسطرها الجديدة؛ وتحملContent-Typeالمعلمةpayload=base64للإشارة إلى ذلك. يمكن نقل أي تنسيق إخراج بهذه الطريقة مع الحفاظ التام على البايتات، سواء أكان نصيًا أم ثنائيًا.JSONEachPacketBase64- كل حزمة كائن JSON في سطر منفصل، وتُرمَّز البيانات المنسقة بترميز base64، مثلًا:{"packet":"data","data":"eyJ4IjoxfQo="}. مناسب لتنسيقات الإخراج الثنائية.JSONEachPacketString- كل حزمة كائن JSON في سطر منفصل، وتوضع البيانات المنسقة في سلسلة نصية، مثلًا:{"packet":"data","data":"{\"x\":1}\n"}.
JSONEachPacketString بايتات الحمولة في سلسلة JSON دون التحقق منها أو إعادة ترميزها. يمكن للأعمدة String وFixedString احتواء بايتات عشوائية، لذا قد تُخرج تنسيقات الإخراج النصية (مثل JSONEachRow أو TSV أو CSV) UTF-8 غير صالح لهذه القيم، تمامًا كما يفعل JSONEachRow في ClickHouse مع الإعداد الافتراضي output_format_json_validate_utf8 = 0، وعندئذٍ لا يُضمن أن يكون تدفق NDJSON الناتج صالحًا بتشفير UTF-8. استخدم JSONEachPacketBase64 لنقل البايتات العشوائية مع الحفاظ التام على البايتات.
مثال:
fsync_metadata
يؤدي إلى تمكين fsync أو تعطيله عند كتابة ملفات.sql. ويكون مفعّلًا افتراضيًا.
قد يكون من المنطقي تعطيله إذا كان لدى الخادم ملايين الجداول الصغيرة التي تُنشأ وتُحذف باستمرار.
functions_h3_default_if_invalid
إذا كانت القيمة false، فستُصدر دوال h3، مثل h3CellAreaM2، استثناءً إذا كان الإدخال غير صالح. وإذا كانت القيمة true، فستُرجع 0 أو القيمة الافتراضية.geo_distance_returns_float64_on_float64_arguments
إذا كانت الوسيطات الأربع للدوالgeoDistance وgreatCircleDistance وgreatCircleAngle كلها من النوع Float64، فستُرجِع Float64 وتستخدم دقة مضاعفة في العمليات الحسابية الداخلية. في إصدارات ClickHouse السابقة، كانت هذه الدوال تُرجِع دائمًا Float32.
geotoh3_argument_order
تقبل الدالة ‘geoToH3’ (lon, lat) إذا ضُبطت على ‘lon_lat’، و(lat, lon) إذا ضُبطت على ‘lat_lon’.glob_expansion_max_elements
الحد الأقصى لعدد العناوين المسموح بها (مثل وحدات التخزين الخارجية ودوال الجداول وغيرها).h3togeo_lon_lat_result_order
تعيد الدالة ‘h3ToGeo’ القيمة (lon, lat) إذا كانت القيمة true، وإلا فتُعيد (lat, lon).handshake_timeout_ms
مهلة الانتظار بالمللي ثانية لاستلام حزمة Hello من النسخ المتماثلة أثناء المصافحة.hedged_connection_timeout_ms
مهلة الاتصال لإنشاء اتصال مع نسخة متماثلة لطلبات Hedgedhighlight_max_matches_per_row
يحدد الحد الأقصى لعدد المطابقات المبرزة في كل صف في الدالة highlight. استخدمه للحماية من الإفراط في استخدام الذاكرة عند إبراز الأنماط كثيرة التكرار في النصوص الكبيرة. القيم الممكنة:- عدد صحيح موجب.
hnsw_candidate_list_size_for_search
حجم قائمة المرشحين الديناميكية عند البحث في فهرس تشابه المتجهات، ويُعرف أيضًا باسم ‘ef_search’.hsts_max_age
مدة انتهاء صلاحية HSTS. تعني القيمة 0 تعطيل HSTS.idle_connection_timeout
مهلة إغلاق اتصالات TCP الخاملة بعد عدد الثواني المحدد. القيم الممكنة:- عدد صحيح موجب (0 - إغلاق فوري، بعد 0 ثانية).
inject_random_order_for_select_without_order_by
إذا كان مُمكّنًا، فسيُدرج ‘ORDER BY rand()’ في استعلامات SELECT التي لا تحتوي على بند ORDER BY. يُطبَّق هذا فقط عندما يكون عمق الاستعلام الفرعي = 0. ولا تتأثر الاستعلامات الفرعية ولا INSERT INTO … SELECT. إذا كان التركيب على المستوى الأعلى هو UNION، فسيُدرج ‘ORDER BY rand()’ في جميع الفروع بشكل مستقل. هذا مفيد فقط لأغراض الاختبار والتطوير (إذ إن غياب ORDER BY يُعدّ مصدرًا لنتائج استعلام غير حتمية).input_format
يتجاوز تنسيق الإدخال للاستعلام، وله الأولوية على التنسيق المحدد فيه.interactive_delay
الفاصل الزمني بالميكروثانية للتحقق مما إذا كان تنفيذ الطلب قد أُلغي وإرسال معلومات التقدّم.intersect_default_mode
يُعيّن الوضع الافتراضي في استعلام INTERSECT. القيم الممكنة: سلسلة فارغة، ‘ALL’، ‘DISTINCT’. إذا كانت القيمة فارغة، فسيؤدي الاستعلام بدون وضع إلى إثارة استثناء.least_greatest_legacy_null_behavior
إذا كان هذا الإعداد ممكّنًا، فستُرجِع الدالتان ‘least’ و ‘greatest’ القيمة NULL إذا كانت إحدى وسيطاتهما NULL.legacy_column_name_of_tuple_literal
أدرِج أسماء جميع عناصر قيم Tuple الحرفية الكبيرة في أسماء الأعمدة بدلًا من hash. هذا الإعداد موجود فقط لأسباب التوافق. من المنطقي ضبطه على ‘true’ أثناء إجراء تحديث متدرّج للعنقود من إصدار أقل من 21.7 إلى إصدار أعلى.legacy_join_size_limits_trigger_spilling
يعيد هذا الإعداد السلوك السابق لـmax_rows_in_join وmax_bytes_in_join، قبل أن يصبح حدّ الكتابة إلى القرص هو المشغّل، وذلك في
الجزء من join الذي يعمل على القرص: إذ يؤدي بلوغ أيّ منهما إلى استمرار كتابة join إلى القرص بدلاً من إيقاف الاستعلام.
عندئذٍ، تعتمد join_algorithm = 'grace_hash' على هذين الإعدادين وحدهما للكتابة إلى القرص وتتجاهل max_bytes_before_external_join تماماً، بما في
ذلك عندما تكون قيمته صفراً. أما hash / parallel_hash فتنتقل إلى القرص عند بلوغ حدّ الكتابة، ثم تكتب إلى القرص عند بلوغ أيّ منهما لاحقاً؛ بينما تظل مرحلتها
داخل الذاكرة تتعامل مع الإعدادين كحدّين صارمين، كما كان الحال سابقاً.
بالنسبة إلى الاستعلامات المكتوبة وفق المعنى السابق لهذين الإعدادين، يفعّل compatibility هذا السلوك تلقائياً.
يطبّق الخادم الأقدم من هذا الإعداد المعنى القديم، ولا يمكن إبلاغه بخلاف ذلك؛ لذا، عند استخدام
serialize_query_plan = 1، لا يُرسل join الذي تعتمد كتابته إلى القرص على المعنى الجديد إلى مثل هذا الخادم مطلقاً:
يفشل الاستعلام بدلاً من تشغيله بصمت وفق السلوك الآخر. يؤدي تفعيل هذا الإعداد إلى جعل تلك الاستعلامات
تعمل عبر الإصدارين، باستخدام المعنى القديم على كلا الجانبين.
limit
يحدد الحد الأقصى لعدد الصفوف التي يمكن الحصول عليها من نتيجة الاستعلام. يضبط القيمة التي تعيّنها عبارة LIMIT. تُمرر القيمة إلىLIMIT، وتقبل كل ما تقبله LIMIT، بما في ذلك القيم السالبة (للعد من نهاية النتيجة) والكسور ضمن (0, 1) (وتُفسَّر على أنها نسبة من النتيجة).
القيم الممكنة:
- 0 — عدد الصفوف غير محدود.
- عدد صحيح موجب — العدد الدقيق للصفوف.
- عدد صحيح سالب — إرجاع آخر N صفوف.
- عدد حقيقي ضمن النطاق المفتوح
(0, 1)— إرجاع تلك النسبة من النتيجة.
SELECT / UNION التي تُنتج نتائج. بالنسبة إلى استعلام كتابة (INSERT … SELECT، CREATE … AS SELECT)، لا يسري مفعوله إلا إذا تضمّنه SELECT المصدر في عبارة SETTINGS الخاصة به؛ أما القيمة الموروثة من ملف تعريف أو جلسة، أو المعيّنة في تعليمة INSERT / CREATE نفسها، فلا تُنقل إلى SELECT المصدر — وهي قاعدة عدم النقل نفسها التي تنطبق على أي إعداد آخر.
load_marks_asynchronously
تحميل marks الخاصة بـ MergeTree بشكل غير متزامن في thread pool خلفي (راجع إعداد الخادمload_marks_threadpool_pool_size)، بحيث تُحمَّل marks لجميع streams بالتوازي. أما إذا لم يكن كذلك، فتُحمَّل marks بشكل متزامن، stream تلو الآخر، وهو ما يكون بطيئًا على الأقراص البعيدة للأعمدة التي تحتوي على العديد من substreams، مثل JSON.
lock_acquire_timeout
يحدّد عدد الثواني التي ينتظرها طلب القفل قبل أن يفشل. تُستخدم مهلة القفل للحماية من حالات التوقف المتبادل أثناء تنفيذ عمليات القراءة والكتابة على الجداول. وعند انتهاء المهلة وفشل طلب القفل، يرفع خادم ClickHouse الاستثناء “Locking attempt timed out! Possible deadlock avoided. Client should retry.” مع رمز الخطأDEADLOCK_AVOIDED.
القيم الممكنة:
- عدد صحيح موجب (بالثواني).
- 0 — لا توجد مهلة للقفل.
low_priority_query_wait_time_ms
عند استخدام آلية تحديد أولويات الاستعلامات (راجع الإعدادpriority)، تنتظر الاستعلامات منخفضة الأولوية حتى تنتهي الاستعلامات ذات الأولوية الأعلى. يحدّد هذا الإعداد مدة هذا الانتظار.
make_distributed_plan
إنشاء خطة استعلام موزعة. يؤدي تمكينه إلى ضبط الإعدادات التي تتحكم في الميزات التي لا تدعمها خطط الاستعلامات الموزعة بعد تلقائيًا:enable_parallel_replicas = 0وautomatic_parallel_replicas_mode = 0— تتولى الخطة الموزعة توزيع العمل بنفسها؛correlated_subqueries_use_in_memory_buffer = 0;compile_expressions = 0;query_plan_direct_read_from_text_index = 0.
merge_table_max_tables_to_look_for_schema_inference
عند إنشاء جدولMerge من دون مخطط صريح، أو عند استخدام دالة الجدول merge، يُستنتج المخطط باعتباره اتحادًا لما لا يزيد على العدد المحدد من الجداول المطابقة.
إذا كان عدد الجداول أكبر من ذلك، فسيُستنتج المخطط من أول عدد محدد من الجداول.
mongodb_throw_on_unsupported_query
إذا كان هذا الخيار مُمكّنًا، فستُرجِع جداول MongoDB خطأً عند تعذّر إنشاء استعلام MongoDB. وإلا، فسيقرأ ClickHouse الجدول بالكامل ويعالجه محليًا.multiple_joins_try_to_keep_original_names
لا تُضِف أسماءً مستعارة إلى قائمة التعبيرات على المستوى الأعلى عند إعادة كتابة عمليات الربط المتعددةnormalize_function_names
تطبيع أسماء الدوال إلى صيغها القياسيةoffset
يحدد عدد الصفوف التي يجب تخطيها قبل بدء إرجاع صفوف الاستعلام. يضبط الإزاحة التي تحددها عبارة OFFSET. تُمرَّر القيمة كما هي إلىOFFSET، وتقبل كل ما يقبله OFFSET، بما في ذلك القيم السالبة والكسور ضمن (0, 1).
القيم الممكنة:
- 0 — لا يتم تخطي أي صفوف.
- عدد صحيح موجب.
- عدد صحيح سالب.
- عدد حقيقي ضمن النطاق المفتوح
(0, 1)— تُتخطى تلك النسبة من النتيجة.
SELECT / UNION التي تُنتج نتائج. بالنسبة إلى استعلام كتابة (INSERT … SELECT, CREATE … AS SELECT)، لا يسري مفعوله إلا إذا تضمّنه SELECT المصدر في عبارة SETTINGS الخاصة به؛ أما القيمة الموروثة من ملف تعريف أو جلسة، أو المضبوطة في عبارة INSERT / CREATE نفسها، فلا تُنقل إلى SELECT المصدر — وهي قاعدة عدم النقل نفسها المطبقة على أي إعداد آخر.
order
يضيف عبارةORDER BY إلى الاستعلام في صورة استعلام فرعي مُغلِّف. ويقبل قائمة من التعبيرات الاعتباطية.
هذا إعداد لبناء الاستعلامات يطبّقه المحرك على الاستعلام المُحلَّل، وذلك بتغليفه كجدول مشتق. لذلك يتوافق مع الاستعلام الحالي ويعمل مع جميع البروتوكولات: يمكن تمريره عبر معلمة HTTP URL، أو عبارة SETTINGS داخل الاستعلام، أو ملف تعريف مستخدم.
يؤثر في استعلامات SELECT / UNION التي تُنتج نتائج. أما في استعلامات الكتابة (INSERT … SELECT وCREATE … AS SELECT)، فلا يسري مفعوله إلا إذا تضمّن SELECT المصدر هذا الإعداد في عبارة SETTINGS الخاصة به. ولا يُنقل إلى SELECT المصدر أيٌّ من القيم الموروثة من ملف تعريف أو جلسة، أو المضبوطة في عبارة INSERT / CREATE نفسها، وهي قاعدة عدم النقل ذاتها التي تنطبق على أي إعداد آخر.
output_format
يتجاوز تنسيق إخراج الاستعلام، ويكون له الأولوية على التنسيق المحدد في الاستعلام أو امتداد الملف أو عبرdefault_format.
صفحة
يعيّن رقم الصفحة للنتائج المُقسَّمة إلى صفحات. وهو مكافئ لـoffset = limit * (page - 1). لا يمكن تحديده إلا عند تعيين limit وعدم تعيين offset. تبدأ فهرسة الصفحات من 1. ويدعم القيم السالبة والكسرية كما في limit وoffset.
هذا إعداد لبناء الاستعلامات يطبّقه المحرّك على الاستعلام المُحلَّل، عبر تغليفه كجدول مشتق، لذا يتكامل مع الاستعلام الحالي ويعمل مع جميع البروتوكولات. ويمكن تمريره عبر معلمة URL لـ HTTP، أو عبارة SETTINGS داخل الاستعلام، أو ملف تعريف مستخدم.
ويؤثر في استعلامات SELECT / UNION التي تُنتج نتائج. أما في استعلامات الكتابة (INSERT … SELECT وCREATE … AS SELECT)، فلا يسري إلا إذا تضمّن SELECT المصدر هذا الإعداد في عبارة SETTINGS الخاصة به؛ إذ لا تُنقل القيمة الموروثة من ملف تعريف أو جلسة، أو المعيّنة في عبارة INSERT / CREATE نفسها، إلى SELECT المصدر — وهي قاعدة عدم النقل ذاتها المطبقة على أي إعداد آخر.
paimon_target_snapshot_id
قراءة لقطة مستهدفة على مستوى الاستعلام لوضع Paimon التزايدي. عند القيمة >0، سيجلب القارئ فقط دلتا للـ snapshot_id المحدد دون تقديم المؤشر المائي المعتمد. القيمة الافتراضية: -1 (معطّل)parallelize_output_from_storages
موازاة المخرجات في خطوة القراءة من وحدات التخزين. يتيح هذا إجراء معالجة الاستعلامات بالتوازي مباشرةً بعد القراءة من وحدة التخزين، إذا أمكن ذلكpartial_result_on_first_cancel
يسمح بإرجاع نتيجة جزئية للاستعلام بعد الإلغاء.per_part_index_stats
يسجّل إحصاءات الفهرس لكل جزءpoll_interval
يُعلّق التنفيذ في حلقة انتظار الاستعلام على الخادم لعدد الثواني المحدد.polyglot_dialect
لهجة SQL المصدر لمحوّل polyglot (مثل: ‘sqlite’ و’mysql’ و’postgresql’ و’snowflake’ و’duckdb’).postgresql_fault_injection_probability
الاحتمال التقريبي لفشل استعلامات PostgreSQL الداخلية (المستخدمة في النسخ المتماثل). القيمة الصالحة ضمن النطاق [0.0f, 1.0f]predicate_statistics_sample_rate
يجمع إحصاءات انتقائية عبارات الشرط فيsystem.predicate_statistics_log. عند تعيينه إلى N > 0، تُؤخذ عيّنة من نحو 1/N من الاستعلامات (استنادًا إلى معرّف الاستعلام). 0 يعني تعطيله.
prefetch_buffer_size
الحد الأقصى لحجم مخزن الجلب المسبق المؤقت المستخدم للقراءة من نظام الملفات. تُقيَّد القيم التي تتجاوز 256 MiB عند 256 MiB، لأن مخزن القراءة المؤقت لا يحتاج مطلقًا إلى حجم أكبر.print_pretty_type_names
يسمح بعرض أسماء الأنواع المتداخلة بعمق بصورة منسقة مع مسافات بادئة في queryDESCRIBE وفي الدالة toTypeName().
مثال:
priority
priority الاستعلام. 1 هي الأعلى، وكلما زادت القيمة انخفضت priority؛ 0 يعني عدم استخدام الأولويات.push_external_roles_in_interserver_queries
تمكين تمرير أدوار المستخدم من العقدة المُرسِلة إلى العُقد الأخرى أثناء تنفيذ استعلام.query_metric_log_interval
الفاصل الزمني، بالمللي ثانية، الذي تُجمع عنده بيانات query_metric_log لكل استعلام على حدة. إذا ضُبطت هذه القيمة على أي قيمة سالبة، فستأخذ قيمةcollect_interval_milliseconds من إعداد query_metric_log، أو ستُستخدم القيمة الافتراضية 1000 إذا لم تكن موجودة.
لتعطيل جمع البيانات لاستعلام واحد، اضبط query_metric_log_interval على 0.
القيمة الافتراضية: -1
queue_max_wait_ms
مدة الانتظار في قائمة انتظار الطلبات، إذا تجاوز عدد الطلبات المتزامنة الحد الأقصى.rabbitmq_max_wait_ms
مدة الانتظار لقراءة البيانات من RabbitMQ قبل إعادة المحاولة.readonly
0 - لا توجد أي قيود على وضع القراءة فقط. 1 - يُسمح فقط بطلبات القراءة، وكذلك بتغيير الإعدادات المسموح بها صراحةً. 2 - يُسمح فقط بطلبات القراءة، وكذلك بتغيير الإعدادات، باستثناء الإعداد ‘readonly’.recursive_cte_max_steps_in_type_inference
الحد الأقصى لعدد التكرارات لاستنتاج أنواع الأعمدة في تعبيرات الجدول الشائعة التعاودية. تُحدَّد أنواع الأعمدة عبر تطبيقgetLeastSupertype تكراريًا على الطرفين غير التعاودي والتعاودي من UNION ALL حتى الوصول إلى حالة الاستقرار. اضبط القيمة على 0 لتعطيل توسيع الأنواع والاكتفاء بالأنواع من الجزء غير التعاودي فقط.
regexp_max_matches_per_row
يحدّد الحد الأقصى لعدد المطابقات لتعبير نمطي واحد في كل صف. استخدمه للحماية من الاستهلاك المفرط للذاكرة عند استخدام تعبير نمطي جشع في الدالة extractAllGroupsHorizontal. القيم الممكنة:- عدد صحيح موجب.
reject_expensive_hyperscan_regexps
استبعِد الأنماط التي يُحتمل أن يكون تقييمها مكلفًا باستخدام hyperscan (بسبب التضخم في حالات NFA)remerge_sort_lowered_memory_bytes_ratio
إذا لم ينخفض استهلاك الذاكرة بعد إعادة الدمج بهذه النسبة، فسيتم تعطيل إعادة الدمج.remote_read_min_bytes_for_seek
الحد الأدنى من البايتات المطلوب للقراءة عن بُعد (URL، S3) لإجراء seek بدلًا من القراءة مع ignore.rename_files_after_processing
- النوع: String
- القيمة الافتراضية: سلسلة فارغة
file. عند تعيين هذا الخيار، ستُعاد تسمية جميع الملفات التي تقرؤها دالة الجدول file وفقًا للنمط المحدد باستخدام العناصر النائبة، وذلك فقط إذا تمت معالجة الملفات بنجاح.
تُعد إعادة التسمية عملية كتابة إلى المصدر، لذا فإن أي استعلام يقرأ الملفات مع تعيين هذا الخيار يتطلب الصلاحية WRITE ON FILE بالإضافة إلى READ ON FILE. أما DESCRIBE فلا يبني خط معالجة قراءة البيانات الذي يقوم بإعادة التسمية، ولذلك يتطلب READ ON FILE فقط.
العناصر النائبة
%a— اسم الملف الأصلي كاملًا (على سبيل المثال، “sample.csv”).%f— اسم الملف الأصلي بدون امتداد (على سبيل المثال، “sample”).%e— امتداد الملف الأصلي متضمّنًا النقطة (على سبيل المثال، “.csv”).%t— الطابع الزمني (بالميكروثانية).%%— علامة النسبة المئوية (”%”).
مثال
-
الخيار:
--rename_files_after_processing="processed_%f_%t%e" -
الاستعلام:
SELECT * FROM file('sample.csv')
sample.csv بنجاح، فسيُعاد تسمية الملف إلى processed_sample_1683473210851438.csv
replication_wait_for_inactive_replica_timeout
يحدّد مدة الانتظار (بالثواني) حتى تنفّذ النسخ المتماثلة غير النشطة استعلاماتALTER أو OPTIMIZE أو TRUNCATE.
القيم الممكنة:
0— عدم الانتظار.- عدد صحيح سالب — الانتظار لمدة غير محدودة.
- عدد صحيح موجب — عدد الثواني المطلوب انتظارها.
reserve_memory
يُستخدم هذا الإعداد في جدولة أعباء العمل. وهو الحد الأدنى من RAM المحجوزة لاستخدامها لتشغيل استعلام على خادم واحد. ويُجرى الحجز عبر التسلسل الهرمي لـ WORKLOAD باستخدام قيمة إعداد الاستعلامworkload.
إذا لم تكن هناك ذاكرة كافية متاحة لعبء العمل، فسيُمنع الاستعلام من البدء وينتظر في حالة pending إلى أن يمكن تلبية الحجز.
تعني القيمة 0 عدم وجود حجز.
لا يسري هذا الإعداد إلا إذا تم إنشاء مورد MEMORY RESERVATION.
restore_replicated_merge_tree_to_shared_merge_tree
استبدال محرك الجدول من ReplicatedMergeTree إلى SharedMergeTree أثناء RESTORE. القيمة الافتراضية في Cloud:1.
result_overflow_mode
يحدّد ما يجب فعله إذا تجاوز حجم النتيجة أحد الحدود. القيم الممكنة:throw: يرفع استثناءً (الافتراضي).break: يوقف تنفيذ الاستعلام ويُرجع نتيجة جزئية، كما لو أن البيانات المصدرية قد نفدت.
Break التنفيذ إلا على
مستوى الكتلة. وهذا يعني أن عدد الصفوف المُعادة يكون أكبر من
max_result_rows، ومن مضاعفات max_block_size
ويعتمد على max_threads.
مثال
Query
Result
resumable_backup_from_snapshot
يتيحBACKUP FROM SNAPSHOT القابل للاستئناف: إذ يمكن إعادة تشغيل محاولة فاشلة دون إعادة نسخ
إدخالات الدفعات التي اكتملت بالفعل. يتوفر فقط في ClickHouse Cloud، لوجهات
S3 وAzureBlobStorage بنمط الدليل. يؤدي تمكينه في إصدارات ClickHouse مفتوحة المصدر، حيث لا يتوفر
BACKUP FROM SNAPSHOT نفسه، إلى فشل BACKUP مع WRONG_BACKUP_SETTINGS.
rows_before_aggregation
عند التمكين، يوفّر ClickHouse قيمة دقيقة لإحصائية rows_before_aggregation، التي تمثل عدد الصفوف المقروءة قبل التجميعrun_query_in_background
عند تفعيله، يجدول الخادم الاستعلام في الخلفية، ويُرجع فورًا نتيجة نجاح فارغة، ثم يشغّل الاستعلام حتى اكتماله بغض النظر عما يحدث للاتصال. لا يستمر الاستعلام الذي يعمل في الخلفية بعد إعادة تشغيل الخادم. وعند إيقاف التشغيل، تنطبق عليه إعدادات الخادم نفسها المطبقة على الاستعلامات التي تعمل في المقدمة: يحددshutdown_wait_unfinished_queries ما إذا كان سيُلغى أو سيُنتظر حتى اكتماله (وتُهمل الإدخالات الموجودة في قائمة الانتظار في كلتا الحالتين، من دون إدخال في system.query_log)، بينما يحد shutdown_wait_unfinished المدة التي ينتظرها الخادم.
تتبّع الاستعلام باستخدام query_id الخاص به: في system.processes أثناء تشغيله، وفي system.query_log بعد انتهائه وتفريغ إدخال سجل الاستعلام.
ينطبق على الاستعلامات المستلمة عبر بروتوكولي TCP الأصلي وHTTP. وعبر HTTP، مرّر الإعداد كمعلمة URL. لا يمكن تغييره باستخدام SET؛ فعّله لكل استعلام، أو على مستوى المستخدم أو ملف التعريف.
حالة الاستخدام الرئيسية هي عملية INSERT ... SELECT طويلة يجب ألا تضيع عند انقطاع اتصال العميل.
secondary_indices_enable_bulk_filtering
يُفعِّل خوارزمية التصفية المجمّعة للفهارس. ومن المتوقع أن تكون أفضل دائمًا، لكن هذا الإعداد متاح لأغراض التوافق والتحكم.select
يغلّف الاستعلام كاستعلام فرعي بقائمة تعبيراتSELECT صريحة. وعندما لا يكون فارغًا، يُغلَّف الاستعلام الذي يُنتج النتائج على النحو التالي: SELECT <expr_list> FROM (<query>).
هذا إعداد لبناء الاستعلامات يطبّقه المحرك على الاستعلام المُحلَّل، عبر تغليفه كجدول مشتق. لذلك، فهو يتكامل مع الاستعلام الحالي ويعمل عبر جميع البروتوكولات؛ إذ يمكن تمريره عبر معلمة HTTP URL، أو عبارة SETTINGS داخل الاستعلام، أو ملف تعريف المستخدم.
يحدّد بنية استعلامات SELECT / UNION التي تُنتج نتائج. أما في استعلامات الكتابة (INSERT … SELECT، CREATE … AS SELECT)، فلا يسري إلا إذا تضمّنه SELECT المصدر في عبارة SETTINGS الخاصة به. ولا تُنقل إلى SELECT المصدر قيمة موروثة من ملف تعريف أو جلسة، أو قيمة محددة في عبارة INSERT / CREATE نفسها، وهي قاعدة عدم النقل ذاتها التي تنطبق على أي إعداد آخر.
select_sequential_consistency
يختلف سلوك هذا الإعداد بين SharedMergeTree وReplicatedMergeTree. راجع SharedMergeTree consistency لمزيد من المعلومات حول سلوك
select_sequential_consistency في SharedMergeTree.SELECT. ويتطلب ذلك تعطيل insert_quorum_parallel (وهو مُمكَّن افتراضيًا).
القيم الممكنة:
- 0 — معطّل.
- 1 — مُمكَّن.
SELECT إلا على النسخ المتماثلة التي تحتوي على بيانات جميع استعلامات INSERT السابقة المُنفَّذة باستخدام insert_quorum. وإذا أشار العميل إلى نسخة متماثلة غير مكتملة، فسينشئ ClickHouse استثناءً. ولن يتضمن استعلام SELECT البيانات التي لم تُكتب بعد إلى نصاب النسخ المتماثلة.
عندما يكون insert_quorum_parallel مُمكَّنًا (وهو الإعداد الافتراضي)، فإن select_sequential_consistency لا يعمل. ويعود ذلك إلى أن استعلامات INSERT المتوازية قد تُكتب إلى مجموعات مختلفة من النسخ المتماثلة ضمن النصاب، لذلك لا يوجد ما يضمن أن نسخة متماثلة واحدة قد استلمت جميع عمليات الكتابة.
انظر أيضًا:
session_query_ids_history_size
الحد الأقصى لعدد معرّفات الاستعلامات المحفوظة في السجل المحلي للجلسة المعروض عبر جدول النظامsystem.session_query_ids.
يُسجَّل فيه معرّف كل استعلام غير داخلي يُنفَّذ في الجلسة عند بدء الاستعلام، وعندما يتجاوز السجل هذا الحجم تُزال أقدم المُدخلات أولًا.
تُقرأ القيمة عند بدء الاستعلام، قبل تحليله، لذا فإن عبارة SETTINGS الواردة في الاستعلام نفسه لا تؤثر في تسجيل ذلك الاستعلام؛ استخدم بدلًا من ذلك SET أو معلمة URL في HTTP أو ملف تعريف إعدادات.
القيم الممكنة:
- عدد صحيح موجب.
- 0 — التسجيل معطّل، وتبقى المُدخلات المسجَّلة سابقًا في الجدول.
session_timezone
يضبط المنطقة الزمنية الضمنية للجلسة الحالية أو للاستعلام الحالي. المنطقة الزمنية الضمنية هي المنطقة الزمنية المُطبَّقة على القيم من النوع DateTime/DateTime64 التي لا تكون لها منطقة زمنية محددة صراحةً. يتقدّم هذا الإعداد على المنطقة الزمنية الضمنية المضبوطة عمومًا (على مستوى الخادم). تعني القيمة ” (سلسلة فارغة) أن المنطقة الزمنية الضمنية للجلسة الحالية أو للاستعلام الحالي تساوي المنطقة الزمنية للخادم. يمكنك استخدام الدالتينtimeZone() وserverTimeZone() للحصول على المنطقة الزمنية للجلسة والمنطقة الزمنية للخادم.
القيم الممكنة:
- أي اسم منطقة زمنية من
system.time_zones، مثلEurope/BerlinأوUTCأوZulu
- إن
toDateTime()من دون تحديدtime zoneصراحةً، والمستخدمة في استعلامSELECTالأول، تراعي الإعدادsession_timezoneوالمنطقة الزمنية العامة. - في الاستعلام الثاني، يُحلَّل
DateTimeمنString، ويرث النوع والمنطقة الزمنية للعمود الحاليd. لذلك، لا يُراعى الإعدادsession_timezoneولا المنطقة الزمنية العامة.
set_overflow_mode
يحدد ما يحدث عندما تتجاوز كمية البيانات أحد الحدود. القيم الممكنة:throw: رفع استثناء (الافتراضي).break: إيقاف تنفيذ الاستعلام وإرجاع نتيجة جزئية، كما لو أن بيانات المصدر قد نفدت.
single_join_prefer_left_table
عند وجود JOIN واحدة، وفي حال التباس المعرّف، فَضِّل الجدول الأيسرskip_redundant_aliases_in_udf
لا تُستخدم الأسماء المستعارة الزائدة (ولا يُستعاض بها) في الدوال المعرّفة من قبل المستخدم، وذلك لتبسيط استخدامها. القيم الممكنة:- 1 — يتم تجاوز الأسماء المستعارة (الاستعاضة عنها) في UDFs.
- 0 — لا يتم تجاوز الأسماء المستعارة (الاستعاضة عنها) في UDFs.
sleep_after_receiving_query_ms
مدة الانتظار بعد استلام الاستعلام في TCPHandlersnappy_mode
يتحكم هذا الإعداد في تنسيق wire المستخدم لضغط snappy لمسارات إدخال/إخراج الملفات العامة مثلfile وurl. ويستخدم HTTP Content-Encoding: snappy دائمًا تنسيق framing ويتجاهل هذا الإعداد.
لاحظ أن تنسيق كتل snappy الخام الناتج عن استدعاء واحد لـ snappy::Compress (على سبيل المثال، حمولات بروتوكول Prometheus البعيد التي يتعامل معها SnappyBasicReadBuffer) هو تنسيق wire منفصل وخاص بالبروتوكول، ولا يتحكم فيه هذا الإعداد.
القيم الممكنة:
basic— تنسيق كتل Hadoop snappy. متوافق مع الملفات التي يقرأها Hadoop ويكتبها. يدعم القراءة والكتابة.framed— تنسيق framing لـ Snappy، وهو تنسيق البث القياسي الذي تحدده Google. يدعم القراءة والكتابة.
sort
يضيف عبارةORDER BY بسيطة إلى الاستعلام عبر تغليفه باستعلام فرعي. يقبل قائمة مفصولة بفواصل من المعرّفات أو مراجع الأعمدة الموضعية (أعداد صحيحة موجبة)، مع بادئة اختيارية + (ASC) أو - (DESC). مثال: يرتّب sort=a,-b حسب a تصاعديًا وb تنازليًا، بينما يرتّب sort=1,-2 حسب العمود الأول تصاعديًا والثاني تنازليًا. لا يمكن دمجه مع order.
هذا إعداد لبناء الاستعلامات يطبّقه المحرك على الاستعلام المُحلَّل، وذلك بتغليفه كجدول مشتق؛ لذا فهو يتكامل مع الاستعلام الحالي ويعمل عبر جميع البروتوكولات. يمكن تحديده عبر معلمة HTTP URL، أو عبارة SETTINGS داخل الاستعلام، أو ملف تعريف المستخدم.
يؤثر في استعلامات SELECT / UNION التي تُنتج نتائج. أما في استعلامات الكتابة (INSERT … SELECT، CREATE … AS SELECT)، فلا يسري إلا إذا كان SELECT المصدر يتضمنه في عبارة SETTINGS الخاصة به؛ ولا تُنقل إلى SELECT المصدر قيمة موروثة من ملف تعريف أو جلسة، أو قيمة محددة في عبارة INSERT / CREATE نفسها — وهي قاعدة عدم النقل ذاتها التي تنطبق على أي إعداد آخر.
sort_overflow_mode
يحدّد ما يحدث إذا تجاوز عدد الصفوف المستلَمة قبل الفرز أحد الحدود القصوى. القيم الممكنة:throw: إثارة استثناء.break: إيقاف تنفيذ الاستعلام وإرجاع نتيجة جزئية.
splitby_max_substrings_includes_remaining_string
يتحكم هذا الإعداد في ما إذا كانت الدالة splitBy*() التي تستخدم الوسيطmax_substrings > 0 ستضمّن السلسلة المتبقية في العنصر الأخير من مصفوفة النتيجة.
القيم الممكنة:
0- لن تُضمَّن السلسلة المتبقية في العنصر الأخير من مصفوفة النتيجة.1- ستُضمَّن السلسلة المتبقية في العنصر الأخير من مصفوفة النتيجة. هذا هو سلوك الدالةsplit()في Spark والطريقة ‘string.split()’ في بايثون.
statistics_max_set_size_for_exact_selectivity_estimation
الحد الأقصى لحجم المجموعة في الطرف الأيمن من عامل التشغيلIN الذي يمكن لمقدِّر الانتقائية عنده اشتقاق النطاقات الدقيقة التي تغطيها المجموعة. يتطلب اشتقاق هذه النطاقات Field لكل عنصر، وفرزًا، ومسبار إحصاءات واحدًا لكل عنصر، وهي تكلفة تهيمن على تخطيط الاستعلام عند استخدام مجموعة كبيرة. فوق هذا الحد، يستمد المقدِّر الانتقائية من حجم المجموعة ونطاقها الحدي بدلًا من ذلك، وذلك بتمرير خطي واحد على المجموعة دون فرز أو مسابير إحصاءات لكل عنصر. يشير الصفر إلى عدم وجود حد.
stop_refreshable_materialized_views_on_startup
عند بدء تشغيل الخادم، يمنع جدولة طرق العرض المادية القابلة للتحديث، كما لو تم استخدام SYSTEM STOP VIEWS. ويمكنك تشغيلها يدويًا بعد ذلك باستخدامSYSTEM START VIEWS أو SYSTEM START VIEW <name>. وينطبق ذلك أيضًا على طرق العرض المنشأة حديثًا. ولا يؤثر هذا في طرق العرض المادية غير القابلة للتحديث.
tcp_keep_alive_timeout
الوقت بالثواني الذي يجب أن يبقى فيه الاتصال خاملاً قبل أن يبدأ TCP في إرسال مجسّات keepalivetemporary_data_in_cache_reserve_space_wait_lock_timeout_milliseconds
مدة الانتظار لقفل ذاكرة التخزين المؤقت لنظام الملفات عند حجز مساحة للبيانات المؤقتةthrow_if_no_data_to_insert
يسمح بعمليات INSERT الفارغة أو يمنعها، وهو مفعّل افتراضيًا (ويؤدي إلى ظهور خطأ عند تنفيذ عملية insert فارغة). لا ينطبق هذا إلا على عمليات INSERT التي تستخدمclickhouse-client أو واجهة gRPC.
time_series_prefer_recent_samples_table
اقرأ من جدول العينات الحديثة لجدول TimeSeries بدلاً من جدول العينات الرئيسي عندما يقع النطاق الزمني المطلوب بالكامل ضمن نافذة TTL لجدول العينات الحديثة (راجع إعدادrecent_samples_ttl_seconds لمحرك الجدول TimeSeries).
timeout_before_checking_execution_speed
يتحقق من أن سرعة التنفيذ ليست منخفضة جدًا (أي لا تقل عنmin_execution_speed)،
وذلك بعد انقضاء الوقت المحدد بالثواني.
transfer_overflow_mode
تحدد ما يحدث عند تجاوز كمية البيانات أحد الحدود. القيم الممكنة:throw: إثارة استثناء (الافتراضي).break: إيقاف تنفيذ الاستعلام وإرجاع نتيجة جزئية، كما لو كانت بيانات المصدر قد نفدت.
transform_null_in
يُمكّن اعتبار قيم NULL متساوية عند استخدام عامل التشغيل IN. بشكل افتراضي، لا يمكن مقارنة قيمNULL لأن NULL تعني قيمة غير معرّفة. لذلك، يجب أن تُرجع المقارنة expr = NULL دائمًا false. ومع هذا الإعداد، تُرجع NULL = NULL القيمة true مع عامل التشغيل IN.
القيم الممكنة:
- 0 — تُرجع مقارنة قيم
NULLفي عامل التشغيلINالقيمةfalse. - 1 — تُرجع مقارنة قيم
NULLفي عامل التشغيلINالقيمةtrue.
null_in:
traverse_shadow_remote_data_paths
اجتز البيانات المجمّدة (دليل الظل) بالإضافة إلى بيانات الجدول الفعلية عند تنفيذ استعلام على system.remote_data_pathsunion_default_mode
يحدد وضعًا لدمج نتائج استعلامSELECT. لا يُستخدم هذا الإعداد إلا مع UNION عند عدم تحديد UNION ALL أو UNION DISTINCT صراحةً.
القيم المحتملة:
'DISTINCT'— يُخرج ClickHouse الصفوف الناتجة عن دمج الاستعلامات بعد إزالة الصفوف المكررة.'ALL'— يُخرج ClickHouse جميع الصفوف الناتجة عن دمج الاستعلامات، بما في ذلك الصفوف المكررة.''— يُنشئ ClickHouse استثناءً عند استخدامه معUNION.
unknown_packet_in_send_data
أرسل حزمة غير معروفة بدلًا من حزمة البيانات رقم Nvariant_throw_on_type_mismatch
عند تطبيق دالة على عمود Variant باستخدام التنفيذ الافتراضي، يحدد هذا الإعداد ما يحدث للصفوف التي يكون نوعها الفعلي غير متوافق مع الدالة:true(الافتراضي) — طرح استثناء.false— إرجاعNULLلهذه الصفوف بدلًا من ذلك.
wait_changes_become_visible_after_commit_mode
انتظر حتى تصبح التغييرات التي تم تثبيتها مرئية فعليًا في أحدث لقطةعبء العمل
اسم عبء العمل المُستخدَم للوصول إلى المواردworkload_admission_timeout_ms
الحد الأقصى للمدة التي ينتظرها الاستعلام حتى تقبله جدولة أعباء العمل قبل أن يفشل دون أن يبدأ. وهو يحدّ الانتظار المجمّع للحصول على خانة استعلام (من موردCREATE RESOURCE ... (QUERY)، المقيّد بقيمة
max_concurrent_queries الخاصة بعبء العمل) وعلى حجز ذاكرة (من مورد
CREATE RESOURCE ... (MEMORY RESERVATION) مع الإعداد reserve_memory). ويجري الحصول على كليهما
قبل بدء تنفيذ الاستعلام، لذا فهذه هي الطريقة الوحيدة لتحديد فترة الانتظار السابقة للتنفيذ،
إذ لا ينطبق max_execution_time بعد لأن الاستعلام لم يبدأ.
وعند انقضاء المهلة يفشل الاستعلام بأحد خطأين مختلفين، بحسب المورد الذي كان ينتظره:
QUERY_SLOT_ACQUISITION_TIMEOUT لخانة الاستعلام، أو
MEMORY_RESERVATION_ACQUISITION_TIMEOUT لحجز الذاكرة.
القيم الممكنة:
- عدد صحيح موجب — المهلة بالمللي ثانية.
- 0 — مهلة لا نهائية: ينتظر الاستعلام القبول إلى أجل غير مسمّى (الافتراضي). ومع ذلك قد يُرفض
فورًا عند بلوغ حد
max_waiting_queriesالخاص بعبء العمل.