فرط تخصيص الذاكرة تقنية تجريبية تهدف إلى إتاحة تعيين حدود أكثر مرونة للذاكرة للاستعلامات.
تقوم فكرة هذه التقنية على تقديم إعدادات يمكن أن تمثل المقدار المضمون من الذاكرة الذي يمكن للاستعلام استخدامه.
عند تمكين فرط تخصيص الذاكرة وبلوغ حد الذاكرة، سيختار ClickHouse الاستعلام الأكثر تجاوزًا في التخصيص ويحاول تحرير الذاكرة بإنهاء هذا الاستعلام.
عند بلوغ حد الذاكرة، سينتظر أي استعلام بعض الوقت أثناء محاولة تخصيص ذاكرة جديدة.
إذا انقضت المهلة وتحررت الذاكرة، يواصل الاستعلام التنفيذ.
وإلا فسيتم طرح استثناء وإنهاء الاستعلام.
يُجرى اختيار الاستعلام الذي يجب إيقافه أو إنهاؤه بواسطة متعقّب فرط الالتزام العام أو متعقّب فرط الالتزام الخاص بالمستخدم، وذلك حسب حد الذاكرة الذي تم بلوغه.
إذا تعذر على متعقّب فرط الالتزام اختيار استعلام لإيقافه، فسيتم طرح استثناء MEMORY_LIMIT_EXCEEDED.
متعقّب فرط الالتزام للمستخدم
يعثر متعقّب فرط الالتزام للمستخدم على الاستعلام ذي أعلى نسبة فرط التزام في قائمة استعلامات المستخدم.
تُحتسب نسبة فرط الالتزام للاستعلام بقسمة عدد البايتات المخصّصة على قيمة الإعداد memory_overcommit_ratio_denominator_for_user.
إذا كانت قيمة memory_overcommit_ratio_denominator_for_user للاستعلام تساوي صفرًا، فلن يختار متعقّب فرط الالتزام هذا الاستعلام.
يُضبط مهلة الانتظار بواسطة الإعداد memory_usage_overcommit_max_wait_microseconds.
مثال
SELECT number FROM numbers(1000) GROUP BY number SETTINGS memory_overcommit_ratio_denominator_for_user=4000, memory_usage_overcommit_max_wait_microseconds=500
متعقّب فرط الالتزام العام
يعثر متعقّب فرط الالتزام العام على الاستعلام ذي أعلى نسبة فرط التزام ضمن قائمة جميع الاستعلامات.
وفي هذه الحالة، تُحتسب نسبة فرط الالتزام بقسمة عدد البايتات المخصّصة على قيمة الإعداد memory_overcommit_ratio_denominator.
إذا كانت قيمة memory_overcommit_ratio_denominator للاستعلام تساوي صفرًا، فلن يختار متعقّب فرط الالتزام هذا الاستعلام.
تُضبط مهلة الانتظار بواسطة المعلَمة memory_usage_overcommit_max_wait_microseconds في ملف الإعدادات. آخر تعديل في ٢٥ يونيو ٢٠٢٦