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 أو تعطيله (من دون دوال تجميع في الإسقاط، ومن دون بنود HAVING/ORDER BY/LIMIT BY/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’ البسيط
آخر تعديل في ٢٤ يوليو ٢٠٢٦