الاستخدام الفعال لـ MySQLDB SSCursor لمجموعات النتائج الكبيرة
عند التعامل مع مجموعات النتائج الواسعة التي تتضمن مئات الآلاف أو أكثر من الصفوف، تصبح إدارة الذاكرة الفعالة مهم. على هذا النحو، يظهر MySQLDB SScursor (مؤشر تحديد التدفق) كأداة مناسبة لتقليل استهلاك الذاكرة.
التمييز بين Fetchall() مع Base Cursor مقابل SScursor
خلافًا للاعتقاد الشائع، فإن تنفيذ fetchall() من مؤشر SScursor يستهلك ذاكرة أكبر من المؤشر الأساسي. وذلك لأن SScursor يجلب النتائج بشكل متزايد من الخادم في أجزاء، بينما يقوم fetchall() بتنزيل مجموعة النتائج بالكامل في الذاكرة. ومن ثم، فإن استخدام fetchall() يصبح أمرًا غير بديهي بالنسبة للسيناريوهات ذات الذاكرة المحدودة.
التكرار على النتائج باستخدام SSCursor
لتدفق النتائج بكفاءة من مؤشر SS على صف تلو الآخر. على أساس الصف، استخدم الطريقة التالية:
import MySQLdb.cursors
connection=MySQLdb.connect(
host="thehost",user="theuser",
passwd="thepassword",db="thedb",
cursorclass = MySQLdb.cursors.SSCursor)
cursor=connection.cursor()
cursor.execute(query)
for row in cursor:
print(row)
تتكرر هذه الطريقة على مجموعة النتائج دون تخزين المحتويات بأكملها في الذاكرة، مما يستهلك الحد الأدنى من الموارد.
تحسينات إضافية
] &&&]الحد من حجم مجموعة النتائج عن طريق تحديد عبارات WHERE أو استخدام LIMIT.تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3