الانتقال إلى المحتوى الرئيسي

السؤال

عند تنفيذ عبارة INSERT...SELECT، يظهر لي خطأ وجود عدد كبير جدًا من الأجزاء (TOO_MANY_PARTS). كيف يمكنني حل هذه المشكلة؟

الإجابة

فيما يلي بعض الإعدادات التي يمكن ضبطها لتجنب هذا الخطأ. هذا النوع من الضبط متقدم جدًا في ClickHouse، ويجب تعيين هذه القيم فقط بعد فهم مواصفات ClickHouse Cloud service أو الـ cluster المحلي حيث ستُستخدم، لذا لا تعتبر هذه القيم حلًا “يناسب الجميع”. max_insert_block_size = 100_000_000 (default 1_048_576) إن زيادة القيمة من ~1M إلى 100M تسمح بتكوين blocks أكبر. ملاحظة: ينطبق هذا الإعداد فقط عندما يُشكِّل server هذه الـ blocks، أي عند تنفيذ INSERT عبر واجهة HTTP، وليس عند استخدام clickhouse-client min_insert_block_size_rows = 100_000_000 (default 1_048_576) إن زيادة القيمة من ~1M إلى 100M تسمح بتكوين blocks أكبر. min_insert_block_size_bytes = 500_000_000 (default 268_435_456) إن زيادة القيمة من 268.44 MB إلى 500 MB تسمح بتكوين blocks أكبر. parts_to_delay_insert = 500 (default 150) تؤدي زيادة هذه القيمة إلى منع إبطاء عمليات INSERT بشكل مصطنع عند بلوغ عدد الأجزاء النشطة في partition واحدة. parts_to_throw_insert = 1500 (default 3000) ستؤثر زيادة هذه القيمة عمومًا في query performance للـ table، لكن ذلك يكون مقبولًا عادةً في حالات migration للبيانات.
آخر تعديل في ٢٩ يونيو ٢٠٢٦