برمجة

بطء قائمة Laravel: اكتشف N+1 قبل زيادة موارد السيرفر

فريق فايندو جروب2 دقائق قراءة0 مشاهدة0 تعليقات
مشاركة:
شاشتان لأداة تطوير تعرضان قائمة عملاء ومسجل استعلامات قاعدة البيانات

تفتح قائمة عملاء صغيرة بسرعة، ثم تتباطأ عندما يزداد عدد الصفوف. قد تطلب الواجهة علاقة مالك كل عميل بشكل مستقل داخل حلقة العرض. هنا ينبغي مراجعة شكل الاستعلامات قبل افتراض أن الخادم ضعيف. المطلوب معرفة ما إذا كانت كلفة العلاقات تنمو مع كل صف، لا مجرد قياس صفحة واحدة تبدو سريعة.

راقب العلاقة التي تقرأها الشاشة

تشرح وثائق علاقات Eloquent في Laravel 12 التحميل المسبق للعلاقات، وإمكان منع التحميل الكسول عبر preventLazyLoading، مع مثال يفعله خارج الإنتاج. يمكن أن يساعد ذلك في كشف اعتماد غير مقصود على علاقة لم تُحمّل. راجع إصدار المشروع وإعداداته بدل نسخ التغيير مباشرة إلى سيرفر العملاء.

في مثال افتراضي، تعرض القائمة اسم العميل واسم موظف الحساب. جهز مجموعة صغيرة من العملاء لكل منهم مالك، وأخرى أكبر بالتوزيع نفسه. لا تستخدم عدد استعلامات مفترضًا كحقيقة عن مشروعك؛ التقط ما ينفذه المسار الحقيقي بما فيه القالب والمكونات والتصدير إن كان ضمن النطاق.

قارن نمط النمو لا رقمًا منفردًا

عينة الاختبارما تسجله
صفحة قليلة الصفوفالاستعلامات المتعلقة بالقائمة والعلاقة
صفحة أكبر بالحقول نفسهاهل يتكرر الاستعلام لكل صف؟
عميل بلا مالكبقاء العرض صحيحًا دون استعلامات مفاجئة
تحميل مسبق مقترحصحة الأسماء ونطاق الوصول بعد التغيير

راجع حدود التحميل المسبق

تحميل كل العلاقات وكل الأعمدة ليس حلًا عامًا. حدد ما تحتاجه الشاشة، وافحص الذاكرة والبيانات المنقولة وحدود الشركات. إذا اخترت أعمدة بعينها، راجع مفاتيح العلاقة اللازمة للربط. لا تسمح لتحسين الأداء بإظهار اسم موظف أو عميل خارج نطاق الحساب المصرح به.

اختبر القائمة الفارغة والفرز والترقيم وإضافة عميل جديد. قارن هويات السجلات لا عددها فقط؛ قد ينخفض عدد الاستعلامات بينما يختلف محتوى الشاشة بسبب شرط علاقة غير صحيح.

ثبت ميزانية قابلة للتفسير

سلّم ضمن تطوير CRM والمراجعة التقنية الاستعلامات المتوقعة وحدود العينة وسبب كل علاقة محملة. احجب بيانات المعاملات الحساسة من السجل. النتيجة المقبولة قائمة صحيحة بنمط استعلامات مفهوم، مع اختبار يمنع رجوع النمو غير المقصود؛ ولا يعني زوال N+1 أن كل أسباب البطء الأخرى قد انتهت.

التصنيفات:برمجة
شارك:

التعليقات

لا توجد تعليقات بعد

أضف تعليقك

كن أول من يعلق على هذا المقال

02 · تابع القراءة

مقالات ذات صلة