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

optimize_aggregators_of_group_by_keys

يزيل دوال التجميع min/max/any/anyLast لمفاتيح GROUP BY في قسم SELECT

optimize_append_index

استخدم القيود لإضافة شرط الفهرس. القيمة الافتراضية هي false. القيم الممكنة:
  • true, false

optimize_arithmetic_operations_in_aggregate_functions

نقل العمليات الحسابية خارج دوال التجميع

optimize_const_name_size

الاستعاضة بـ scalar واستخدام hash اسمًا للثوابت الكبيرة (يُقدَّر الحجم بطول الاسم). القيم الممكنة:
  • عدد صحيح موجب - الحد الأقصى لطول الاسم،
  • 0 — دائمًا،
  • عدد صحيح سالب - أبدًا.

optimize_count_from_files

يُمكّن أو يعطّل تحسين احتساب عدد الصفوف من الملفات بتنسيقات إدخال مختلفة. وينطبق ذلك على دوال/محركات الجداول file/s3/url/hdfs/azureBlobStorage. القيم الممكنة:
  • 0 — التحسين معطّل.
  • 1 — التحسين مُمكّن.

optimize_dictget_tuple_element

أعِد كتابة tupleElement(dictGet('dict', ('a', 'b', 'c'), key), 2) إلى dictGet('dict', 'b', key) لتجنّب جلب سمات القاموس غير الضرورية. يدعم الوصول الموضعي (.1, .2, …) والمُسمّى (.b)، ويَنطبق أيضًا على dictGetOrDefault عندما تكون وسيطة القيمة الافتراضية Tuple ثابتة أو tuple(...) مكوّنة من ثوابت.

optimize_distinct_in_order

فعِّل تحسين DISTINCT إذا كانت بعض الأعمدة فيه تُشكّل بادئة للفرز. على سبيل المثال، بادئة مفتاح الفرز في MergeTree أو في عبارة ORDER BY

optimize_distributed_group_by_sharding_key

يعمل على تحسين استعلامات GROUP BY sharding_key عبر تجنّب تنفيذ تجميع مكلف على الخادم البادئ، مما يقلّل استخدام الذاكرة للاستعلام على هذا الخادم. الأنواع التالية من الاستعلامات مدعومة (بما في ذلك جميع التركيبات بينها):
  • SELECT DISTINCT [..., ]sharding_key[, ...] FROM dist
  • SELECT ... FROM dist GROUP BY sharding_key[, ...]
  • SELECT ... FROM dist GROUP BY sharding_key[, ...] ORDER BY x
  • SELECT ... FROM dist GROUP BY sharding_key[, ...] LIMIT 1
  • SELECT ... FROM dist GROUP BY sharding_key[, ...] LIMIT 1 BY x
الأنواع التالية من الاستعلامات غير مدعومة (وقد يُضاف دعم بعضها لاحقًا):
  • SELECT ... GROUP BY sharding_key[, ...] WITH TOTALS
  • SELECT ... GROUP BY sharding_key[, ...] WITH ROLLUP
  • SELECT ... GROUP BY sharding_key[, ...] WITH CUBE
  • SELECT ... GROUP BY sharding_key[, ...] SETTINGS extremes=1
القيم الممكنة:
  • 0 — معطّل.
  • 1 — مفعّل.
انظر أيضًا:
في الوقت الحالي، يتطلب هذا الخيار optimize_skip_unused_shards (والسبب هو أنه قد يُفعَّل افتراضيًا في المستقبل، ولن يعمل بشكل صحيح إلا إذا أُدرجت البيانات عبر جدول Distributed، أي إذا كانت البيانات موزعة وفقًا لـ sharding_key).

optimize_dry_run_check_part

عند التفعيل، يتحقق OPTIMIZE ... DRY RUN من الجزء المدمج الناتج باستخدام checkDataPart. وإذا أخفق التحقق، يُطلَق استثناء.

optimize_empty_string_comparisons

حوِّل تعبيرات مثل col = '' أو '' = col إلى empty(col)، وcol != '' أو '' != col إلى notEmpty(col)، وذلك فقط عندما يكون col من النوع String أو FixedString.

optimize_extract_common_expressions

يسمح باستخراج التعبيرات المشتركة من حالات OR في تعبيرات WHERE وPREWHERE وON وHAVING وQUALIFY. على سبيل المثال، يمكن إعادة كتابة تعبير منطقي مثل (A AND B) OR (A AND C) إلى A AND (B OR C)، مما قد يساعد على الاستفادة من:
  • الفهارس في تعبيرات التصفية البسيطة
  • تحسين تحويل CROSS JOIN إلى INNER JOIN

optimize_functions_to_subcolumns

يُمكّن هذا الإعداد التحسين أو يعطّله عبر تحويل بعض الدوال بحيث تقرأ الأعمدة الفرعية، مما يقلل كمية البيانات المطلوب قراءتها. يمكن تحويل هذه الدوال: القيم الممكنة:
  • 0 — التحسين معطّل.
  • 1 — التحسين مُمكَّن.

optimize_inverse_dictionary_lookup

تجنّب تكرار البحث العكسي في القاموس من خلال إجراء عمليات بحث أسرع ضمن مجموعة محسوبة مسبقًا من قيم المفاتيح المحتملة.

optimize_multiif_to_if

استبدل ‘multiIf’ بـ ‘if’ عندما يحتوي على شرط واحد فقط.

optimize_normalize_count_variants

إعادة كتابة الدوال التجميعية المكافئة دلاليًا لـ count() إلى count().

optimize_on_insert

يمكّن أو يعطّل تحويل البيانات قبل الإدراج، كما لو أُجريت عملية الدمج على هذه الكتلة (وفقًا لمحرك الجدول). القيم الممكنة:
  • 0 — معطّل.
  • 1 — مفعّل.
مثال الفرق بين حالتي التمكين والتعطيل: الاستعلام:
النتيجة:
لاحظ أن هذا الإعداد يؤثر في سلوك العرض المادي.

optimize_prewhere_after_pushdown

شغّل تمريرة ثانية لترقية PREWHERE بعد أن تكون تحسينات لاحقة في خطة الاستعلام قد أضافت عوامل تصفية أخرى فوق خطوة قراءة MergeTree (على سبيل المثال، دفع المسند عبر JOIN وإعادات كتابة الإسقاط). وعند وجود PREWHERE حالي مسبقًا، يُدمَج عامل التصفية الجديد فيه باستخدام AND بدلًا من أن يبقى كخطوة تصفية منفصلة.

optimize_qbit_distance_function_reads

يستبدل دوال المسافة على نوع البيانات QBit بما يكافئها من الدوال التي لا تقرأ من التخزين إلا الأعمدة اللازمة للحساب.

optimize_read_in_order

يُفعِّل تحسين ORDER BY في استعلامات SELECT عند قراءة البيانات من جداول MergeTree. القيم الممكنة:
  • 0 — يكون تحسين ORDER BY معطّلًا.
  • 1 — يكون تحسين ORDER BY مفعّلًا.
انظر أيضًا

optimize_respect_aliases

إذا ضُبط هذا الإعداد على true، فستُراعى الأسماء المستعارة في WHERE/GROUP BY/ORDER BY، مما يساعد في استبعاد الأقسام/الفهارس الثانوية/optimize_aggregation_in_order/optimize_read_in_order/optimize_trivial_count

optimize_sorting_by_input_stream_properties

حسِّن الفرز استنادًا إلى خصائص فرز تدفق الإدخال

optimize_substitute_columns

استخدم القيود في استبدال الأعمدة. القيمة الافتراضية هي false. القيم الممكنة:
  • true, false

optimize_syntax_fuse_functions

يتيح دمج الدوال التجميعية ذات الوسيطة نفسها. ويعيد كتابة الاستعلام الذي يتضمن دالتين تجميعيّتين على الأقل من sum أو count أو avg ذات الوسيطة نفسها إلى sumCount. القيم الممكنة:
  • 0 — لا تُدمَج الدوال ذات الوسيطة نفسها.
  • 1 — تُدمَج الدوال ذات الوسيطة نفسها.
مثال الاستعلام:
النتيجة:

optimize_throw_if_noop

يؤدي إلى تمكين أو تعطيل رفع استثناء إذا لم يُجرِ الاستعلام OPTIMIZE عملية دمج. بشكل افتراضي، يُرجِع OPTIMIZE بنجاح حتى إذا لم ينفّذ أي شيء. يتيح لك هذا الإعداد التمييز بين هذه الحالات ومعرفة السبب من خلال رسالة الاستثناء. القيم الممكنة:
  • 1 — تم تمكين رفع استثناء.
  • 0 — تم تعطيل رفع استثناء.

optimize_time_filter_with_preimage

يُحسِّن شروط Date وDateTime عبر تحويل الدوال إلى مقارنات مكافئة من دون تحويلات (على سبيل المثال: toYear(col) = 2023 -> col >= '2023-01-01' AND col <= '2023-12-31')

optimize_truncate_order_by_after_group_by_keys

احذف عناصر ORDER BY الختامية بعد أن تغطي بادئة ORDER BY جميع مفاتيح GROUP BY.

optimize_uniq_to_count

أعِد كتابة uniq وأشكاله (باستثناء uniqUpTo) إلى count إذا تضمّن الاستعلام الفرعي DISTINCT أو بند GROUP BY.

optimize_using_constraints

استخدم القيود لتحسين الاستعلامات. القيمة الافتراضية هي false. القيم الممكنة:
  • true, false
آخر تعديل في ٢٣ يوليو ٢٠٢٦