Actualmente estoy viendo que para una tabla de base de datos con un esquema muy simple (aproximadamente 5 campos), está insertando nuevos registros a una velocidad de poco menos de ~ 50 inserciones / segundo, en mi entorno de desarrollo local (unidad SSD): esto es con no hay observadores en el modelo que puebla tablas asociadas.
Usando SQL directo, veo una gran mejora: ~ 1800 inserciones / segundo. Estamos pensando en intentar optimizar el rendimiento de nuestros modelos, pero, por supuesto, no queremos perder toda la buena estabilidad y flexibilidad que nos brinda el núcleo Magento.
Me pregunto si alguien ha tomado esta ruta antes y si hay algunas victorias fáciles en términos de componentes de la capa del modelo que se pueden omitir de manera relativamente segura que darán un aumento significativo del rendimiento.
Cosas como:
- Resolución de nombre de clase
- antes y después de guardar eventos
- Despachos de eventos
- Actas
- etc.
ACTUALIZACIÓN: mentí, en realidad hubo algunas consultas adicionales activadas por los observadores o afterSave (), que vi cuando inspeccioné el registro de consultas de la base de datos. La evaluación comparativa contra una entidad totalmente simple en realidad me da ~ 300 filas / segundo con los modelos Magento: solo las sobrecargas de MySQL son transacciones.
fuente
Respuestas:
Una cosa que puede acelerar todo el sitio es eliminar todas las referencias a
Varien_Profiler
su sitio de producción. Incluso si el generador de perfiles está deshabilitado, siempre verifica si está habilitado, por lo que cada llamada aVarien_Profiler::
generará unaif
declaración adicional . Por supuesto, eliminar todas estas llamadas tiene el costo de no poder usar el generador de perfiles más. Sin embargo, esto puede acelerar todo el sitio en aproximadamente un 5% (esto es una experiencia subjetiva, pero hay MUCHAS llamadas aVarien_Profiler
todo Magento). De hecho, escribí un pequeño script de shell para comentar automáticamente estas llamadas en todos los archivos y lo agregaré a mi publicación mañana cuando esté en el trabajo y tenga mi código listo.Como prometió ahora el código para comentar estas llamadas:
Esto debería ejecutarse en la consola de Linux tanto en la aplicación / como en la carpeta lib /. Es posible que deba ajustar el archivo /lib/Varien/Profiler.php manualmente después. También tenga en cuenta que debe probar esto a fondo en un entorno seguro antes de ponerlo en funcionamiento, pero supongo que esto debería ser obvio;)
fuente
find . -type f -exec grep -qF 'Varien_Profiler' {} \; -exec sed -i '/Varien_Profiler/d' {} \;
si prefieres una línea rápida.Cuando se ejecutan muchos guardados en los modelos de Magento, es mejor deshabilitar el indexador de Magento que ralentiza el proceso:
Y habilitándolo cuando hayas terminado:
fuente