الانتقال إلى المحتوى الرئيسي
يحتوي DataStore على وضعَي توافق يحددان ما إذا كان سيتم تهيئة المخرجات بما يضمن التوافق مع pandas، أو تحسينها لأداء Raw SQL.

نظرة عامة

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


تفعيل وضع الأداء

استخدام الكائن config

استخدام دوال مستوى الوحدة النمطية

استخدام تعليمات الاستيراد المختصرة

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

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

استخدم وضع الأداء عندما:
  • تعالج مجموعات بيانات كبيرة (من مئات الآلاف إلى ملايين الصفوف)
  • تشغّل أعباء عمل تعتمد بكثافة على التجميع (groupby, sum, mean, count)
  • لا يكون ترتيب الصفوف مهمًا (مثل النتائج المجمّعة، والتقارير، ولوحات المعلومات)
  • تريد أقصى معدل نقل لـ SQL وأقل قدر ممكن من الأعباء الإضافية
  • يكون استخدام الذاكرة مصدر قلق (القراءة المتوازية لملفات Parquet، وعدم وجود DataFrames وسيطة)
ابقَ في وضع pandas عندما:
  • تحتاج إلى سلوك pandas الدقيق (ترتيب الصفوف، وMultiIndex، وdtypes)
  • تعتمد على أن 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. بدّل بين الأوضاع ضمن جلسة واحدة


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