انتقل إلى المحتوى
أمين أبوزيد
درس مخطط لهJNR-032-L01

مشكلة N+1

  • الدرس 1 من 7
  • Junior
في هذا الدرس 4 موضوعات

هذا الدرس مخطط له. يعرض المخطط أدناه الموضوعات التي سيغطيها، ولم يُنشر الدرس الكامل بعد.

نص الدروس والتمارين باللغة الإنجليزية، بينما تبقى واجهة الموقع وعناوين الدروس بالعربية.

في هذا الدرس

recognize N+1 in logs and tests.

الموضوعات المخطط لها

  • N+1: one query loads N parents, then one more query per parent loads its children (or relation).
  • 100 orders become 1 + 100 = 101 queries.
  • It hides in lazy relations touched in a loop, or in mapping code that reads order.getCustomer().getName().
  • Detect it in the SQL log (repeated similar selects) or with a query counter in tests.
  • It is fast on a developer machine with 5 rows and slow in production.
تفاصيل المخطط المبدئي

عرض عملي

java
List<Order> orders = orderRepository.findAll();          // 1 query
for (Order o : orders) {
    System.out.println(o.getLines().size());             // +1 query per order
}

اختبر فهمك

How many queries for 100 orders with N+1?

أظهر الإجابة

101.

التطبيق

طبّق هذا الدرس بمختبر الوحدة وتمارينها واختبارها.

المختبر والتمارين الاختبار

تعليم الدرس كمكتمل اختياري ويمكنك التراجع عنه في أي وقت. يبقى تقدمك محفوظًا في هذا المتصفح.

اكتب للبحث في المستويات والمراحل والوحدات والدروس.