تتوفّر هذه الإعدادات في system.settings، وهي مُولَّدة تلقائيًا من المصدر.
adaptive_aggregator_freeze_threshold
سجل الإصدارات
| الإصدار | القيمة الافتراضية | التعليق |
|---|---|---|
| 26.8 | 16384 | إعداد جديد لتحديد عدد المفاتيح الذي عنده يجمّد المُجمِّع التكيفي (`enable_adaptive_aggregator`) جدول التجزئة المحلي الخاص بالخيط. |
عدد المفاتيح الذي عنده يجمّد المُجمِّع التكيفي جدول التجزئة المحلي الخاص بالخيط (راجع enable_adaptive_aggregator). تُبقي القيم الأصغر الجداول المجمّدة ضمن الذاكرة المخبئية، بينما تتيح القيم الأكبر لها استيعاب قدر أكبر من المفاتيح المتكررة. تؤدي القيمة 0 إلى تجميد الجداول عند أول فرصة، مما يجعل الخوارزمية تعمل بصورة مشابهة للمُجمِّع المُجزّأ (enable_sharding_aggregator): يُوجَّه كل مفتاح وفقًا لتجزئته ويُجمَّع لدى مالك واحد، لكن يُؤجَّل ذلك إلى مرحلة الدمج بدلًا من تبادله بين الخيوط أثناء الفحص.
adaptive_aggregator_freeze_threshold_bytes
سجل الإصدارات
| الإصدار | القيمة الافتراضية | التعليق |
|---|---|---|
| 26.9 | 4194304 | إعداد جديد يقيّد حجم الجداول المحلية المجمّدة للمُجمِّع التكيفي بالبايتات؛ يُطبَّق الحد الذي يُبلَغ أولًا بين هذا الحد وعتبة عدد المفاتيح؛ وتؤدي القيمة 0 إلى تعطيل حد البايتات. |
حجم الذاكرة الذي عنده يُجمِّد المُجمِّع التكيفي جدول التجزئة المحلي لخيط (انظر 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، فسيُستخدم المنحنى المالئ للفراغ في تحليل الفهرس.
analyzer_inline_views
سجل الإصدارات
| الإصدار | القيمة الافتراضية | التعليق |
|---|---|---|
| 26.4 | 0 | إعداد جديد |
عند تمكينه، يستبدل analyzer طرق العرض العادية (غير المُجسَّدة وغير المعلَّمة بمعلمات) بالاستعلامات الفرعية التي تعرّفها، مما يتيح تحسينات عابرة للحدود مثل دفع عبارات التصفية وتشذيب الأعمدة.
any_join_distinct_right_table_keys
سجل الإصدارات
| الإصدار | القيمة الافتراضية | التعليق |
|---|---|---|
| 19.14 | 0 | تعطيل ANY RIGHT وANY FULL JOIN افتراضيًا لتجنب عدم الاتساق |
يُمكّن السلوك القديم لخادم ClickHouse في عمليات ANY INNER|LEFT 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
سجل الإصدارات
| الإصدار | القيمة الافتراضية | التعليق |
|---|---|---|
| 26.1 | 8388608 | إعداد جديد |
يحدّد الحجم الأقصى للمخزن المؤقت المتكيّف المستخدم عند الكتابة إلى ملفات الأرشيف (على سبيل المثال، أرشيفات tar
arrow_flight_request_descriptor_type
سجل الإصدارات
| الإصدار | القيمة الافتراضية | التعليق |
|---|---|---|
| 25.11 | path | إعداد جديد. نوع الواصف المستخدم لطلبات Arrow Flight: 'path' أو 'command'. يتطلب Dremio القيمة 'command'. |
نوع الواصف المستخدم لطلبات 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
سجل الإصدارات
| الإصدار | القيمة الافتراضية | التعليق |
|---|---|---|
| 25.8 | 0 | إعداد جديد |
| 25.6 | 0 | إعداد جديد |
| 25.10 | 0 | تعطيل الإعداد افتراضيًا |
عند ضبطه على 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.
checksum_on_read
تحقّق من قيم التحقّق عند القراءة. يكون هذا الإعداد مفعّلًا افتراضيًا، ويجب أن يظل مفعّلًا دائمًا في بيئة الإنتاج. لا يُرجى توقّع أي فائدة من تعطيل هذا الإعداد. وقد يُستخدم فقط لأغراض التجربة واختبارات الأداء. لا ينطبق هذا الإعداد إلا على الجداول من عائلة MergeTree. أمّا في محركات الجداول الأخرى، وعند تلقّي البيانات عبر الشبكة، فيُجرى دائمًا التحقّق من قيم التحقّق.
الضغط
سجل الإصدارات
| الإصدار | القيمة الافتراضية | التعليق |
|---|---|---|
| 26.8 | إعداد جديد لتطبيق ضغط عام على جسم الاستجابة. |
يطبّق ضغطًا عامًا على جسم الاستجابة، مثل compression=gz. لاحظ أن هذا مستقل عن Content-Encoding (ضغط HTTP) وعن المعلمة القديمة compress (ضغط ClickHouse الأصلي). ويعادل ذلك تحديد امتداد ملف مضغوط في مسار URL.
هذا إعداد لتشكيل الاستجابة ضمن واجهة HTTP: يُطبَّق قبل تنفيذ الاستعلام (إذ تُعَدّ مخازن الاستجابة المؤقتة مسبقًا)، لذا يجب توفيره عبر معلمة HTTP URL، أو امتداد الملف في مسار URL، أو ملف تعريف المستخدم، وليس عبر عبارة SETTINGS داخل الاستعلام (إذ لا يكون لها أي تأثير ويُرفَض استخدامها).
connection_pool_max_wait_ms
زمن الانتظار بالمللي ثانية للحصول على اتصال عندما يكون مجمّع الاتصالات ممتلئًا.
القيم الممكنة:
- عدد صحيح موجب.
- 0 — مهلة انتظار لا نهائية.
connections_with_failover_max_tries
الحد الأقصى لعدد محاولات الاتصال بكل نسخة متماثلة لمحرك الجدول Distributed.
convert_query_to_cnf
عند ضبطه على true، سيُحوَّل استعلام SELECT إلى الصيغة العادية الاقترانية (CNF). في بعض الحالات، قد يؤدي إعادة كتابة الاستعلام بصيغة CNF إلى تنفيذ أسرع (راجع مشكلة Github للاطلاع على الشرح).
على سبيل المثال، لاحظ كيف لا يُعدَّل استعلام SELECT التالي (وهو السلوك الافتراضي):
EXPLAIN SYNTAX
SELECT *
FROM
(
SELECT number AS x
FROM numbers(20)
) AS a
WHERE ((x >= 1) AND (x <= 5)) OR ((x >= 10) AND (x <= 15))
SETTINGS convert_query_to_cnf = false;الناتج هو:
┌─explain────────────────────────────────────────────────────────┐
│ SELECT x │
│ FROM │
│ ( │
│ SELECT number AS x │
│ FROM numbers(20) │
│ WHERE ((x >= 1) AND (x <= 5)) OR ((x >= 10) AND (x <= 15)) │
│ ) AS a │
│ WHERE ((x >= 1) AND (x <= 5)) OR ((x >= 10) AND (x <= 15)) │
│ SETTINGS convert_query_to_cnf = 0 │
└────────────────────────────────────────────────────────────────┘لنضبط convert_query_to_cnf على true ونرَ ما الذي سيتغير:
EXPLAIN SYNTAX
SELECT *
FROM
(
SELECT number AS x
FROM numbers(20)
) AS a
WHERE ((x >= 1) AND (x <= 5)) OR ((x >= 10) AND (x <= 15))
SETTINGS convert_query_to_cnf = true;لاحظ أن عبارة WHERE أُعيدت كتابتها إلى صيغة CNF، لكن مجموعة النتائج هي نفسها تمامًا — فالمنطق البولياني لم يتغير:
┌─explain───────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ SELECT x │
│ FROM │
│ ( │
│ SELECT number AS x │
│ FROM numbers(20) │
│ WHERE ((x <= 15) OR (x <= 5)) AND ((x <= 15) OR (x >= 1)) AND ((x >= 10) OR (x <= 5)) AND ((x >= 10) OR (x >= 1)) │
│ ) AS a │
│ WHERE ((x >= 10) OR (x >= 1)) AND ((x >= 10) OR (x <= 5)) AND ((x <= 15) OR (x >= 1)) AND ((x <= 15) OR (x <= 5)) │
│ SETTINGS convert_query_to_cnf = 1 │
└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘القيم الممكنة: true, false
count_matches_stop_at_empty_match
سجل الإصدارات
| الإصدار | القيمة الافتراضية | التعليق |
|---|---|---|
| 25.6 | 0 | إعداد جديد. |
يتوقف العدّ بمجرد أن يطابق النمط طولًا صفريًا في الدالة 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
سجل الإصدارات
| الإصدار | القيمة الافتراضية | التعليق |
|---|---|---|
| 26.2 | 1 | تمكين إزالة التكرار للعروض المادية التابعة افتراضيًا. |
يُفعِّل أو يعطِّل التحقق من إزالة التكرار للعروض المادية التي تتلقى البيانات من جداول Replicated*.
القيم الممكنة:
- 0 — معطّل.
- 1 — مفعّل.
عند التمكين، يُجري ClickHouse إزالة التكرار للكتل في العروض المادية التي تعتمد على جداول Replicated*. يفيد هذا الإعداد في ضمان عدم احتواء العروض المادية على بيانات مكررة عند إعادة محاولة عملية الإدراج بسبب حدوث فشل.
انظر أيضًا
defer_partition_pruning_after_final
سجل الإصدارات
| الإصدار | القيمة الافتراضية | التعليق |
|---|---|---|
| 26.5 | 1 | إعداد أُضيف حديثًا في 26.5 لضبط سلوك تقليم الأقسام في FINAL، والذي طُرح بصمت في 26.3 (https://github.com/ClickHouse/ClickHouse/pull/98242). وقد سُجِّل التغيير الدلالي المهم ضمن قسم 26.3 بحيث إن `compatibility = '26.2'` يتراجع عنه؛ وهذا الإدخال موجود لكي يقبل فحص الترقية من 26.4 الاسم المُضاف حديثًا. |
| 26.3 | 1 | يضبط هذا الإعداد تخطّي المُخطِّط في FINAL لتقليم الأقسام بشكل غير مشروط عندما لا يكون عمود مفتاح القسم ضمن مفتاح الفرز. وقد طُرح تغيير السلوك نفسه بصمت في 26.3 عبر https://github.com/ClickHouse/ClickHouse/pull/98242؛ وهذا الإدخال يوثّقه بأثر رجعي بحيث إن `compatibility = '26.2'` يستعيد السلوك السابق للتراجع (0 = تقليم قبل FINAL، أسرع؛ 1 = تأجيل التقليم، آمن من ناحية الصحة). |
عند التمكين (وهو الإعداد الافتراضي)، يتم تخطّي تقليم الأقسام في استعلامات FINAL على الجداول التي لا تكون
أعمدة مفتاح القسم فيها جزءًا من مفتاح الفرز. وهذا هو السلوك الآمن من ناحية الصحة
الذي أُدخل في 26.3: فقد يحتاج FINAL إلى إزالة تكرار الصفوف التي تشترك في
مفتاح أساسي واحد لكنها موجودة في أقسام مختلفة، وسيؤدي تقليم الأقسام إلى استبعاد
مثل هذه الصفوف بصمت من مدخلات إزالة التكرار.
عند التعطيل، يُطبَّق تقليم الأقسام حتى مع FINAL، مما يعيد سلوك ما قبل 26.3.
وقد يكون هذا أسرع بكثير للاستعلامات التي تحتوي على شروط WHERE على
عمود القسم، لكنه يكون صحيحًا فقط عندما يستحيل وجود صفوف لها المفتاح الأساسي نفسه
في أقسام مختلفة — مثل جداول سجل الأحداث التي يُحدَّد فيها عمود القسم وقت insert
ولا يتغير مطلقًا.
لا يؤثر هذا الإعداد إلا في الجداول المُقسَّمة التي لا تكون أعمدة مفتاح القسم فيها مُتضمَّنة ضمن مفتاح الفرز؛ أما في الجداول الأخرى، فيُطبَّق تقليم الأقسام دائمًا.
القيم الممكنة:
- 0 — طبّق تقليم الأقسام قبل
FINAL(سلوك ما قبل 26.3، أسرع لكنه غير آمن في الحالة العامة). - 1 — أجّل تقليم الأقسام إلى ما بعد
FINAL(الافتراضي، آمن من ناحية الصحة).
describe_compact_output
إذا كانت القيمة true، فأدرِج فقط أسماء الأعمدة وأنواعها في نتيجة الاستعلام DESCRIBE
dialect
اللهجة المستخدمة لتحليل الاستعلام.
القيم المدعومة:
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.
discard_query_data
سجل الإصدارات
| الإصدار | القيمة الافتراضية | التعليق |
|---|---|---|
| 26.7 | 0 | إعداد جديد لتجاوز إرسال صفوف نتيجة الاستعلام إلى العميل عبر بروتوكول TCP الأصلي. |
إذا كان مُمكّنًا، يتجاوز الخادم إرسال صفوف نتيجة الاستعلام إلى العميل. ومع ذلك، يظل الاستعلام يُنفَّذ ويُسجَّل بالكامل على الخادم، كما يواصل العميل تلقي الحزم الأخرى.
يُستخدم لحركة المرور الظلية، واختبارات الأداء، والتشويش.
ليس له أي تأثير على الاستعلامات الثانوية.
يؤثر فقط في بروتوكول TCP الأصلي.
distinct_overflow_mode
يحدّد ما يحدث عند تجاوز كمية البيانات أحد الحدود.
القيم الممكنة:
throw: رفع استثناء (الافتراضي).break: إيقاف تنفيذ الاستعلام وإرجاع نتيجة جزئية، كما لو أن بيانات المصدر قد نفدت.
do_not_merge_across_partitions_select_final
حسّن أداء استعلامات FINAL بتجنّب عمليات الدمج عبر أقسام مختلفة.
عند تفعيل هذا الإعداد، لن تُدمَج الأجزاء من أقسام مختلفة معًا أثناء استعلامات SELECT FINAL. وبدلًا من ذلك، سيقتصر الدمج على الأجزاء داخل كل قسم على حدة. ويمكن أن يحسّن ذلك أداء الاستعلام بشكل كبير عند العمل مع الجداول المُقسّمة.
dynamic_throw_on_type_mismatch
سجل الإصدارات
| الإصدار | القيمة الافتراضية | التعليق |
|---|---|---|
| 26.4 | 1 | إعداد جديد للتحكم في سلوك عدم تطابق الأنواع في التنفيذ الافتراضي لـ Dynamic |
عند تطبيق دالة على عمود Dynamic باستخدام التنفيذ الافتراضي، يحدد هذا الإعداد ما يحدث للصفوف التي يكون نوعها الفعلي غير متوافق مع الدالة:
true(الافتراضي) — طرح استثناء.false— إرجاعNULLلتلك الصفوف بدلًا من ذلك.
enforce_strict_identifier_format
سجل الإصدارات
| الإصدار | القيمة الافتراضية | التعليق |
|---|---|---|
| 24.10 | 0 | إعداد جديد. |
عند تمكينه، يُسمح فقط بالمعرّفات التي تحتوي على أحرف وأرقام وشرطات سفلية.
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
سجل الإصدارات
| الإصدار | القيمة الافتراضية | التعليق |
|---|---|---|
| 25.10 | إعداد جديد. |
يستثني فهارس التخطي المحددة من بنائها وتخزينها أثناء عمليات INSERT. وستظل فهارس التخطي المستثناة تُبنى وتُخزَّن أثناء عمليات الدمج أو من خلال استعلام MATERIALIZE INDEX صريح.
لا يكون له أي تأثير إذا كانت materialize_skip_indexes_on_insert مضبوطة على false.
مثال:
CREATE TABLE tab
(
a UInt64,
b UInt64,
INDEX idx_a a TYPE minmax,
INDEX idx_b b TYPE set(3)
)
ENGINE = MergeTree ORDER BY tuple();
SET exclude_materialize_skip_indexes_on_insert='idx_a'; -- idx_a will be not be updated upon insert
--SET exclude_materialize_skip_indexes_on_insert='idx_a, idx_b'; -- neither index would be updated on insert
INSERT INTO tab SELECT number, number / 50 FROM numbers(100); -- only idx_b is updated
-- since it is a session setting it can be set on a per-query level
INSERT INTO tab SELECT number, number / 50 FROM numbers(100, 100) SETTINGS exclude_materialize_skip_indexes_on_insert='idx_b';
ALTER TABLE tab MATERIALIZE INDEX idx_a; -- this query can be used to explicitly materialize the index
SET exclude_materialize_skip_indexes_on_insert = DEFAULT; -- reset setting to defaultexecute_exists_as_scalar_subquery
سجل الإصدارات
| الإصدار | القيمة الافتراضية | التعليق |
|---|---|---|
| 25.8 | 1 | إعداد جديد |
نفِّذ استعلامات EXISTS الفرعية غير المرتبطة باعتبارها استعلامات فرعية ذات القيمة المفردة. وكما هو الحال في الاستعلامات الفرعية ذات القيمة المفردة، تُستخدم الذاكرة المؤقتة ويُطبَّق طيّ الثوابت على النتيجة.
القيمة الافتراضية في Cloud: 0.
explain_query_plan_default
سجل الإصدارات
| الإصدار | القيمة الافتراضية | التعليق |
|---|---|---|
| 26.7 | pretty | اعتبارًا من الإصدار 26.7، يصبح `EXPLAIN PLAN` افتراضيًا `actions=1, compact=1, pretty=1`. اضبط هذا على `legacy` لاستعادة المخرجات المستخدمة قبل 26.7. |
التنسيق الافتراضي الذي يستخدمه 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
سجل الإصدارات
| الإصدار | القيمة الافتراضية | التعليق |
|---|---|---|
| 26.8 | 1 | اعتبارًا من الإصدار 26.8، يعيد `EXPLAIN SYNTAX` الاستعلام المُعاد تنسيقه كسجل واحد (يتضمن أسطرًا جديدة مضمنة) بدلًا من سجل لكل سطر. اضبط هذا الإعداد على `false` لاستعادة المخرجات السابقة للإصدار 26.8، بسجل لكل سطر. |
أعد مخرجات 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
سجل الإصدارات
| الإصدار | القيمة الافتراضية | التعليق |
|---|---|---|
| 24.2 | 1000 | الحد الأقصى لعدد الأزواج التي يمكن أن تُنتجها الدالة `extractKeyValuePairs`. يُستخدم كإجراء احترازي لمنع استهلاك قدر كبير جدًا من الذاكرة. |
الحد الأقصى لعدد الأزواج التي يمكن أن تُنتجها الدالة 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
سجل الإصدارات
| الإصدار | القيمة الافتراضية | التعليق |
|---|---|---|
| 26.6 | hive | تغيير استراتيجية التقسيم الافتراضية لمحركات الجداول المشابهة للملفات (S3 وAzureBlobStorage وما إلى ذلك) من `wildcard` إلى `hive` عند عدم توفير `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
سجل الإصدارات
| الإصدار | القيمة الافتراضية | التعليق |
|---|---|---|
| 26.8 | إعداد جديد لإضافة عبارة `WHERE` حول استعلام. |
يضيف عبارة WHERE إلى الاستعلام ضمن استعلام فرعي مغلّف. تُدمج عوامل التصفية المتعددة باستخدام AND. تتيح واجهة HTTP استخدام عدة معاملات URL باسم filter، تُدمج بالترتيب باستخدام AND ومع قيمة هذا الإعداد.
هذا إعداد لإنشاء الاستعلامات يطبّقه المحرك على الاستعلام المُحلَّل، وذلك بلفّه كجدول مشتق؛ لذا فهو يتكامل مع الاستعلام الحالي ويعمل عبر جميع البروتوكولات. ويمكن تمريره عبر معامل URL لـ HTTP، أو عبارة SETTINGS داخل الاستعلام، أو ملف تعريف المستخدم.
يؤثر في استعلامات SELECT / UNION التي تُنتج نتائج. أما في استعلامات الكتابة (INSERT … SELECT، CREATE … AS SELECT)، فلا يسري إلا إذا تضمّنه SELECT المصدر في عبارة SETTINGS الخاصة به؛ أما القيمة الموروثة من ملف تعريف أو جلسة، أو المضبوطة في تعليمة INSERT / CREATE نفسها، فلا تُنقل إلى SELECT المصدر — وهي قاعدة عدم النقل نفسها التي تنطبق على أي إعداد آخر.
final
يطبّق المُعدِّل FINAL تلقائيًا على جميع الجداول في الاستعلام التي يمكن تطبيق FINAL عليها، بما في ذلك الجداول المنضمّة والجداول في الاستعلامات الفرعية والجداول الموزعة.
القيم الممكنة:
- 0 - معطّل
- 1 - مُمكّن
مثال:
CREATE TABLE test
(
key Int64,
some String
)
ENGINE = ReplacingMergeTree
ORDER BY key;
INSERT INTO test FORMAT Values (1, 'first');
INSERT INTO test FORMAT Values (1, 'second');
SELECT * FROM test;
┌finalize_projection_parts_synchronously
سجل الإصدارات
| الإصدار | القيمة الافتراضية | التعليق |
|---|---|---|
| 26.4 | 0 | إعداد جديد لإنهاء أجزاء الإسقاط بشكل متزامن أثناء INSERT لتقليل استخدام الذاكرة عند الذروة. |
عند تمكين هذا الإعداد، تُنهى أجزاء الإسقاط بشكل متزامن أثناء INSERT، مما يقلل استخدام الذاكرة عند الذروة، ولكن على حساب تقليل توازي الرفع إلى S3. افتراضيًا، يظل تدفق المخرجات لكل إسقاط نشطًا إلى أن يُنهى الجزء بالكامل (بما في ذلك جميع الإسقاطات)، مما يتيح تداخل عمليات الرفع إلى S3، لكنه يزيد استخدام الذاكرة عند الذروة بما يتناسب مع عدد الإسقاطات. لا يؤثر هذا الإعداد إلا في مسار INSERT؛ أما الدمج وعمليات mutation فتُنهي الإسقاطات بشكل متزامن بالفعل.
flatten_nested
يضبط تنسيق البيانات لأعمدة Nested.
القيم الممكنة:
- 1 — يُسطَّح عمود Nested إلى مصفوفات منفصلة.
- 0 — يبقى عمود Nested مصفوفة واحدة من قيم Tuple.
الاستخدام
إذا ضُبط هذا الإعداد على 0، يمكن استخدام أي مستوى من التعشيق.
أمثلة
الاستعلام:
SET flatten_nested = 1;
CREATE TABLE t_nest (`n` Nested(a UInt32, b UInt32)) ENGINE = MergeTree ORDER BY tuple();
SHOW CREATE TABLE t_nest;النتيجة:
┌─statement───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ CREATE TABLE default.t_nest
(
`n.a` Array(UInt32),
`n.b` Array(UInt32)
)
ENGINE = MergeTree
ORDER BY tuple()
SETTINGS index_granularity = 8192 │
└─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘الاستعلام:
SET flatten_nested = 0;
CREATE TABLE t_nest (`n` Nested(a UInt32, b UInt32)) ENGINE = MergeTree ORDER BY tuple();
SHOW CREATE TABLE t_nest;النتيجة:
┌─statement──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ CREATE TABLE default.t_nest
(
`n` Nested(a UInt32, b UInt32)
)
ENGINE = MergeTree
ORDER BY tuple()
SETTINGS index_granularity = 8192 │
└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘format
سجل الإصدارات
| الإصدار | القيمة الافتراضية | التعليق |
|---|---|---|
| 26.8 | إعداد جديد لتجاوز FORMAT الاستعلام لكلٍّ من الإدخال والإخراج. |
يتجاوز FORMAT الاستعلام لكلٍّ من الإدخال والإخراج. وله أولوية على التنسيق المحدد في الاستعلام وفي امتداد الملف. وتكون لإعدادات input_format وoutput_format الأكثر تحديدًا أولوية على إعداد format العام هذا، كلٌّ في اتجاهه المعني.
framing_output_format
سجل الإصدارات
| الإصدار | القيمة الافتراضية | التعليق |
|---|---|---|
| 26.8 | None | إعداد جديد لاختيار تنسيق تأطير يضم حزم البيانات والإجماليات والقيم القصوى والتقدم والسجلات وأحداث التنميط في دفق إخراج واحد عبر HTTP. |
يتيح ضم أجزاء مختلفة من استجابة الاستعلام في دفق واحد: фрагменты البيانات، والإجماليات والقيم القصوى، وحزم التقدم، وأحداث التنميط (المقاييس)، وسجلات الخادم — أي كل ما يدعمه البروتوكول الأصلي.
تكون تنسيقات التأطير مستقلة عن تنسيقات الإخراج: فهي تغلف البايتات التي ينتجها أي تنسيق إخراج، وذلك بفصل фрагменты البايتات هذه وترميزها عند الحاجة. إن تسلسل حمولات جميع حزم 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 لنقل البايتات العشوائية مع الحفاظ التام على البايتات.
مثال:
curl "http://localhost:8123/?framing_output_format=JSONEachPacketString" -d "SELECT number FROM numbers(3) FORMAT JSONEachRow"النتيجة:
{"packet":"data","data":"{\"number\":\"0\"}\n{\"number\":\"1\"}\n{\"number\":\"2\"}\n"}
{"packet":"profile_events","profile_events":[{"host_name":"localhost","current_time":"2026-07-11 00:00:00","thread_id":"0","type":"increment","name":"SelectedRows","value":"3"}]}
{"packet":"progress","progress":{"read_rows":"3","read_bytes":"24","total_rows_to_read":"3","result_rows":"3","result_bytes":"24","elapsed_ns":"1265958"}}fsync_metadata
يؤدي إلى تمكين fsync أو تعطيله عند كتابة ملفات .sql. ويكون مفعّلًا افتراضيًا.
قد يكون من المنطقي تعطيله إذا كان لدى الخادم ملايين الجداول الصغيرة التي تُنشأ وتُحذف باستمرار.
functions_h3_default_if_invalid
سجل الإصدارات
| الإصدار | القيمة الافتراضية | التعليق |
|---|---|---|
| 26.2 | 0 | إعداد جديد للسلوك القديم للسماح بتمرير مُدخلات غير صالحة إلى دوال h3 |
إذا كانت القيمة false، فستُصدر دوال h3، مثل h3CellAreaM2، استثناءً إذا كان الإدخال غير صالح. وإذا كانت القيمة true، فستُرجع 0 أو القيمة الافتراضية.
geo_distance_returns_float64_on_float64_arguments
سجل الإصدارات
| الإصدار | القيمة الافتراضية | التعليق |
|---|---|---|
| 24.3 | 1 | زيادة الدقة الافتراضية. |
إذا كانت الوسيطات الأربع للدوال geoDistance وgreatCircleDistance وgreatCircleAngle كلها من النوع Float64، فستُرجِع Float64 وتستخدم دقة مضاعفة في العمليات الحسابية الداخلية. في إصدارات ClickHouse السابقة، كانت هذه الدوال تُرجِع دائمًا Float32.
geotoh3_argument_order
سجل الإصدارات
| الإصدار | القيمة الافتراضية | التعليق |
|---|---|---|
| 25.5 | lat_lon | إعداد جديد للسلوك القديم لتحديد ترتيب الوسيطتين lon وlat |
تقبل الدالة 'geoToH3' (lon, lat) إذا ضُبطت على 'lon_lat'، و(lat, lon) إذا ضُبطت على 'lat_lon'.
glob_expansion_max_elements
الحد الأقصى لعدد العناوين المسموح بها (مثل وحدات التخزين الخارجية ودوال الجداول وغيرها).
h3togeo_lon_lat_result_order
سجل الإصدارات
| الإصدار | القيمة الافتراضية | التعليق |
|---|---|---|
| 25.1 | 0 | إعداد جديد |
تعيد الدالة 'h3ToGeo' القيمة (lon, lat) إذا كانت القيمة true، وإلا فتُعيد (lat, lon).
handshake_timeout_ms
مهلة الانتظار بالمللي ثانية لاستلام حزمة Hello من النسخ المتماثلة أثناء المصافحة.
hedged_connection_timeout_ms
سجل الإصدارات
| الإصدار | القيمة الافتراضية | التعليق |
|---|---|---|
| 23.4 | 50 | ابدأ اتصالًا جديدًا في طلبات Hedged بعد 50 مللي ثانية بدلًا من 100، ليتوافق ذلك مع مهلة الاتصال السابقة |
مهلة الاتصال لإنشاء اتصال مع نسخة متماثلة لطلبات Hedged
highlight_max_matches_per_row
سجل الإصدارات
| الإصدار | القيمة الافتراضية | التعليق |
|---|---|---|
| 26.4 | 10000 | إعداد جديد للحد من عدد المطابقات المبرزة في كل صف، للحماية من الإفراط في استخدام الذاكرة. |
يحدد الحد الأقصى لعدد المطابقات المبرزة في كل صف في الدالة highlight. استخدمه للحماية من الإفراط في استخدام الذاكرة عند إبراز الأنماط كثيرة التكرار في النصوص الكبيرة.
القيم الممكنة:
- عدد صحيح موجب.
hnsw_candidate_list_size_for_search
سجل الإصدارات
| الإصدار | القيمة الافتراضية | التعليق |
|---|---|---|
| 24.10 | 256 | إعداد جديد. سابقًا، كانت القيمة تُحدَّد اختياريًا في CREATE INDEX، وكانت القيمة الافتراضية 64. |
حجم قائمة المرشحين الديناميكية عند البحث في فهرس تشابه المتجهات، ويُعرف أيضًا باسم 'ef_search'.
hsts_max_age
مدة انتهاء صلاحية HSTS. تعني القيمة 0 تعطيل HSTS.
idle_connection_timeout
مهلة إغلاق اتصالات TCP الخاملة بعد عدد الثواني المحدد.
القيم الممكنة:
- عدد صحيح موجب (0 - إغلاق فوري، بعد 0 ثانية).
inject_random_order_for_select_without_order_by
سجل الإصدارات
| الإصدار | القيمة الافتراضية | التعليق |
|---|---|---|
| 25.10 | 0 | إعداد جديد |
إذا كان مُمكّنًا، فسيُدرج 'ORDER BY rand()' في استعلامات SELECT التي لا تحتوي على بند ORDER BY. يُطبَّق هذا فقط عندما يكون عمق الاستعلام الفرعي = 0. ولا تتأثر الاستعلامات الفرعية ولا INSERT INTO … SELECT. إذا كان التركيب على المستوى الأعلى هو UNION، فسيُدرج 'ORDER BY rand()' في جميع الفروع بشكل مستقل. هذا مفيد فقط لأغراض الاختبار والتطوير (إذ إن غياب ORDER BY يُعدّ مصدرًا لنتائج استعلام غير حتمية).
input_format
سجل الإصدارات
| الإصدار | القيمة الافتراضية | التعليق |
|---|---|---|
| 26.8 | إعداد جديد لتجاوز تنسيق الإدخال للاستعلام. |
يتجاوز تنسيق الإدخال للاستعلام، وله الأولوية على التنسيق المحدد فيه.
interactive_delay
الفاصل الزمني بالميكروثانية للتحقق مما إذا كان تنفيذ الطلب قد أُلغي وإرسال معلومات التقدّم.
intersect_default_mode
يُعيّن الوضع الافتراضي في استعلام INTERSECT. القيم الممكنة: سلسلة فارغة، 'ALL'، 'DISTINCT'. إذا كانت القيمة فارغة، فسيؤدي الاستعلام بدون وضع إلى إثارة استثناء.
least_greatest_legacy_null_behavior
سجل الإصدارات
| الإصدار | القيمة الافتراضية | التعليق |
|---|---|---|
| 24.12 | 0 | إعداد جديد |
إذا كان هذا الإعداد ممكّنًا، فستُرجِع الدالتان 'least' و 'greatest' القيمة NULL إذا كانت إحدى وسيطاتهما NULL.
legacy_column_name_of_tuple_literal
سجل الإصدارات
| الإصدار | القيمة الافتراضية | التعليق |
|---|---|---|
| 21.7 | 0 | أضِف هذا الإعداد لأسباب التوافق فقط. من المنطقي ضبطه على 'true' أثناء إجراء تحديث متدرّج للعنقود من إصدار أقل من 21.7 إلى إصدار أعلى |
أدرِج أسماء جميع عناصر قيم Tuple الحرفية الكبيرة في أسماء الأعمدة بدلًا من hash. هذا الإعداد موجود فقط لأسباب التوافق. من المنطقي ضبطه على 'true' أثناء إجراء تحديث متدرّج للعنقود من إصدار أقل من 21.7 إلى إصدار أعلى.
limit
سجل الإصدارات
| الإصدار | القيمة الافتراضية | التعليق |
|---|---|---|
| 26.8 | 0 | وُسّع النوع من UInt64 إلى Float لدعم القيم السالبة والكسرية، وتمريرها إلى دعم ClickHouse الأصلي للقيم السالبة/الكسرية في `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
تحميل علامات MergeTree بصورة غير متزامنة
القيمة الافتراضية في Cloud: 1.
lock_acquire_timeout
يحدّد عدد الثواني التي ينتظرها طلب القفل قبل أن يفشل.
تُستخدم مهلة القفل للحماية من حالات التوقف المتبادل أثناء تنفيذ عمليات القراءة والكتابة على الجداول. وعند انتهاء المهلة وفشل طلب القفل، يرفع خادم ClickHouse الاستثناء "Locking attempt timed out! Possible deadlock avoided. Client should retry." مع رمز الخطأ DEADLOCK_AVOIDED.
القيم الممكنة:
- عدد صحيح موجب (بالثواني).
- 0 — لا توجد مهلة للقفل.
low_priority_query_wait_time_ms
سجل الإصدارات
| الإصدار | القيمة الافتراضية | التعليق |
|---|---|---|
| 25.4 | 1000 | إعداد جديد. |
عند استخدام آلية تحديد أولويات الاستعلامات (راجع الإعداد priority)، تنتظر الاستعلامات منخفضة الأولوية حتى تنتهي الاستعلامات ذات الأولوية الأعلى. يحدّد هذا الإعداد مدة هذا الانتظار.
make_distributed_plan
سجل الإصدارات
| الإصدار | القيمة الافتراضية | التعليق |
|---|---|---|
| 25.5 | 0 | إعداد تجريبي جديد. |
إنشاء خطة استعلام موزعة.
يؤدي تمكينه إلى ضبط الإعدادات التي تتحكم في الميزات التي لا تدعمها خطط الاستعلامات الموزعة بعد تلقائيًا:
enable_parallel_replicas = 0وautomatic_parallel_replicas_mode = 0— تتولى الخطة الموزعة توزيع العمل بنفسها؛correlated_subqueries_use_in_memory_buffer = 0;use_skip_indexes_on_data_read = 0;compile_expressions = 0;query_plan_direct_read_from_text_index = 0.
merge_table_max_tables_to_look_for_schema_inference
سجل الإصدارات
| الإصدار | القيمة الافتراضية | التعليق |
|---|---|---|
| 25.1 | 1000 | إعداد جديد |
عند إنشاء جدول Merge من دون مخطط صريح، أو عند استخدام دالة الجدول merge، يُستنتج المخطط باعتباره اتحادًا لما لا يزيد على العدد المحدد من الجداول المطابقة.
إذا كان عدد الجداول أكبر من ذلك، فسيُستنتج المخطط من أول عدد محدد من الجداول.
mongodb_throw_on_unsupported_query
سجل الإصدارات
| الإصدار | القيمة الافتراضية | التعليق |
|---|---|---|
| 24.9 | 1 | إعداد جديد. |
| 24.10 | 1 | إعداد جديد. |
إذا كان هذا الخيار مُمكّنًا، فستُرجِع جداول MongoDB خطأً عند تعذّر إنشاء استعلام MongoDB. وإلا، فسيقرأ ClickHouse الجدول بالكامل ويعالجه محليًا. لا ينطبق هذا الخيار عند تعيين 'allow_experimental_analyzer=0'.
multiple_joins_try_to_keep_original_names
لا تُضِف أسماءً مستعارة إلى قائمة التعبيرات على المستوى الأعلى عند إعادة كتابة عمليات الربط المتعددة
normalize_function_names
سجل الإصدارات
| الإصدار | القيمة الافتراضية | التعليق |
|---|---|---|
| 21.3 | 1 | تطبيع أسماء الدوال إلى صيغها القياسية، وكان ذلك مطلوبًا لتوجيه استعلامات projection |
تطبيع أسماء الدوال إلى صيغها القياسية
offset
سجل الإصدارات
| الإصدار | القيمة الافتراضية | التعليق |
|---|---|---|
| 26.8 | 0 | وُسِّع النوع من UInt64 إلى Float لدعم القيم السالبة والكسرية، وتُمرَّر القيمة كما هي إلى دعم ClickHouse الأصلي للقيم السالبة والكسرية في `OFFSET`. |
يحدد عدد الصفوف التي يجب تخطيها قبل بدء إرجاع صفوف الاستعلام. يضبط الإزاحة التي تحددها عبارة OFFSET. تُمرَّر القيمة كما هي إلى OFFSET، وتقبل كل ما يقبله OFFSET، بما في ذلك القيم السالبة والكسور ضمن (0, 1).
القيم الممكنة:
- 0 — لا يتم تخطي أي صفوف.
- عدد صحيح موجب.
- عدد صحيح سالب.
- عدد حقيقي ضمن النطاق المفتوح
(0, 1)— تُتخطى تلك النسبة من النتيجة.
مثال
جدول الإدخال:
CREATE TABLE test (i UInt64) ENGINE = MergeTree() ORDER BY i;
INSERT INTO test SELECT number FROM numbers(500);استعلام:
SET limit = 5;
SET offset = 7;
SELECT * FROM test LIMIT 10 OFFSET 100;النتيجة:
┌───i─┐
│ 107 │
│ 108 │
│ 109 │
└─────┘يؤثر هذا الإعداد في استعلامات SELECT / UNION التي تُنتج نتائج. بالنسبة إلى استعلام كتابة (INSERT … SELECT, CREATE … AS SELECT)، لا يسري مفعوله إلا إذا تضمّنه SELECT المصدر في عبارة SETTINGS الخاصة به؛ أما القيمة الموروثة من ملف تعريف أو جلسة، أو المضبوطة في عبارة INSERT / CREATE نفسها، فلا تُنقل إلى SELECT المصدر — وهي قاعدة عدم النقل نفسها المطبقة على أي إعداد آخر.
order
سجل الإصدارات
| الإصدار | القيمة الافتراضية | التعليق |
|---|---|---|
| 26.8 | إعداد جديد لإضافة عبارة `ORDER BY` حول استعلام. |
يضيف عبارة ORDER BY إلى الاستعلام في صورة استعلام فرعي مُغلِّف. ويقبل قائمة من التعبيرات الاعتباطية.
هذا إعداد لبناء الاستعلامات يطبّقه المحرك على الاستعلام المُحلَّل، وذلك بتغليفه كجدول مشتق. لذلك يتوافق مع الاستعلام الحالي ويعمل مع جميع البروتوكولات: يمكن تمريره عبر معلمة HTTP URL، أو عبارة SETTINGS داخل الاستعلام، أو ملف تعريف مستخدم.
يؤثر في استعلامات SELECT / UNION التي تُنتج نتائج. أما في استعلامات الكتابة (INSERT … SELECT وCREATE … AS SELECT)، فلا يسري مفعوله إلا إذا تضمّن SELECT المصدر هذا الإعداد في عبارة SETTINGS الخاصة به. ولا يُنقل إلى SELECT المصدر أيٌّ من القيم الموروثة من ملف تعريف أو جلسة، أو المضبوطة في عبارة INSERT / CREATE نفسها، وهي قاعدة عدم النقل ذاتها التي تنطبق على أي إعداد آخر.
output_format
سجل الإصدارات
| الإصدار | القيمة الافتراضية | التعليق |
|---|---|---|
| 26.8 | إعداد جديد لتجاوز تنسيق إخراج الاستعلام. |
يتجاوز تنسيق إخراج الاستعلام، ويكون له الأولوية على التنسيق المحدد في الاستعلام أو امتداد الملف أو عبر default_format.
صفحة
سجل الإصدارات
| الإصدار | القيمة الافتراضية | التعليق |
|---|---|---|
| 26.8 | 0 | إعداد جديد لاستجابات HTTP المُقسَّمة إلى صفحات، وهو مكافئ لـ offset = limit * (page - 1). من النوع Float، لذا يمكنه استيعاب قيم سالبة أو كسرية (تُمرَّر إلى SQL `LIMIT`/`OFFSET`). |
يعيّن رقم الصفحة للنتائج المُقسَّمة إلى صفحات. وهو مكافئ لـ 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
سجل الإصدارات
| الإصدار | القيمة الافتراضية | التعليق |
|---|---|---|
| 26.5 | -1 | إعداد جديد. |
قراءة لقطة مستهدفة على مستوى الاستعلام لوضع Paimon التزايدي. عند القيمة >0، سيجلب القارئ فقط دلتا للـ snapshot_id المحدد دون تقديم المؤشر المائي المعتمد. القيمة الافتراضية: -1 (معطّل)
parallelize_output_from_storages
سجل الإصدارات
| الإصدار | القيمة الافتراضية | التعليق |
|---|---|---|
| 23.5 | 1 | السماح بالتوازي عند تنفيذ الاستعلامات التي تقرأ من file/URL/S3/etc. وقد يؤدي ذلك إلى إعادة ترتيب الصفوف. |
موازاة المخرجات في خطوة القراءة من وحدات التخزين. يتيح هذا إجراء معالجة الاستعلامات بالتوازي مباشرةً بعد القراءة من وحدة التخزين، إذا أمكن ذلك
partial_result_on_first_cancel
يسمح بإرجاع نتيجة جزئية للاستعلام بعد الإلغاء.
per_part_index_stats
سجل الإصدارات
| الإصدار | القيمة الافتراضية | التعليق |
|---|---|---|
| 25.8 | 0 | إعداد جديد. |
يسجّل إحصاءات الفهرس لكل جزء
poll_interval
يُعلّق التنفيذ في حلقة انتظار الاستعلام على الخادم لعدد الثواني المحدد.
polyglot_dialect
سجل الإصدارات
| الإصدار | القيمة الافتراضية | التعليق |
|---|---|---|
| 26.3 | إعداد جديد لتحديد لهجة SQL المصدر لمحوّل polyglot. |
لهجة SQL المصدر لمحوّل polyglot (مثل: 'sqlite' و'mysql' و'postgresql' و'snowflake' و'duckdb').
postgresql_fault_injection_probability
سجل الإصدارات
| الإصدار | القيمة الافتراضية | التعليق |
|---|---|---|
| 25.2 | 0 | إعداد جديد |
الاحتمال التقريبي لفشل استعلامات PostgreSQL الداخلية (المستخدمة في النسخ المتماثل). القيمة الصالحة ضمن النطاق [0.0f, 1.0f]
predicate_statistics_sample_rate
سجل الإصدارات
| الإصدار | القيمة الافتراضية | التعليق |
|---|---|---|
| 26.5 | 0 | إعداد جديد لجمع إحصاءات انتقائية عبارات الشرط في system.predicate_statistics_log |
يجمع إحصاءات انتقائية عبارات الشرط في system.predicate_statistics_log. عند تعيينه إلى N > 0، تُؤخذ عيّنة من نحو 1/N من الاستعلامات (استنادًا إلى معرّف الاستعلام). 0 يعني تعطيله.
prefetch_buffer_size
الحد الأقصى لحجم مخزن الجلب المسبق المؤقت المستخدم للقراءة من نظام الملفات. تُقيَّد القيم التي تتجاوز 256 MiB عند 256 MiB، لأن مخزن القراءة المؤقت لا يحتاج مطلقًا إلى حجم أكبر.
print_pretty_type_names
سجل الإصدارات
| الإصدار | القيمة الافتراضية | التعليق |
|---|---|---|
| 24.1 | 1 | تجربة مستخدم أفضل. |
يسمح بعرض أسماء الأنواع المتداخلة بعمق بصورة منسقة مع مسافات بادئة في query DESCRIBE وفي الدالة toTypeName().
مثال:
CREATE TABLE test (a Tuple(b String, c Tuple(d Nullable(UInt64), e Array(UInt32), f Array(Tuple(g String, h Map(String, Array(Tuple(i String, j UInt64))))), k Date), l Nullable(String))) ENGINE=Memory;
DESCRIBE TABLE test FORMAT TSVRaw SETTINGS print_pretty_type_names=1;a Tuple(
b String,
c Tuple(
d Nullable(UInt64),
e Array(UInt32),
f Array(Tuple(
g String,
h Map(
String,
Array(Tuple(
i String,
j UInt64
))
)
)),
k Date
),
l Nullable(String)
)priority
priority الاستعلام. 1 هي الأعلى، وكلما زادت القيمة انخفضت priority؛ 0 يعني عدم استخدام الأولويات.
push_external_roles_in_interserver_queries
سجل الإصدارات
| الإصدار | القيمة الافتراضية | التعليق |
|---|---|---|
| 24.11 | 1 | إعداد جديد. |
تمكين تمرير أدوار المستخدم من العقدة المُرسِلة إلى العُقد الأخرى أثناء تنفيذ استعلام.
query_metric_log_interval
سجل الإصدارات
| الإصدار | القيمة الافتراضية | التعليق |
|---|---|---|
| 24.10 | -1 | إعداد جديد. |
الفاصل الزمني، بالمللي ثانية، الذي تُجمع عنده بيانات 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
سجل الإصدارات
| الإصدار | القيمة الافتراضية | التعليق |
|---|---|---|
| 26.5 | 10 | الحد الأقصى لعدد التكرارات لاستنتاج أنواع الأعمدة في تعبيرات الجدول الشائعة التعاودية باستخدام `getLeastSupertype` بشكل تكراري |
الحد الأقصى لعدد التكرارات لاستنتاج أنواع الأعمدة في تعبيرات الجدول الشائعة التعاودية. تُحدَّد أنواع الأعمدة عبر تطبيق 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 وفقًا للنمط المحدد باستخدام العناصر النائبة، وذلك فقط إذا تمت معالجة الملفات بنجاح.
العناصر النائبة
%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
سجل الإصدارات
| الإصدار | القيمة الافتراضية | التعليق |
|---|---|---|
| 26.7 | 0 | إعداد جديد لحجز الذاكرة لعبء عمل محدد قبل بدء استعلام. |
يُستخدم هذا الإعداد في جدولة أعباء العمل. وهو الحد الأدنى من RAM المحجوزة لاستخدامها لتشغيل استعلام على خادم واحد. ويُجرى الحجز عبر التسلسل الهرمي لـ WORKLOAD باستخدام قيمة إعداد الاستعلام workload.
إذا لم تكن هناك ذاكرة كافية متاحة لعبء العمل، فسيُمنع الاستعلام من البدء وينتظر في حالة pending إلى أن يمكن تلبية الحجز.
تعني القيمة 0 عدم وجود حجز.
لا يسري هذا الإعداد إلا إذا تم إنشاء مورد MEMORY RESERVATION.
سجل الإصدارات
| الإصدار | القيمة الافتراضية | التعليق |
|---|---|---|
| 25.2 | 0 | إعداد جديد. |
استبدال محرك الجدول من ReplicatedMergeTree إلى SharedMergeTree أثناء RESTORE.
القيمة الافتراضية في Cloud: 1.
result_overflow_mode
يحدّد ما يجب فعله إذا تجاوز حجم النتيجة أحد الحدود.
القيم الممكنة:
throw: يرفع استثناءً (الافتراضي).break: يوقف تنفيذ الاستعلام ويُرجع نتيجة جزئية، كما لو أن البيانات المصدرية قد نفدت.
يشبه استخدام 'break' استخدام LIMIT. ولا يوقف Break التنفيذ إلا على
مستوى الكتلة. وهذا يعني أن عدد الصفوف المُعادة يكون أكبر من
max_result_rows، ومن مضاعفات max_block_size
ويعتمد على max_threads.
مثال
SET max_threads = 3, max_block_size = 3333;
SET max_result_rows = 3334, result_overflow_mode = 'break';
SELECT *
FROM numbers_mt(100000)
FORMAT Null;6666 rows in set. ...resumable_backup_from_snapshot
سجل الإصدارات
| الإصدار | القيمة الافتراضية | التعليق |
|---|---|---|
| 26.8 | 0 | إعداد تجريبي جديد لتمكين `BACKUP FROM SNAPSHOT` القابل للاستئناف. |
يتيح BACKUP FROM SNAPSHOT القابل للاستئناف: إذ يمكن إعادة تشغيل محاولة فاشلة دون إعادة نسخ
إدخالات الدفعات التي اكتملت بالفعل. يتوفر فقط في ClickHouse Cloud، لوجهات
S3 وAzureBlobStorage بنمط الدليل. يؤدي تمكينه في إصدارات ClickHouse مفتوحة المصدر، حيث لا يتوفر
BACKUP FROM SNAPSHOT نفسه، إلى فشل BACKUP مع WRONG_BACKUP_SETTINGS.
rows_before_aggregation
سجل الإصدارات
| الإصدار | القيمة الافتراضية | التعليق |
|---|---|---|
| 24.8 | 0 | يوفّر قيمة دقيقة لإحصائية rows_before_aggregation، التي تمثل عدد الصفوف المقروءة قبل التجميع |
عند التمكين، يوفّر ClickHouse قيمة دقيقة لإحصائية rows_before_aggregation، التي تمثل عدد الصفوف المقروءة قبل التجمي
run_query_in_background
سجل الإصدارات
| الإصدار | القيمة الافتراضية | التعليق |
|---|---|---|
| 26.8 | 0 | إعداد جديد لتشغيل استعلام في الخلفية، منفصلًا عن الاتصال الذي أرسله، مع تجاهل النتيجة. |
عند تفعيله، يجدول الخادم الاستعلام في الخلفية، ويُرجع فورًا نتيجة نجاح فارغة، ثم يشغّل الاستعلام حتى اكتماله بغض النظر عما يحدث للاتصال.
لا يستمر الاستعلام الذي يعمل في الخلفية بعد إعادة تشغيل الخادم. وعند إيقاف التشغيل، تنطبق عليه إعدادات الخادم نفسها المطبقة على الاستعلامات التي تعمل في المقدمة: يحدد 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
سجل الإصدارات
| الإصدار | القيمة الافتراضية | التعليق |
|---|---|---|
| 25.5 | 1 | خوارزمية جديدة للتصفية بواسطة فهارس تخطي البيانات |
يُفعِّل خوارزمية التصفية المجمّعة للفهارس. ومن المتوقع أن تكون أفضل دائمًا، لكن هذا الإعداد متاح لأغراض التوافق والتحكم.
select
سجل الإصدارات
| الإصدار | القيمة الافتراضية | التعليق |
|---|---|---|
| 26.8 | إعداد جديد لتغليف استعلام داخل `SELECT <expr_list> FROM (<query>)`. |
يغلّف الاستعلام كاستعلام فرعي بقائمة تعبيرات SELECT صريحة. وعندما لا يكون فارغًا، يُغلَّف الاستعلام الذي يُنتج النتائج على النحو التالي: SELECT <expr_list> FROM (<query>).
هذا إعداد لبناء الاستعلامات يطبّقه المحرك على الاستعلام المُحلَّل، عبر تغليفه كجدول مشتق. لذلك، فهو يتكامل مع الاستعلام الحالي ويعمل عبر جميع البروتوكولات؛ إذ يمكن تمريره عبر معلمة HTTP URL، أو عبارة SETTINGS داخل الاستعلام، أو ملف تعريف المستخدم.
يحدّد بنية استعلامات SELECT / UNION التي تُنتج نتائج. أما في استعلامات الكتابة (INSERT … SELECT، CREATE … AS SELECT)، فلا يسري إلا إذا تضمّنه SELECT المصدر في عبارة SETTINGS الخاصة به. ولا تُنقل إلى SELECT المصدر قيمة موروثة من ملف تعريف أو جلسة، أو قيمة محددة في عبارة INSERT / CREATE نفسها، وهي قاعدة عدم النقل ذاتها التي تنطبق على أي إعداد آخر.
select_sequential_consistency
يمكّن أو يعطّل الاتساق التسلسلي لاستعلامات SELECT. ويتطلب ذلك تعطيل insert_quorum_parallel (وهو مُمكَّن افتراضيًا).
القيم الممكنة:
- 0 — معطّل.
- 1 — مُمكَّن.
الاستخدام
عند تمكين الاتساق التسلسلي، لا يسمح ClickHouse للعميل بتنفيذ استعلام SELECT إلا على النسخ المتماثلة التي تحتوي على بيانات جميع استعلامات INSERT السابقة المُنفَّذة باستخدام insert_quorum. وإذا أشار العميل إلى نسخة متماثلة غير مكتملة، فسينشئ ClickHouse استثناءً. ولن يتضمن استعلام SELECT البيانات التي لم تُكتب بعد إلى نصاب النسخ المتماثلة.
عندما يكون insert_quorum_parallel مُمكَّنًا (وهو الإعداد الافتراضي)، فإن select_sequential_consistency لا يعمل. ويعود ذلك إلى أن استعلامات INSERT المتوازية قد تُكتب إلى مجموعات مختلفة من النسخ المتماثلة ضمن النصاب، لذلك لا يوجد ما يضمن أن نسخة متماثلة واحدة قد استلمت جميع عمليات الكتابة.
انظر أيضًا:
session_timezone
يضبط المنطقة الزمنية الضمنية للجلسة الحالية أو للاستعلام الحالي. المنطقة الزمنية الضمنية هي المنطقة الزمنية المُطبَّقة على القيم من النوع DateTime/DateTime64 التي لا تكون لها منطقة زمنية محددة صراحةً. يتقدّم هذا الإعداد على المنطقة الزمنية الضمنية المضبوطة عمومًا (على مستوى الخادم). تعني القيمة '' (سلسلة فارغة) أن المنطقة الزمنية الضمنية للجلسة الحالية أو للاستعلام الحالي تساوي المنطقة الزمنية للخادم.
يمكنك استخدام الدالتين timeZone() وserverTimeZone() للحصول على المنطقة الزمنية للجلسة والمنطقة الزمنية للخادم.
القيم الممكنة:
- أي اسم منطقة زمنية من
system.time_zones، مثلEurope/BerlinأوUTCأوZulu
أمثلة:
SELECT timeZone(), serverTimeZone() FORMAT CSV
"Europe/Berlin","Europe/Berlin"SELECT timeZone(), serverTimeZone() SETTINGS session_timezone = 'Asia/Novosibirsk' FORMAT CSV
"Asia/Novosibirsk","Europe/Berlin"عيّن المنطقة الزمنية للجلسة 'America/Denver' لقيمة DateTime الداخلية من دون تحديد المنطقة الزمنية صراحةً:
SELECT toDateTime64(toDateTime64('1999-12-12 23:23:23.123', 3), 3, 'Europe/Zurich') SETTINGS session_timezone = 'America/Denver' FORMAT TSV
1999-12-13 07:23:23.123CREATE TABLE test_tz (`d` DateTime('UTC')) ENGINE = Memory AS SELECT toDateTime('2000-01-01 00:00:00', 'UTC');
SELECT *, timeZone() FROM test_tz WHERE d = toDateTime('2000-01-01 00:00:00') SETTINGS session_timezone = 'Asia/Novosibirsk'
0 rows in set.
SELECT *, timeZone() FROM test_tz WHERE d = '2000-01-01 00:00:00' SETTINGS session_timezone = 'Asia/Novosibirsk'
┌يحدث هذا بسبب اختلاف مسارات التحليل:
- إن
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
سجل الإصدارات
| الإصدار | القيمة الافتراضية | التعليق |
|---|---|---|
| 24.12 | 0 | عند التمكين، يتيح لك هذا استخدام الدالة المعرّفة من قبل المستخدم نفسها عدة مرات مع عدة أعمدة مُجسَّدة في الجدول نفسه. |
لا تُستخدم الأسماء المستعارة الزائدة (ولا يُستعاض بها) في الدوال المعرّفة من قبل المستخدم، وذلك لتبسيط استخدامها.
القيم الممكنة:
- 1 — يتم تجاوز الأسماء المستعارة (الاستعاضة عنها) في UDFs.
- 0 — لا يتم تجاوز الأسماء المستعارة (الاستعاضة عنها) في UDFs.
مثال
الفرق بين حالتي التمكين والتعطيل:
الاستعلام:
SET skip_redundant_aliases_in_udf = 0;
CREATE FUNCTION IF NOT EXISTS test_03274 AS ( x ) -> ((x + 1 as y, y + 2));
EXPLAIN SYNTAX SELECT test_03274(4 + 2);النتيجة:
SELECT ((4 + 2) + 1 AS y, y + 2)الاستعلام:
SET skip_redundant_aliases_in_udf = 1;
CREATE FUNCTION IF NOT EXISTS test_03274 AS ( x ) -> ((x + 1 as y, y + 2));
EXPLAIN SYNTAX SELECT test_03274(4 + 2);النتيجة:
SELECT ((4 + 2) + 1, ((4 + 2) + 1) + 2)sleep_after_receiving_query_ms
مدة الانتظار بعد استلام الاستعلام في TCPHandler
snappy_mode
سجل الإصدارات
| الإصدار | القيمة الافتراضية | التعليق |
|---|---|---|
| 26.7 | basic | إعداد جديد للتحكم في تنسيق wire المستخدم لضغط snappy في عمليات إدخال/إخراج الملفات العامة وعمليات إدخال/إخراج URL. تحافظ القيمة الافتراضية `basic` على التوافق مع قراءات تنسيق كتل Hadoop snappy المتوافقة مع الإصدارات السابقة؛ بينما يستخدم HTTP `Content-Encoding: snappy` دائمًا تنسيق framing بغضّ النظر عن هذا الإعداد. |
يتحكم هذا الإعداد في تنسيق wire المستخدم لضغط snappy لمسارات إدخال/إخراج الملفات العامة مثل file وurl. ويستخدم HTTP Content-Encoding: snappy دائمًا تنسيق framing ويتجاهل هذا الإعداد.
لاحظ أن تنسيق كتل snappy الخام الناتج عن استدعاء واحد لـ snappy::Compress (على سبيل المثال، حمولات بروتوكول Prometheus البعيد التي يتعامل معها SnappyBasicReadBuffer) هو تنسيق wire منفصل وخاص بالبروتوكول، ولا يتحكم فيه هذا الإعداد.
القيم الممكنة:
basic— تنسيق كتل Hadoop snappy. متوافق مع الملفات التي يقرأها Hadoop ويكتبها. يدعم القراءة والكتابة.framed— تنسيق framing لـ Snappy، وهو تنسيق البث القياسي الذي تحدده Google. يدعم القراءة والكتابة.
sort
سجل الإصدارات
| الإصدار | القيمة الافتراضية | التعليق |
|---|---|---|
| 26.8 | إعداد جديد لإضافة عبارة ORDER BY بسيطة حول استعلام. |
يضيف عبارة 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
سجل الإصدارات
| الإصدار | القيمة الافتراضية | التعليق |
|---|---|---|
| 26.8 | 10000 | إعداد جديد للحد من تكلفة تقدير انتقائية `IN` عند استخدام مجموعة كبيرة: فوق هذا الحد، يستخدم المقدِّر حجم المجموعة ونطاقها الحدي بدلًا من النطاقات الدقيقة. قبل الإصدار 26.8، لم يكن التقدير مقيّدًا، لذا كانت القيمة السابقة 0 (بلا حد)، ويؤدي استخدام `compatibility` مع إصدار أقدم إلى استعادة النطاقات الدقيقة للمجموعات مهما كان حجمها. |
الحد الأقصى لحجم المجموعة في الطرف الأيمن من عامل التشغيل IN الذي يمكن لمقدِّر الانتقائية عنده اشتقاق النطاقات الدقيقة التي تغطيها المجموعة. يتطلب اشتقاق هذه النطاقات Field لكل عنصر، وفرزًا، ومسبار إحصاءات واحدًا لكل عنصر، وهي تكلفة تهيمن على تخطيط الاستعلام عند استخدام مجموعة كبيرة. فوق هذا الحد، يستمد المقدِّر الانتقائية من حجم المجموعة ونطاقها الحدي بدلًا من ذلك، وذلك بتمرير خطي واحد على المجموعة دون فرز أو مسابير إحصاءات لكل عنصر. يشير الصفر إلى عدم وجود حد.
stop_refreshable_materialized_views_on_startup
عند بدء تشغيل الخادم، يمنع جدولة طرق العرض المادية القابلة للتحديث، كما لو تم استخدام SYSTEM STOP VIEWS. ويمكنك تشغيلها يدويًا بعد ذلك باستخدام SYSTEM START VIEWS أو SYSTEM START VIEW <name>. وينطبق ذلك أيضًا على طرق العرض المنشأة حديثًا. ولا يؤثر هذا في طرق العرض المادية غير القابلة للتحديث.
tcp_keep_alive_timeout
الوقت بالثواني الذي يجب أن يبقى فيه الاتصال خاملاً قبل أن يبدأ TCP في إرسال مجسّات keepalive
temporary_data_in_cache_reserve_space_wait_lock_timeout_milliseconds
سجل الإصدارات
| الإصدار | القيمة الافتراضية | التعليق |
|---|---|---|
| 24.4 | 600000 | مدة الانتظار لقفل ذاكرة التخزين المؤقت لنظام الملفات عند حجز مساحة للبيانات المؤقتة |
مدة الانتظار لقفل ذاكرة التخزين المؤقت لنظام الملفات عند حجز مساحة للبيانات المؤقتة
throw_if_no_data_to_insert
يسمح بعمليات INSERT الفارغة أو يمنعها، وهو مفعّل افتراضيًا (ويؤدي إلى ظهور خطأ عند تنفيذ عملية insert فارغة). لا ينطبق هذا إلا على عمليات INSERT التي تستخدم clickhouse-client أو واجهة gRPC.
time_series_prefer_recent_samples_table
سجل الإصدارات
| الإصدار | القيمة الافتراضية | التعليق |
|---|---|---|
| 26.8 | 1 | إعداد جديد للقراءة من جدول العينات الحديثة لجدول TimeSeries عندما يقع النطاق الزمني المطلوب ضمن نافذة TTL الخاصة به. |
اقرأ من جدول العينات الحديثة لجدول 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:
┌──idx─┬─────i─┐
│ 1 │ 1 │
│ 2 │ NULL │
│ 3 │ 3 │
└──────┴───────┘الاستعلام:
SELECT idx, i FROM null_in WHERE i IN (1, NULL) SETTINGS transform_null_in = 0;النتيجة:
┌──idx─┬────i─┐
│ 1 │ 1 │
└──────┴──────┘الاستعلام:
SELECT idx, i FROM null_in WHERE i IN (1, NULL) SETTINGS transform_null_in = 1;النتيجة:
┌──idx─┬─────i─┐
│ 1 │ 1 │
│ 2 │ NULL │
└──────┴───────┘انظر أيضًا
traverse_shadow_remote_data_paths
سجل الإصدارات
| الإصدار | القيمة الافتراضية | التعليق |
|---|---|---|
| 24.3 | 0 | اجتز دليل الظل عند تنفيذ استعلام على system.remote_data_paths. |
اجتز البيانات المجمّدة (دليل الظل) بالإضافة إلى بيانات الجدول الفعلية عند تنفيذ استعلام على system.remote_data_paths
union_default_mode
يحدد وضعًا لدمج نتائج استعلام SELECT. لا يُستخدم هذا الإعداد إلا مع UNION عند عدم تحديد UNION ALL أو UNION DISTINCT صراحةً.
القيم المحتملة:
'DISTINCT'— يُخرج ClickHouse الصفوف الناتجة عن دمج الاستعلامات بعد إزالة الصفوف المكررة.'ALL'— يُخرج ClickHouse جميع الصفوف الناتجة عن دمج الاستعلامات، بما في ذلك الصفوف المكررة.''— يُنشئ ClickHouse استثناءً عند استخدامه معUNION.
راجع الأمثلة في UNION.
unknown_packet_in_send_data
أرسل حزمة غير معروفة بدلًا من حزمة البيانات رقم N
variant_throw_on_type_mismatch
سجل الإصدارات
| الإصدار | القيمة الافتراضية | التعليق |
|---|---|---|
| 26.4 | 1 | إعداد جديد للتحكم في سلوك عدم تطابق الأنواع في التنفيذ الافتراضي لـ Variant |
عند تطبيق دالة على عمود Variant باستخدام التنفيذ الافتراضي، يحدد هذا الإعداد ما يحدث للصفوف التي يكون نوعها الفعلي غير متوافق مع الدالة:
true(الافتراضي) — طرح استثناء.false— إرجاعNULLلهذه الصفوف بدلًا من ذلك.
wait_changes_become_visible_after_commit_mode
انتظر حتى تصبح التغييرات التي تم تثبيتها مرئية فعليًا في أحدث لقطة
عبء العمل
اسم عبء العمل المُستخدَم للوصول إلى الموارد
write_full_path_in_iceberg_metadata
سجل الإصدارات
| الإصدار | القيمة الافتراضية | التعليق |
|---|---|---|
| 25.8 | 0 | إعداد جديد. |
يكتب المسارات الكاملة (بما في ذلك s3://) في ملفات البيانات الوصفية لـ Iceberg.
zstd_window_log_max
يسمح لك بتحديد القيمة القصوى لـ window log في ZSTD (لن يُستخدم مع عائلة MergeTree)