Atualmente, estou vendo que para uma tabela de banco de dados com um esquema muito simples (cerca de 5 campos), ela está inserindo novos registros a uma taxa de pouco menos de ~ 50 inserções / segundo, no meu ambiente de desenvolvimento local (unidade SSD) - isso é com nenhum observador no modelo que preenche tabelas associadas.
Usando SQL direto, estou vendo uma melhoria - ~ 1800 inserções / segundo. Estamos pensando em tentar otimizar o desempenho de nossos modelos, mas é claro que não queremos perder toda a boa estabilidade e flexibilidade que o núcleo Magento nos oferece.
Pergunto-me se alguém já seguiu esse caminho antes e se há algumas vitórias fáceis em termos de componentes da camada de modelo que podem ser ignoradas com relativa segurança, o que proporcionará melhorias significativas no desempenho.
Coisas como:
- Resolução do nome da classe
- antes e depois dos eventos salvos
- Despachos de eventos
- Transações
- etc.
UPDATE: Eu menti, na verdade havia algumas consultas adicionais disparando de observadores ou afterSave (), que eu vi quando inspecionei o log de consulta do banco de dados. O benchmarking em relação a uma entidade totalmente simples realmente me dá ~ 300 linhas / segundo nos modelos Magento - apenas o overhead do MySQL são transações.
fonte
Respostas:
Uma coisa que pode acelerar o site inteiro é remover todas as referências
Varien_Profiler
no site de produção. Mesmo se o criador de perfil estiver desabilitado, ele sempre verifica se está habilitado para que todas as chamadasVarien_Profiler::
resultem em umaif
declaração adicional . Obviamente, remover todas essas chamadas tem o custo de não poder mais usar o criador de perfil. No entanto, isso pode acelerar o site inteiro em talvez 5% ou mais (isso é uma experiência subjetiva, mas existem MUITAS chamadas paraVarien_Profiler
todo o Magento). Na verdade, escrevi um pequeno script de shell para comentar automaticamente essas chamadas em todos os arquivos e adicionarei isso à minha postagem amanhã quando estiver no trabalho e tiver meu código pronto.Como prometido agora, o código para comentar essas chamadas:
Isso deve ser executado no console linux, tanto no aplicativo / quanto na pasta lib /. Pode ser necessário ajustar o arquivo /lib/Varien/Profiler.php manualmente posteriormente. Observe também que você deve testá-lo completamente em um ambiente seguro antes de levá-lo ao vivo - mas acho que isso deve ser óbvio;)
fonte
find . -type f -exec grep -qF 'Varien_Profiler' {} \; -exec sed -i '/Varien_Profiler/d' {} \;
se preferir um oneliner rápido.Ao executar muitas salvamentos nos modelos Magento, é melhor desativar o indexador Magento, que atrasa o processo:
E ativá-lo quando terminar:
fonte