𝗧𝗵𝗲 𝗘𝗔𝗩 𝗧𝗮𝘅: 𝗪𝗵𝘆 𝗠𝗮𝗴𝗲𝗻𝘁𝗼 𝗽𝗿𝗼𝗱𝘂𝗰𝘁 𝗹𝗼𝗮𝗱𝘀 𝗮𝗿𝗲 𝘀𝗹𝗼𝘄 ضريبة EAV: لماذا تكون عمليات تحميل منتجات Magento بطيئة

غالبًا ما يشتكي مستخدمو Magento من السرعة. يدفع العديد من هؤلاء المستخدمين "ضريبة EAV" دون علمهم بذلك.

المنتج في Magento ليس صفًا واحدًا، بل هو مجموعة من الصفوف الموزعة عبر جداول عديدة. يحتوي أحد الجداول على أعمدة ثابتة، بينما تحتوي الجداول الأخرى على أنواع بيانات محددة مثل varchar و int و decimal و text و datetime.

لتحميل منتج واحد، يقرأ Magento من كل جدول من هذه الجداول، ثم يقوم بتجميعها مرة أخرى في كائن (object). وإذا أضفت عرض متجر (store view)، فإن حجم العمل يتضاعف.

الفخ الأكبر هو استخدام addAttributeToSelect('*').

تعني النجمة (*) أنك تقوم بتحميل كل سمة (attribute). إذا كانت صفحة الفئة تعرض 36 منتجًا، فقد تحتاج فقط إلى ستة حقول مثل الاسم والسعر. ولكن إذا استخدمت النجمة، فستقوم بتحميل ستين حقلًا بدلاً من ذلك. يقوم Magento بقراءة وربط ومعالجة أربعة وخمسين حقلًا إضافيًا فقط ليتخلص منها في النهاية.

يمكنك إصلاح هذا في خمس دقائق.

توقف عن استخدام النجمة. قم بإدراج الأعمدة التي تحتاجها بالضبط:

  • name
  • price
  • small_image
  • url_key
  • status
  • visibility

هذا التغيير هو أكبر مكسب لصفحات القوائم البطيئة.

ولإصلاح أعمق، لا تقم بإعادة تجميع المنتجات من EAV في صفحات القوائم. يجب أن تقرأ صفحات الفئات والبحث من جداول الفهرسة (index tables) و OpenSearch. يقوم Magento بصيانة هذه الفهارس من أجلك. تعتمد صفحة الفئة السريعة على هذه الفهارس ولا تلمس EAV إلا للحقول القليلة التي يطبعها القالب (template).

لا تستخدم ميزة flat catalog. لقد أوقفت Adobe دعمها لأنها تفشل عندما يكون لديك العديد من السمات. فهي تضيف عبئًا ثقيلاً في عمليات الفهرسة وتتجاوز حدود أعمدة MySQL.

اتبع هذه القواعد للحصول على أداء أفضل:

  • اختر سمات محددة بالاسم فقط. لا تستخدم النجمة أبدًا في المجموعات (collections) التي تظهر للمستخدمين.
  • استخدم OpenSearch للقوائم والتصفية.
  • للتصديرات الضخمة (bulk exports)، استخدم الترقيم المفتاحي (keyset pagination) بواسطة entity_id.
  • اختر فقط الحقول التي تحتاجها لعمليات التصدير.

قم بقياس نتائجك. قم بتفعيل سجل الاستعلامات (query log). إذا كانت صفحة فئة واحدة تطلق مئات الاستعلامات، فإن إعادة تجميع EAV هي السبب. أنت الآن تعرف كيفية العثور على سطر الكود المسبب للمشكلة.

Source: https://dev.to/iamrobindhiman/the-eav-tax-why-magento-product-loads-are-slow-117h