В настоящее время я вижу, что для таблицы базы данных с очень простой схемой (около 5 полей) она вставляет новые записи со скоростью чуть менее ~ 50 операций вставки в секунду в моей локальной среде разработки (накопитель SSD) - это с нет наблюдателей на модели, заполняющей связанные таблицы.
Используя прямой SQL, я вижу значительное улучшение - ~ 1800 вставок в секунду. Мы думаем о том, чтобы попытаться оптимизировать производительность наших моделей, но, конечно, мы не хотим потерять всю ту хорошую стабильность и гибкость, которую дает нам ядро Magento.
Мне интересно, прошел ли кто-то этот путь раньше и есть ли легкие победы с точки зрения компонентов слоя модели, которые можно относительно безопасно обойти, что даст значительное повышение производительности.
Вещи как:
- Разрешение имени класса
- до и после сохранения событий
- Отправка событий
- операции
- и т.п.
ОБНОВЛЕНИЕ: Я соврал, на самом деле были некоторые дополнительные запросы, запускаемые наблюдателями или afterSave (), которые я видел, когда проверял журнал запросов к базе данных. Сравнение с абсолютно простой сущностью фактически дает мне ~ 300 строк в секунду с моделями Magento - только накладные расходы MySQL являются транзакциями.
источник
Ответы:
Одна вещь, которая может ускорить весь сайт, это удалить все ссылки
Varien_Profiler
на ваш производственный сайт. Даже если профилировщик отключен, он всегда проверяет, включен ли он, поэтому каждый вызовVarien_Profiler::
приведет к дополнительномуif
утверждению. Конечно, удаление всех этих вызовов происходит за счет невозможности использования профилировщика. Тем не менее, это может ускорить весь сайт, возможно, на 5% или около того (это субъективный опыт, но есть много звонков поVarien_Profiler
всему Magento). На самом деле я написал небольшой сценарий оболочки, чтобы автоматически закомментировать эти вызовы во всех файлах, и я добавлю это в свой пост завтра, когда я буду на работе и у меня будет готов код.Как и обещал сейчас код для комментирования этих звонков:
Это должно выполняться в консоли linux как в приложении /, так и в папке lib /. Возможно, вам придется вручную настроить файл /lib/Varien/Profiler.php вручную. Также обратите внимание, что вы должны тщательно проверить это в безопасной среде, прежде чем запускать его в живую - но я думаю, это должно быть очевидно;)
источник
find . -type f -exec grep -qF 'Varien_Profiler' {} \; -exec sed -i '/Varien_Profiler/d' {} \;
если вы предпочитаете быстрый oneliner.При выполнении большого сохранения на моделях Magento лучше отключить индексатор Magento, который замедляет процесс:
И включив его, когда вы закончите:
источник