Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

إعدادات الجلسة لـ optimize_*

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

optimize_aggregators_of_group_by_keys

النوع
Bool
القيمة الافتراضية
1

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

optimize_append_index

النوع
Bool
القيمة الافتراضية
0

استخدم القيود لإضافة شرط الفهرس. القيمة الافتراضية هي false.

القيم الممكنة:

  • true, false

optimize_arithmetic_operations_in_aggregate_functions

النوع
Bool
القيمة الافتراضية
1

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

optimize_const_name_size

النوع
Int64
القيمة الافتراضية
256
سجل الإصدارات
الإصدارالقيمة الافتراضيةالتعليق
25.11256الاستعاضة بـ scalar واستخدام hash اسمًا للثوابت الكبيرة (يُقدَّر الحجم بطول الاسم)

الاستعاضة بـ scalar واستخدام hash اسمًا للثوابت الكبيرة (يُقدَّر الحجم بطول الاسم).

القيم الممكنة:

  • عدد صحيح موجب - الحد الأقصى لطول الاسم،
  • 0 — دائمًا،
  • عدد صحيح سالب - أبدًا.

optimize_count_from_files

النوع
Bool
القيمة الافتراضية
1

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

القيم الممكنة:

  • 0 — التحسين معطّل.
  • 1 — التحسين مُمكّن.

optimize_dictget_tuple_element

النوع
Bool
القيمة الافتراضية
1
سجل الإصدارات
الإصدارالقيمة الافتراضيةالتعليق
26.51أعِد كتابة tupleElement(dictGet(..., tuple_of_attrs, ...), N) إلى استدعاء dictGet ذي سمة واحدة.

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

optimize_distinct_in_order

النوع
Bool
القيمة الافتراضية
1

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

optimize_distributed_group_by_sharding_key

النوع
Bool
القيمة الافتراضية
1

يعمل على تحسين استعلامات 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_dry_run_check_part

النوع
Bool
القيمة الافتراضية
1
سجل الإصدارات
الإصدارالقيمة الافتراضيةالتعليق
26.21إعداد جديد

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

optimize_empty_string_comparisons

النوع
Bool
القيمة الافتراضية
1
سجل الإصدارات
الإصدارالقيمة الافتراضيةالتعليق
25.101إعداد جديد.

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

optimize_extract_common_expressions

النوع
Bool
القيمة الافتراضية
1
سجل الإصدارات
الإصدارالقيمة الافتراضيةالتعليق
25.11تحسين تعبيرات WHERE وPREWHERE وON وHAVING وQUALIFY عبر استخراج التعبيرات المشتركة من حالات OR بين تعبيرات AND.
24.120إضافة إعداد لتحسين تعبيرات WHERE وPREWHERE وON وHAVING وQUALIFY عبر استخراج التعبيرات المشتركة من حالات OR بين تعبيرات AND.

يسمح باستخراج التعبيرات المشتركة من حالات 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

النوع
Bool
القيمة الافتراضية
1
سجل الإصدارات
الإصدارالقيمة الافتراضيةالتعليق
24.81الإعداد مُمكَّن افتراضيًا

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

يمكن تحويل هذه الدوال:

القيم الممكنة:

  • 0 — التحسين معطّل.
  • 1 — التحسين مُمكَّن.

optimize_inverse_dictionary_lookup

النوع
Bool
القيمة الافتراضية
1
سجل الإصدارات
الإصدارالقيمة الافتراضيةالتعليق
25.121إعداد جديد

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

optimize_multiif_to_if

النوع
Bool
القيمة الافتراضية
1

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

optimize_normalize_count_variants

النوع
Bool
القيمة الافتراضية
1
سجل الإصدارات
الإصدارالقيمة الافتراضيةالتعليق
21.31إعادة كتابة الدوال التجميعية المكافئة دلاليًا لـ count() إلى count() افتراضيًا

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

optimize_on_insert

النوع
Bool
القيمة الافتراضية
1
سجل الإصدارات
الإصدارالقيمة الافتراضيةالتعليق
21.11تمكين تحسين البيانات عند INSERT افتراضيًا لتحسين تجربة المستخدم

يمكّن أو يعطّل تحويل البيانات قبل الإدراج، كما لو أُجريت عملية الدمج على هذه الكتلة (وفقًا لمحرك الجدول).

القيم الممكنة:

  • 0 — معطّل.
  • 1 — مفعّل.

مثال

الفرق بين حالتي التمكين والتعطيل:

الاستعلام:

SET optimize_on_insert = 1;

CREATE TABLE test1 (`FirstTable` UInt32) ENGINE = ReplacingMergeTree ORDER BY FirstTable;

INSERT INTO test1 SELECT number % 2 FROM numbers(5);

SELECT * FROM test1;

SET optimize_on_insert = 0;

CREATE TABLE test2 (`SecondTable` UInt32) ENGINE = ReplacingMergeTree ORDER BY SecondTable;

INSERT INTO test2 SELECT number % 2 FROM numbers(5);

SELECT * FROM test2;

النتيجة:

┌─FirstTable─┐
│          0 │
│          1 │
└────────────┘

┌─SecondTable─┐
│           0 │
│           0 │
│           0 │
│           1 │
│           1 │
└─────────────┘

لاحظ أن هذا الإعداد يؤثر في سلوك العرض المادي.

optimize_prewhere_after_pushdown

النوع
Bool
القيمة الافتراضية
0
سجل الإصدارات
الإصدارالقيمة الافتراضيةالتعليق
26.60إعداد جديد يفعّل تمريرة ثانية لترقية `PREWHERE` لدمج عوامل التصفية التي أودعتها تحسينات لاحقة فوق خطوة قراءة `MergeTree` (مثل دفع المسند عبر `JOIN` وإعادات كتابة الإسقاط) في سلسلة `PREWHERE` الحالية.

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

optimize_qbit_distance_function_reads

النوع
Bool
القيمة الافتراضية
1
سجل الإصدارات
الإصدارالقيمة الافتراضيةالتعليق
25.101إعداد جديد

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

optimize_read_in_order

النوع
Bool
القيمة الافتراضية
1

يُفعِّل تحسين ORDER BY في استعلامات SELECT عند قراءة البيانات من جداول MergeTree.

القيم الممكنة:

  • 0 — يكون تحسين ORDER BY معطّلًا.
  • 1 — يكون تحسين ORDER BY مفعّلًا.

انظر أيضًا

optimize_respect_aliases

النوع
Bool
القيمة الافتراضية
1

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

optimize_sorting_by_input_stream_properties

النوع
Bool
القيمة الافتراضية
1

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

optimize_substitute_columns

النوع
Bool
القيمة الافتراضية
0

استخدم القيود في استبدال الأعمدة. القيمة الافتراضية هي false.

القيم الممكنة:

  • true, false

optimize_syntax_fuse_functions

النوع
Bool
القيمة الافتراضية
1
سجل الإصدارات
الإصدارالقيمة الافتراضيةالتعليق
26.31هذا التحسين جاهز للإنتاج

يتيح دمج الدوال التجميعية ذات الوسيطة نفسها. ويعيد كتابة الاستعلام الذي يتضمن دالتين تجميعيّتين على الأقل من sum أو count أو avg ذات الوسيطة نفسها إلى sumCount.

القيم الممكنة:

  • 0 — لا تُدمَج الدوال ذات الوسيطة نفسها.
  • 1 — تُدمَج الدوال ذات الوسيطة نفسها.

مثال

الاستعلام:

CREATE TABLE fuse_tbl(a Int8, b Int8) Engine = Log;
SET optimize_syntax_fuse_functions = 1;
EXPLAIN SYNTAX run_query_tree_passes = 1 SELECT sum(a), sum(b), count(b), avg(b) from fuse_tbl FORMAT TSVRaw;

النتيجة:

SELECT
    sum(__table1.a) AS `sum(a)`,
    tupleElement(sumCount(__table1.b), 1) AS `sum(b)`,
    tupleElement(sumCount(__table1.b), 2) AS `count(b)`,
    divide(tupleElement(sumCount(__table1.b), 1), toFloat64(tupleElement(sumCount(__table1.b), 2))) AS `avg(b)`
FROM default.fuse_tbl AS __table1

optimize_throw_if_noop

النوع
Bool
القيمة الافتراضية
0

يؤدي إلى تمكين أو تعطيل رفع استثناء إذا لم يُجرِ الاستعلام OPTIMIZE عملية دمج.

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

القيم الممكنة:

  • 1 — تم تمكين رفع استثناء.
  • 0 — تم تعطيل رفع استثناء.

optimize_time_filter_with_preimage

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

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

optimize_truncate_order_by_after_group_by_keys

النوع
Bool
القيمة الافتراضية
1
سجل الإصدارات
الإصدارالقيمة الافتراضيةالتعليق
26.41احذف عناصر ORDER BY الختامية بعد أن تغطي بادئة ORDER BY جميع مفاتيح GROUP BY.

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

optimize_uniq_to_count

النوع
Bool
القيمة الافتراضية
1

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

optimize_using_constraints

النوع
Bool
القيمة الافتراضية
0

استخدم القيود لتحسين الاستعلامات. القيمة الافتراضية هي false.

القيم الممكنة:

  • true, false
Navigation