min_absolute_delay_to_close
الحد الأدنى للتأخير المطلق قبل الإغلاق، والتوقف عن خدمة الطلبات، وعدم إرجاع Ok أثناء التحقق من status.min_columns_to_activate_adaptive_write_buffer
يسمح هذا بتقليل استهلاك الذاكرة في الجداول التي تحتوي على عدد كبير من الأعمدة، وذلك باستخدام مخازن الكتابة المؤقتة التكيفية. تُقارن هذه القيمة بعدد التدفقات التي يكتبها الجزء الواسع، والذي قد يتجاوز بدرجة كبيرة عدد أعمدته: إذ إنMap الذي يحتوي على العديد من الحاويات، أو Array أو Tuple المتداخل بعمق، يكتب العديد من التدفقات لعمود واحد، ويُخصَّص مخزن كتابة مؤقت واحد لكل تدفق.
القيم الممكنة:
- 0 - معطّل
- 1 - ممكّن دائمًا
min_compress_block_size
الحد الأدنى لحجم كتل بيانات غير مضغوطة المطلوبة لتطبيق الضغط عند كتابة العلامة التالية. يمكنك أيضًا تحديد هذا الإعداد ضمن الإعدادات العامة (راجع إعداد min_compress_block_size). تتجاوز القيمة المحددة عند إنشاء الجدول القيمة العامة لهذا الإعداد.min_index_granularity_bytes
الحد الأدنى المسموح به لحجم حبيبات البيانات، بالبايت. لتوفير وسيلة حماية من إنشاء الجداول عن طريق الخطأ مع قيمة منخفضة جدًا لـindex_granularity_bytes.
min_marks_to_honor_max_concurrent_queries
الحد الأدنى لعدد العلامات التي يجب أن يقرأها الاستعلام حتى يُطبَّق الإعداد max_concurrent_queries.ستظل الاستعلامات مقيَّدة بإعدادات
max_concurrent_queries الأخرى.- عدد صحيح موجب.
0— معطّل (لا يُطبَّق حدmax_concurrent_queriesعلى أي استعلام).
min_merge_bytes_to_use_direct_io
الحد الأدنى لوحدة تخزين البيانات لعملية الدمج المطلوبة لاستخدام واجهة I/O المباشر للوصول إلى قرص التخزين. عند دمج أجزاء البيانات، يحسب ClickHouse إجمالي حجم التخزين لجميع البيانات المطلوب دمجها. إذا تجاوز الحجمmin_merge_bytes_to_use_direct_io بايت، يقرأ ClickHouse البيانات
ويكتبها إلى قرص التخزين باستخدام واجهة I/O المباشر (الخيار O_DIRECT).
إذا كانت قيمة min_merge_bytes_to_use_direct_io = 0، فسيتم تعطيل I/O المباشر.
min_partition_age_to_force_merge_seconds
يدمج الأجزاء داخل القسم إذا كان كل جزء فيه أقدم من هذه القيمة، أي أن القسم لم يعد يستقبل عمليات إدراج. وعلى خلافmin_age_to_force_merge_seconds مع min_age_to_force_merge_on_partition_only،
لا يلزم أن يتّسع القسم في عملية دمج واحدة: إذ تظل كل عملية دمج ملتزمة بقيمة
max_bytes_to_merge_at_max_space_in_pool. ويعمل مع محدّدي الدمج Simple و
StochasticSimple.
والعمر الذي تجري مقارنته هنا هو عمر أحدث جزء في القسم
(now - modification_time، مأخوذًا كأدنى قيمة عبر أجزائه)، ولذلك لا تُفعَّل القاعدة إلا
بعد أن يتجاوز عمر كل جزء هذه القيمة. وأي جزء جديد يعيد ضبطها: عملية إدراج، أو
عملية تعديل (mutation)، وكذلك كل عملية دمج يسندها هذا الإعداد نفسه، لأن الجزء
المدموج يُعدّ جديدًا. وبناءً على ذلك يتوقف الفرض فور اكتمال عملية دمج مفروضة، ولا يُفعَّل
مجددًا إلا بعد انقضاء هذه القيمة مرة أخرى دون ظهور أجزاء جديدة، بحيث يُضغط القسم
الذي يحتاج إلى عدة عمليات دمج على جولات متعاقبة تفصل بينها هذه الفترة الزمنية، لا
في تمريرة واحدة متصلة.
ويعمل الفرض تمامًا مثل min_age_to_force_merge_seconds: فهو يتجاوز شرط نسبة
الحجم الذي يمنع عادةً إسناد عملية دمج غير متوازنة، كما يتجاوز الحد الأدنى
min_parts_to_merge_at_once، بحيث يمكن لعملية دمج مفروضة أن تشمل عددًا من الأجزاء
أقل مما يتطلبه ذلك الحد. ولا تُعطَّل أي آلية استدلالية أخرى: إذ تظل
merge_selector_window_size تحدّ من الأجزاء التي تُفحص، وتظل
merge_selector_enable_heuristic_to_remove_small_parts_at_right
تزيل الجزء الصغير الأخير من نطاق مختار يضم ثلاثة أجزاء أو أكثر. وأيٌّ من هاتين
الآليتين يحتاج عبء العمل إلى تعطيلها فلا بد من تعطيلها صراحةً عبر إعدادها الخاص.
وفي ظل محدّدي الدمج Simple و StochasticSimple، لا يمكن الجمع بينه وبين
min_age_to_force_merge_seconds مقترنًا بـ
min_age_to_force_merge_on_partition_only. فذلك الزوج يدمج القسم بأكمله دفعة
واحدة، ومثل هذه العملية وحدها هي التي تُوسم بأنها نهائية، وهو ما يتيح لجدول
ReplacingMergeTree تنفيذ CLEANUP؛ أما فرض عمليات الدمج المعتادة استنادًا إلى عمر
القسم فسيستبق ذلك ويمنعه. استخدم الزوج للأقسام التي تتّسع في عملية دمج واحدة،
واستخدم هذا الإعداد للأقسام التي لا تتّسع. أما المحدّدات الأخرى فتتجاهل هذا الإعداد،
ولذلك يُقبل الجمع معها.
القيم المحتملة:
- عدد صحيح موجب.
min_parts_to_merge_at_once
الحد الأدنى لعدد أجزاء البيانات التي يمكن لمحدِّد الدمج اختيارها لدمجها دفعةً واحدة (إعداد مخصّص لمستوى الخبراء، لا تغيّره إذا لم تكن تفهم ما الذي يفعله). 0 - معطّل. يعمل مع محددات الدمج من النوعين Simple وStochasticSimple.min_replicated_logs_to_keep
احتفظ بهذا العدد التقريبي من آخر السجلات في سجل ZooKeeper، حتى إن كانت متقادمة. لا يؤثر ذلك في عمل الجداول: إذ يُستخدم فقط لتشخيص سجل ZooKeeper قبل تنظيفه. القيم الممكنة:- أي عدد صحيح موجب.
min_unreserved_disk_space_for_merge
يُبقي هذا الإعداد القدر المحدد من مساحة القرص غير المحجوزة (بالبايت) بعيدًا عن متناول عمليات الدمج في الخلفية، حتى لا تستأثر بالمساحة على حساب عمليات الإدراج. يُطرح هذا القدر من المساحة الحرة، ثم يُحسب الحد الأقصى للحجم الإجمالي لأجزاء البيانات المصدرية لعملية الدمج من المساحة المتبقية مع تطبيق معامل أمان إضافي، بحيث تظل أكبر عملية دمج مسموح بها أدنى من ذلك بفارق كبير. ويتقلص هذا الحد كلما امتلأ القرص، ويبلغ الصفر عندما تنخفض المساحة الحرة إلى هذا القدر، وعندئذٍ لا تُختار أي عملية دمج في الخلفية على الإطلاق. (القيمة 0 تعني أن الإعداد معطَّل) بخلافkeep_free_space_bytes، تظل المساحة المحمية متاحة لـ ClickHouse
نفسه، إذ تُستبعد من جدولة عمليات الدمج فحسب. ولا تخضع عمليات التعديل لهذا القيد،
بل يمكنها استهلاك المساحة المحمية، كما لا يكون لهذا الإعداد أي تأثير على
الأقراص ذات المساحة غير المحدودة (مثل التخزين الكائني).
تتجاهل عمليات الدمج التي تُطلق عبر OPTIMIZE مع FINAL أو
مع PARTITION صريح هذا الإعداد. أما عمليات الدمج التي تحذف أجزاء بيانات
منتهية الصلاحية بالكامل، فتُختار متى كان الحد أعلى من الصفر أيًّا كان حجمها،
ولا يُختار أي منها عند الصفر. وتحجز كل عملية دمج 1 MiB على الأقل، لذا
فإن عملية الدمج التي تبدأ وقد تبقّى أقل من 1 MiB فوق المساحة المحمية قد تستهلك ما يصل
إلى 1 MiB منها. كذلك تنفّذ النسخة المتماثلة من ReplicatedMergeTree عمليات الحذف المنتظرة في قائمة الانتظار حتى عندما يكون
حدها الخاص صفرًا، إذا كان TTL الصفوف بدون WHERE هو TTL الوحيد للجدول. أما مع
TTL يتضمن GROUP BY أو WHERE أو TTL على مستوى العمود، فإن عملية الحذف هذه تعيد كتابة الصفوف المتبقية:
إذ يؤجلها ReplicatedMergeTree بمقدار حجم أجزاء بياناتها، في حين لا يفعل MergeTree
ذلك وقد يكتبها في المساحة المحمية.
بمجرد أن يبلغ الحد الصفر، لا يُسند أمر OPTIMIZE العادي أي عملية: فإما أن يكون بلا أثر، أو
يرفع الاستثناء CANNOT_ASSIGN_OPTIMIZE عند ضبط optimize_throw_if_noop = 1. استخدم FINAL
أو PARTITION صريحًا لإجراء الدمج داخل المساحة المحمية. وفي
ReplicatedMergeTree، لا يُسجَّل هذا الإعفاء في إدخال سجل التماثل
إلا إذا كانت قيمة الإعداد غير صفرية على النسخة المتماثلة التي تضعه في قائمة الانتظار، ولذلك فإن أمر
OPTIMIZE الذي وُضع في قائمة الانتظار حين كانت القيمة 0 يظل يُنفَّذ ضمن قيود هامش المساحة الاحتياطية.
لا يُنسخ ALTER TABLE ... MODIFY SETTING إلى النسخ المتماثلة، لذا اضبط القيمة نفسها
على كل نسخة متماثلة: فالنسخة المتماثلة ذات الهامش الاحتياطي الأكبر تعيد تطبيقه على عمليات الدمج المُسندة
من نسخ أخرى، وقد تؤجلها إلى أجل غير مسمى. أبقِ القيمة عند 0 إلى أن تعمل جميع
النسخ المتماثلة بإصدار يدعم هذا الإعداد، إذ لا تستطيع النسخة المتماثلة الأقدم تحليل
إدخالات السجل المكتوبة لعمليات الدمج المُعفاة، فتتوقف عن سحب أي
إدخالات لاحقة للجدول، بما في ذلك الإدخالات الخاصة بعمليات الإدراج العادية.