Skip to main content
يحتوي DataStore على وضعي توافق يحددان ما إذا كانت المخرجات تُهيَّأ لتتوافق مع pandas أو تُحسَّن لأداء Raw SQL.

نظرة عامة

ما الذي يعطّله وضع الأداء


تمكين وضع الأداء

استخدام كائن الإعداد

استخدام دوال الوحدة

استخدام عبارات الاستيراد الجاهزة

يؤدي تفعيل وضع الأداء تلقائيًا إلى ضبط محرك التنفيذ على chdb. ولا حاجة إلى استدعاء config.use_chdb() بشكل منفصل.

متى تستخدم وضع الأداء

استخدم وضع الأداء عندما:
  • تعالج مجموعات بيانات كبيرة (من مئات الآلاف إلى ملايين الصفوف)
  • تشغّل أحمال عمل كثيفة التجميع (groupby, sum, mean, count)
  • لا يهم ترتيب الصفوف (مثلًا: النتائج المجمّعة، والتقارير، ولوحات المعلومات)
  • تريد أقصى إنتاجية SQL وأدنى عبء إضافي ممكن
  • يكون استخدام الذاكرة مصدر قلق (قراءة Parquet المتوازية، ومن دون DataFrames وسيطة)
ابقَ في وضع pandas عندما:
  • تحتاج إلى سلوك pandas الدقيق (ترتيب الصفوف، وMultiIndex، وأنواع البيانات)
  • تعتمد على أن first()/last() يعيدان بالفعل أول/آخر صف فعلي
  • تستخدم shift(), diff(), cumsum() التي تعتمد على ترتيب الصفوف
  • تكتب اختبارات تقارن مخرجات DataStore مع pandas

اختلافات في السلوك

ترتيب الصفوف

في وضع الأداء، لا يُضمن ترتيب الصفوف في أي عملية. ويشمل ذلك:
  • نتائج التصفية
  • نتائج تجميع GroupBy
  • head() / tail() بدون استخدام sort_values() بشكل صريح
  • عمليات التجميع first() / last()
إذا كنت بحاجة إلى نتائج مرتبة، فأضف sort_values() بشكل صريح:

نتائج GroupBy

التجميع

التنفيذ باستعلام SQL واحد

في وضع الأداء، يُنفَّذ تجميع ColumnExpr باستخدام groupby (مثل ds[condition].groupby('col')['val'].sum()) على شكل استعلام SQL واحد بدلًا من العملية ذات الخطوتين المستخدمة في وضع pandas:
وهذا يلغي التجسيد المادي الوسيط لـ DataFrame، ويمكن أن يقلّل بدرجة كبيرة من استخدام الذاكرة ووقت التنفيذ.

مقارنة مع محرك التنفيذ

وضع الأداء (compat_mode) ومحرك التنفيذ (execution_engine) هما بُعدان مستقلان في الإعداد: يؤدي ضبط compat_mode='performance' إلى تعيين execution_engine='chdb' تلقائيًا، لأن وضع الأداء مُصمَّم لتنفيذ SQL.

الاختبار باستخدام وضع الأداء

عند كتابة اختبارات لوضع الأداء، قد تختلف النتائج عن pandas من حيث ترتيب الصفوف وبنية التنسيق. استخدم الاستراتيجيات التالية:

الفرز ثم المقارنة (عمليات التجميع، عوامل التصفية)

التحقق من مدى القيم (الأولى/الأخيرة)

البنية والعدد (LIMIT بدون ORDER BY)


أفضل الممارسات

1. فعِّله مبكرًا في برنامجك النصي

2. أضف فرزًا صريحًا عندما يكون ترتيب النتائج مهمًا

3. استخدمه لأحمال العمل الدفعية/ETL

4. بدّل الأوضاع داخل الجلسة


آخر تعديل في ٢٣ يوليو ٢٠٢٦