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

max_insert_block_size

الأسماء البديلة: max_insert_block_size_rows الحد الأقصى لحجم الكتل (من حيث عدد الصفوف) التي يجري تكوينها للإدراج في جدول. يتحكم هذا الإعداد في تكوين الكتل في سياقين:
  1. تحليل التنسيق: عندما يُحلِّل الخادم تنسيقات الإدخال المعتمدة على الصفوف (CSV وTSV وJSONEachRow وغيرها) من أي واجهة (HTTP، وclickhouse-client مع بيانات inline، وgRPC، وبروتوكول PostgreSQL wire)، تُخرَج الكتل عندما:
    • يتم بلوغ كلٍّ من min_insert_block_size_rows وmin_insert_block_size_bytes، OR
    • يتم بلوغ أحد max_insert_block_size_rows أو max_insert_block_size_bytes
    ملاحظة: عند استخدام clickhouse-client أو clickhouse-local للقراءة من ملف، يتولى العميل نفسه تحليل البيانات، ويُطبَّق هذا الإعداد على جهة العميل.
  2. عمليات INSERT: أثناء استعلامات INSERT وعندما تتدفق البيانات عبر materialized views، يعتمد سلوك هذا الإعداد على use_strict_insert_block_limits:
    • عند التمكين: تُخرَج الكتل عندما:
      • الحدود الدنيا (AND): يتم بلوغ كلٍّ من min_insert_block_size_rows وmin_insert_block_size_bytes
      • الحدود القصوى (OR): يتم بلوغ أحد max_insert_block_size_rows أو max_insert_block_size_bytes
    • عند التعطيل: تُخرَج الكتل عند بلوغ min_insert_block_size_rows OR min_insert_block_size_bytes. ولا يتم فرض إعدادات max_insert_block_size.
القيم الممكنة:
  • عدد صحيح موجب.

max_insert_block_size_bytes

الحد الأقصى لحجم الكتل (بالبايت) التي تُكوَّن لإدراجها في جدول. يعمل هذا الإعداد مع max_insert_block_size_rows ويتحكم في تكوين الكتل ضمن السياق نفسه. راجع max_insert_block_size_rows للحصول على معلومات تفصيلية حول متى وكيفية تطبيق هذه الإعدادات. القيم الممكنة:
  • عدد صحيح موجب.
  • 0 — لا يشارك الإعداد في تكوين الكتل.

max_insert_delayed_streams_for_parallel_write

الحد الأقصى لعدد التدفقات (الأعمدة) التي يُؤخَّر عندها flush النهائي للجزء. القيمة الافتراضية: تلقائي (100 إذا كانت وحدة التخزين الأساسية تدعم الكتابة المتوازية، مثل S3، ويكون معطّلًا بخلاف ذلك) القيمة الافتراضية في Cloud: 50.

max_insert_threads

الحد الأقصى لعدد الخيوط لتنفيذ استعلام INSERT. ينطبق ذلك على كل من INSERT SELECT وعمليات INSERT العادية التي تُرسل بياناتها من clickhouse-client أو عبر واجهة HTTP. ويُنفَّذ جانب الكتابة في المسار (دمج الكتل وكتابتها في الجدول الوجهة) بالتوازي باستخدام ما يصل إلى هذا العدد من الخيوط. القيم الممكنة:
  • 0 — تلقائي. يستخدم عدد أنوية CPU المتاحة للخادم (وهي نفس القيمة التلقائية لـ max_threads)، ويُخفَّض عند وجود ضغط على الذاكرة بواسطة max_insert_threads_min_free_memory_per_thread.
  • 1 — يُنفَّذ INSERT في خيط واحد (من دون تنفيذ متوازٍ). استخدم هذا للحفاظ على ترتيب الإدراج في INSERT ... SELECT.
  • عدد صحيح موجب أكبر من 1 — تنفيذ متوازٍ بعدد الخيوط المحدد.
قبل الإصدار 26.8، كانت القيمة الافتراضية هي 1 (من دون تنفيذ متوازٍ). ومنذ الإصدار 26.8، تُحوَّل القيمة الافتراضية (0) إلى عدد أنوية CPU، لذا يُنفَّذ INSERT بالتوازي افتراضيًا. اضبط max_insert_threads على 1 (أو استخدم إعداد compatibility) لاستعادة السلوك السابق. القيمة الافتراضية في Cloud:
  • 1 للعُقد ذات ذاكرة 8 GiB
  • 2 للعُقد ذات ذاكرة 16 GiB
  • 4 للعُقد الأكبر
لا يسري التنفيذ المتوازي لـ INSERT SELECT إلا إذا كان جزء SELECT يُنفَّذ بالتوازي؛ راجع إعداد max_threads. بالنسبة إلى INSERT العادي، تُقرأ بيانات الإدخال وتُحلَّل كتدفق واحد، ثم يُعاد تحجيم المسار إلى هذا العدد من التدفقات للكتابة. لا ينطبق التوازي في جانب الكتابة إلا على عمليات INSERT العادية المتزامنة: إذ تُخزَّن عمليات الإدراج غير المتزامنة (async_insert = 1) في قائمة انتظار وتُفرَّغ في الخلفية، لذا لا تتأثر بهذا الإعداد وتظل دائمًا ذات تدفق واحد. لا يُنفَّذ جانب الكتابة بالتوازي إلا عندما يكون ذلك آمنًا؛ وإلا فإنه يبقى ذا تدفق واحد ولا يكون لهذا الإعداد تأثير فيه. وبالأخص، تبقى الكتابة ذات تدفق واحد عند تمكين use_strict_insert_block_limits، أو عندما يلغي جدول الوجهة (أو جدول يعيد التوجيه إليه) تكرار الكتل المُدرجة ويكون إلغاء تكرار الإدراج مُمكّنًا للاستعلام (راجع deduplicate_insert)، أو عندما تكون للوجهة materialized views تابعة — بما في ذلك عروض جدول تعيد الوجهة التوجيه إليه، مثلًا خلف Alias — (ما لم يكن parallel_view_processing مُمكّنًا وكانت سلاسل العروض التابعة خالية من مخاطر إلغاء التكرار؛ أي إن إلغاء التكرار في العروض معطّل (deduplicate_blocks_in_dependent_materialized_views) أو لا يمكن لأي مسار من العروض التابعة إلغاء التكرار)، وكذلك دائمًا للوجهات Buffer وDistributed. يُفرِّغ Buffer بياناته في سياقه الخاص، بينما يعيد Distributed توجيه الكتابة إلى جزء بعيد (قد يخزّن البيانات مؤقتًا بنفسه)، لذا لا تتحكم إعدادات إلغاء التكرار الخاصة بهذا الاستعلام في الكتابة النهائية، وتبقى ذات تدفق واحد بغض النظر عنها. كما يبقى إدراج النصاب غير المتوازي (insert_quorum يساوي 2 أو أكبر، أو 'auto'، وinsert_quorum_parallel معطّل) ذا تدفق واحد، لأنه لا يسمح إلا بجزء نصاب واحد قيد التنفيذ لكل جدول. تؤدي القيم الأعلى إلى زيادة استخدام الذاكرة.

max_insert_threads_min_free_memory_per_thread

مماثل لـ max_threads_min_free_memory_per_thread، لكنه يُطبَّق على max_insert_threads بدلًا من max_threads. والقيمة الافتراضية هنا أعلى لأن مسارات الإدراج تحتفظ عادةً بمخازن مؤقتة أكبر لكل خيط (مثل أجزاء MergeTree وكتل الضغط) مقارنةً بمسارات القراءة. إذا كان مقدار الذاكرة الحرة أقل من max_insert_threads مضروبًا في هذه القيمة، فسيُخفَّض max_insert_threads بما يتناسب مع ذلك، حتى حد أدنى يبلغ 1. اضبطه على 0 لتعطيل هذا القيد.
آخر تعديل في ١٤ أغسطس ٢٠٢٦