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

optimize_trivial_approximate_count_query

استخدم قيمة تقديرية لتحسين العدّ البسيط في وحدات التخزين التي تدعم هذا النوع من التقدير، مثل EmbeddedRocksDB. القيم الممكنة:
  • 0 — التحسين معطّل.
    • 1 — التحسين مفعّل.

optimize_trivial_count_query

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

optimize_trivial_count_with_sparsity_filter

يوسّع تحسين optimize_trivial_count_query ليشمل الاستعلامات من الشكل SELECT count() FROM t WHERE col <op> const، حيث تؤدي <op> const إلى تقسيم الصفوف بدقة إلى القيم الافتراضية وغير الافتراضية للعمود col. وعندها يُستمدّ العدد من العدّادات num_defaults / num_rows لكل عمود التي يحتفظ بها MergeTree بالفعل في serialization.json، من دون فحص البيانات. الأنماط المتعرَّف عليها:
  • col = default(col) / col != default(col) لـ Int* / UInt* وString / FixedString وDate / DateTime / DateTime64 وDecimal* وUUID وIPv4 / IPv6.
  • IS NULL / IS NOT NULL على الأعمدة Nullable.
  • empty(col) / notEmpty(col) على أعمدة String.
  • col = true / col != true على أعمدة Bool.
  • col > 0 وcol >= 1 وcol < 1 وcol <= 0 على أعمدة الأعداد الصحيحة غير الموقَّعة.
  • col / NOT col مباشرةً على أعمدة Int* وUInt* وBool (اختبار القيمة المنطقية).
لا تُطبَّق أنماط المساواة على Float* أو Enum* أو Nullable أو LowCardinality أو الأنواع المركبة (Tuple وArray وMap و…) — وبالنسبة إلى هذه الأنواع، يُستمدّ العدد من مسار الفحص العادي. لكي يسري ذلك، يجب أن يكون العدّاد num_defaults لكل part دقيقًا. فعِّل إعداد الجدول في MergeTree compute_exact_num_defaults_for_sparse_columns على الجدول الهدف قبل عمليات insert وmerges. أمّا الـ parts المكتوبة من دونه فتُستبعَد بصمت من إعادة الكتابة هذه، لذا فإن تفعيل optimize_trivial_count_with_sparsity_filter وحده ليس كافيًا. بالنسبة إلى أنماط IS NULL / IS NOT NULL على أعمدة Nullable، يجب أيضًا أن تكون للعمود مدخلة num_defaults في serialization.json، وهذا لا يحدث إلا عندما يكون إعداد الجدول في MergeTree nullable_serialization_version مضبوطًا على allow_sparse وقت insert / merge. مع القيمة الافتراضية basic، لا تحصل أعمدة Nullable على أي مدخلة لكل عمود، لذلك لا يُطبَّق هذا التحسين بصمت. القيم الممكنة:
  • 0 — التحسين معطّل.
    • 1 — التحسين مفعّل.
انظر أيضًا:

optimize_trivial_group_by_limit_query

يؤدي هذا الإعداد إلى تمكين تحسين الاستعلام البسيط SELECT key_expr FROM table GROUP BY key_expr LIMIT n أو تعطيله (من دون دوال تجميع أو دوال نوافذ أو arrayJoin في الإسقاط، ومن دون بنود HAVING/ORDER BY/QUALIFY/LIMIT BY/DISTINCT/window، ومن دون معدِّلات GROUP BY) وذلك عبر تعيين max_rows_to_group_by = n + offset وgroup_by_overflow_mode = 'any'. ويتوقف التجميع بمجرد إنتاج n + offset من المفاتيح المميزة. يُلغى هذا التحسين عندما يكون المستخدم قد عيّن group_by_overflow_mode صراحةً إلى قيمة غير any (للحفاظ على سلوك throw/break الذي حدّده صراحةً)، وكذلك عندما يكون قد عيّن مسبقًا قيمة أكثر تقييدًا لـ max_rows_to_group_by (إذ يصبح التحسين عندئذٍ بلا تأثير). القيم الممكنة:
  • 0 — التحسين معطّل.
  • 1 — التحسين مفعّل.

optimize_trivial_insert_select

تحسين استعلام ‘INSERT INTO table SELECT … FROM TABLES’ البسيط

optimize_trivial_view_pushdown_to_distributed

عند تفعيله، تُدفع الاستعلامات الخارجية بالكامل إلى كل جزء للمشاهدات المبنية على جداول Distributed التي لا تحتوي قائمة SELECT فيها إلا على مراجع أعمدة أو * أو تعبيرات (من دون دوال النوافذ أو الاستعلامات الفرعية ذات القيمة المفردة)، ولا تتضمن تجميعًا أو تجميعًا حسب أو ترتيبًا أو عمليات ربط. يتيح ذلك للجزء تطبيق عوامل تصفية المشاهدة وتعبيراتها محليًا، مما يقلل كمية البيانات المنقولة عبر الشبكة. القيم الممكنة:
  • 0 — التحسين معطّل؛ تُنفَّذ المشاهدات المبنية على جداول Distributed دائمًا على المنسّق.
  • 1 — التحسين مفعّل.
آخر تعديل في ١٨ أغسطس ٢٠٢٦