optimize_trivial_approximate_count_query
- 0 — التحسين معطّل.
- 1 — التحسين مفعّل.
optimize_trivial_count_query
SELECT count() FROM table باستخدام البيانات الوصفية من MergeTree. إذا كنت بحاجة إلى استخدام أمان على مستوى الصفوف، فعطّل هذا الإعداد.
القيم الممكنة:
- 0 — التحسين معطّل.
- 1 — التحسين مفعّل.
optimize_trivial_count_with_sparsity_filter
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
optimize_trivial_view_pushdown_to_distributed
SELECT فيها إلا على مراجع أعمدة أو *
أو تعبيرات (من دون دوال النوافذ أو الاستعلامات الفرعية ذات القيمة المفردة)، ولا تتضمن تجميعًا أو تجميعًا حسب أو ترتيبًا أو عمليات ربط. يتيح ذلك للجزء تطبيق عوامل تصفية المشاهدة وتعبيراتها محليًا، مما يقلل كمية البيانات المنقولة عبر الشبكة.
القيم الممكنة:
- 0 — التحسين معطّل؛ تُنفَّذ المشاهدات المبنية على جداول
Distributedدائمًا على المنسّق. - 1 — التحسين مفعّل.