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 ... FROM table GROUP BY key_expr LIMIT n (الخالي من عبارات HAVING/ORDER BY/QUALIFY/LIMIT BY/DISTINCT/النوافذ ومن معدِّلات GROUP BY)، وذلك بقصر التجميع على ما لا يتجاوز n + offset من المفاتيح المميزة. إذا لم يتضمن الإسقاط دوالًا تجميعية، يُطبَّق الحد بضبط 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، أو عند استخدام exact_rows_before_limit (إذ سيؤدي الحد إلى أن يُبلغ rows_before_limit_at_least عن n + offset كحد أقصى). يستبعد الشكل الخاص بالدوال التجميعية استخدامَ كومة top-K الخاصة بـ GROUP BY التي يوفرها enable_group_by_top_k_optimization في الاستعلام نفسه. ولأن الكومة أسرع، لا يُطبَّق القطع إلا حين يتعذر استخدام الكومة: أي عندما تكون معطَّلة، أو عندما يتجاوز n + offset قيمة query_plan_max_limit_for_top_k_optimization، أو عند ضبط max_rows_to_group_by، أو عند تسلسل خطة الاستعلام. القيم الممكنة:
  • 0 — التحسين معطَّل.
  • 1 — التحسين مفعَّل.

optimize_trivial_insert_select

تحسين استعلام ‘INSERT INTO table SELECT … FROM TABLES’ البسيط استخدم هذا الإعداد مع تعيين قيمة صريحة للإعداد max_insert_threads، إذ يقصر هذا التحسين عدد خيوط القراءة في SELECT على max_insert_threads، مما يغيّر عدد الكتل التي ينتجها SELECT.

optimize_trivial_view_pushdown_to_distributed

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