
Se sua loja PrestaShop está lenta, o problema pode estar no MySQL, o banco de dados que gerencia todas as informações da sua loja, desde produtos e clientes até pedidos e módulos. Um MySQL lento afeta tanto o Front Office (loja visível para clientes) quanto o Back Office (painel de administração), podendo causar quedas de conversão, insatisfação de clientes e dificuldade em gerenciar pedidos.
Neste guia completo, você vai aprender:
- Como identificar se o MySQL é a causa da lentidão.
- Ferramentas e técnicas de diagnóstico de consultas lentas.
- Otimizações essenciais para melhorar a performance do banco de dados.
- Boas práticas para evitar lentidão no futuro.
🔹 Dica rápida: Antes de qualquer otimização, faça backup completo do seu banco de dados. Pequenos ajustes podem gerar grandes impactos se não forem testados corretamente.
Leia também:
- PrestaShop lento: como deixar sua loja muito mais rápida
- Erro de Banco de Dados no PrestaShop: Como Resolver
- Otimização PrestaShop: Guia Completo
Entendendo o Problema
Antes de otimizar o MySQL, é essencial compreender por que ele pode estar deixando sua loja lenta e como identificar os sintomas.
Por que o MySQL pode deixar sua loja lenta
Existem diversos fatores que podem causar lentidão:
- Consultas mal otimizadas: Alguns módulos ou customizações podem gerar queries complexas, demorando segundos para retornar resultados.
- Tabelas grandes e sem índices adequados: O PrestaShop, especialmente em lojas com milhares de produtos e pedidos, depende de índices para acelerar buscas.
- Configuração de servidor inadequada: Parâmetros como
innodb_buffer_pool_size,query_cache_sizeemax_connectionsimpactam diretamente o desempenho. - Logs acumulados e dados temporários: Tabelas de histórico de pedidos, cache e logs podem crescer descontroladamente, aumentando o tempo de resposta.
- Versões antigas do MySQL ou InnoDB mal configurado: Cada versão do MySQL possui melhorias de performance; usar versões antigas sem ajustes pode gerar lentidão.
💡 Insight de especialista: Muitas lojas veem melhoria imediata ao ajustar apenas os índices das tabelas mais críticas, como
ps_orderseps_product.
Sintomas de lentidão relacionados ao banco de dados
Os sinais de que o MySQL está afetando sua loja incluem:
- Front Office demora mais de 3 segundos para carregar páginas de produtos.
- Back Office demora para listar pedidos ou atualizar informações.
- Timeouts em processos automáticos, como atualizações de estoque ou cálculo de frete.
- Alta utilização de CPU ou memória no servidor durante consultas simples.
- Logs do MySQL mostram queries com tempo de execução elevado (
slow queries).
Diferença entre lentidão no Front Office e Back Office
- Front Office: Afeta diretamente a experiência do cliente, podendo resultar em carrinhos abandonados e queda de vendas.
- Back Office: Afeta a operação da loja, atrasando pedidos, relatórios e configurações.
🔹 Exemplo prático: Uma query que retorna todos os produtos em uma categoria com 10.000 SKUs pode demorar 5–10 segundos sem índice adequado. No Front Office, isso significa que o cliente verá uma página lenta; no Back Office, o administrador terá dificuldades em gerenciar produtos.
Leia também:
- PrestaShop Não Carrega: Principais Causas e Como Resolver
- Problemas de Cache no PrestaShop: Como Corrigir
Diagnóstico do MySQL no PrestaShop
Para resolver a lentidão do MySQL, o primeiro passo é diagnosticar corretamente onde e por que as consultas estão lentas. Sem diagnóstico, qualquer otimização será tentativa e erro.
Ativando o Slow Query Log
O Slow Query Log é uma ferramenta do MySQL que registra consultas que demoram mais que um tempo definido, normalmente acima de 1 segundo.
Passos para ativar:
- Acesse o arquivo
my.cnfoumy.inido MySQL. - Adicione ou edite as linhas: slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 1
log_queries_not_using_indexes = 1 - Reinicie o MySQL: sudo service mysql restart
- Verifique os logs: tail -f /var/log/mysql/slow.log
💡 Dica prática: Ativar
log_queries_not_using_indexesajuda a identificar queries que não estão aproveitando índices, um dos maiores vilões da lentidão.
Analisando consultas lentas com EXPLAIN
Depois de identificar queries lentas, use o comando EXPLAIN para entender como o MySQL está processando cada consulta.
Exemplo:
EXPLAIN SELECT * FROM ps_orders WHERE id_customer = 12345;
O resultado mostra:
type: tipo de join ou busca (ALLsignifica full table scan → ruim).key: índice usado (ouNULLse nenhum).rows: número estimado de linhas lidas.
🔹 Insight de especialista: Queries sem índices ou com
type=ALLem tabelas grandes comops_ordersoups_productsão responsáveis por quedas de performance.
Ferramentas de monitoramento recomendadas
Além do Slow Query Log, algumas ferramentas facilitam o diagnóstico:
| Ferramenta | Função |
|---|---|
| MySQL Workbench | Monitoramento de performance e execução de EXPLAIN visual |
| Percona Toolkit (pt-query-digest) | Analisa logs de queries lentas e gera relatórios detalhados |
| New Relic / Datadog | Monitoramento em tempo real do banco de dados e aplicação |
| phpMyAdmin / Adminer | Consultas rápidas e verificação de índices |
🔹 Prática: Combine logs, EXPLAIN e ferramentas gráficas para identificar exatamente quais queries precisam ser otimizadas.
Otimizações Essenciais de MySQL para PrestaShop
Com o diagnóstico em mãos, é hora de agir. As otimizações abaixo são as mais eficazes para PrestaShop:

Ajustes de configuração do MySQL
| Parâmetro | Descrição | Recomendações |
|---|---|---|
innodb_buffer_pool_size | Memória usada para cache de tabelas InnoDB | 60–80% da RAM disponível |
query_cache_size | Cache de resultados de consultas | Ativar apenas em versões antigas (<MySQL 5.7) |
max_connections | Máximo de conexões simultâneas | Ajustar conforme pico de tráfego |
tmp_table_size | Tamanho de tabelas temporárias em memória | 64–128MB ou mais |
innodb_log_file_size | Tamanho do log de transações | 256–512MB para lojas médias/grandes |
⚠️ Atenção: Alterações no
innodb_buffer_pool_sizerequerem reinício do MySQL. Sempre teste em ambiente de staging antes.
Índices e tabelas críticas
- Principais tabelas PrestaShop:
ps_orders,ps_order_detail,ps_product,ps_category_product. - Verificação: SHOW INDEX FROM ps_orders;
- O que procurar: colunas importantes sem índice (
id_customer,id_product) que aparecem em WHERE ou JOIN.
🔹 Exemplo prático: Adicionar índice em
id_customeremps_orderspode reduzir de 5s para <1s consultas frequentes.
Limpeza e manutenção de tabelas
- Excluir logs antigos (
ps_connections,ps_guest) ou limpar tabelas de cache. - Reduzir histórico de pedidos antigos se não for necessário.
- Usar
OPTIMIZE TABLEperiodicamente: OPTIMIZE TABLE ps_orders;
💡 Insight: Lojas com milhares de pedidos acumulados percebem grande melhoria apenas mantendo tabelas limpas e índices corretos.
Leia também:
- Erro de Banco de Dados no PrestaShop: Como Resolver
- Otimização de Velocidade PrestaShop: Guia Completo
- Cache PrestaShop: Como Configurar Corretamente e acelerar sua loja
Cache e Otimização Avançada do MySQL no PrestaShop
O cache é fundamental para reduzir o impacto das consultas no banco e acelerar a loja. No PrestaShop, ele atua em três níveis: aplicação, banco de dados e servidor.
1. Cache de consultas com Redis ou Memcached
O PrestaShop suporta Redis para cache de objetos e sessões, o que reduz drasticamente chamadas repetitivas ao MySQL.
Vantagens do Redis:
- Armazenamento em memória → acesso rápido
- Cache de queries, sessões e objetos PrestaShop
- Reduz carga no MySQL
- Facilita escalabilidade em VPS ou cloud
Configuração básica no PrestaShop 8:
- Instale Redis no servidor:
sudo apt install redis-server
- Ative no PrestaShop:
- Painel Admin > Configurações Avançadas > Desempenho
- Tipo de cache: Redis
- Teste a conexão e salve
🔹 Dica prática: Use Redis para sessões e cache de dados críticos como produtos, categorias e carrinho de compras.
Leia também: PrestaShop Redis: Como Configurar e Acelerar sua Loja Virtual
2. Cache SQL e índices avançados
Mesmo com Redis, queries complexas ainda podem travar o MySQL. Algumas práticas avançadas:
- Índices compostos: combinam várias colunas usadas em JOIN e WHERE. CREATE INDEX idx_order_customer_status ON ps_orders (id_customer, current_state);
- Cobertura de índice: inclua todas as colunas que uma query retorna no índice para evitar leitura da tabela.
- Partitioning: dividir grandes tabelas (
ps_orders) por ano ou status reduz o escopo das consultas.
⚠️ Cuidado: Alterações em índices devem ser testadas em ambiente de staging. Índices demais podem degradar INSERTs e UPDATEs.
3. Consultas otimizadas: evitar erros comuns
Alguns erros frequentes que prejudicam o MySQL em lojas PrestaShop:
| Erro | Causa | Solução |
|---|---|---|
| Full table scan em ps_orders | Falta de índice em id_customer ou id_order | Criar índice ou otimizar query |
| JOINs desnecessários | Módulos mal desenvolvidos adicionando joins pesados | Revisar queries e remover joins desnecessários |
| SELECT * em tabelas grandes | Retorna todas colunas → alto consumo de memória | Selecionar apenas colunas necessárias |
| Histórico de logs gigante | Tabelas ps_connections, ps_guest e ps_statssearch acumulam dados | Limpar ou arquivar dados antigos |
💡 Insight: Mesmo pequenas correções em queries podem reduzir 5–10 segundos por página, o que impacta diretamente SEO, conversão e experiência do usuário.
4. Monitoramento contínuo
Para garantir que a loja continue rápida, é essencial monitorar MySQL regularmente:
- Slow Query Log: revisar semanalmente
- Ferramentas de performance: New Relic ou Percona Toolkit
- Alertas de alto consumo de CPU/memória: configurar alertas no servidor
🔹 Prática recomendada: Combine logs do PrestaShop, Redis e MySQL para detectar gargalos rapidamente e corrigi-los antes de afetar clientes.
5. Integração com otimizações gerais de PrestaShop
O MySQL não atua isoladamente. Combine as otimizações com:
- Otimização de Velocidade PrestaShop
- Cache PrestaShop: Como Configurar Corretamente
- PrestaShop lento: como resolver
Manutenção Contínua e Prevenção de Lentidão no MySQL do PrestaShop
Uma loja PrestaShop não fica rápida apenas com ajustes pontuais. A manutenção contínua é crucial para evitar que consultas MySQL lentas prejudiquem desempenho e experiência do usuário.
1. Limpeza de dados antigos
Tabelas grandes e dados acumulados podem deixar o MySQL lento. Algumas práticas importantes:
- Logs de visitas e estatísticas:
Limpe regularmenteps_connections,ps_guesteps_statssearch. DELETE FROM ps_connections WHERE date_add < NOW() – INTERVAL 6 MONTH; - Carrinhos abandonados antigos:
Remova carrinhos sem atividade há meses para reduzir o tamanho da tabelaps_cart. - Histórico de pedidos antigos:
Arquive pedidos antigos que não precisam de acesso frequente, especialmente em lojas com grande volume.
🔹 Dica prática: Automatize tarefas com scripts cron para manter o banco sempre enxuto.
2. Revisão periódica de índices
Mesmo com índices criados, mudanças em módulos ou novos recursos podem tornar algumas consultas lentas:
- Verifique queries que usam FULL TABLE SCAN no
slow_query_log. - Ajuste ou crie índices compostos em colunas mais utilizadas.
- Remova índices não utilizados para não sobrecarregar INSERTs e UPDATEs.
3. Otimização de tabelas e banco de dados
O MySQL precisa de manutenção regular para permanecer rápido:
- Optimize tables para reorganizar e compactar tabelas: OPTIMIZE TABLE ps_orders, ps_cart, ps_product;
- Analyze tables para atualizar estatísticas e melhorar planos de execução: ANALYZE TABLE ps_orders;
- Verifique fragmentação em tabelas muito grandes e considere particionamento.
💡 Insight: Uma tabela fragmentada pode causar lentidão de segundos em páginas críticas como checkout e listagem de produtos.
4. Monitoramento e alertas
Identificar problemas antes que eles afetem clientes é essencial:
- Monitoramento de consultas lentas: ative o
slow_query_logno MySQL e analise semanalmente. - Alertas de uso de CPU e memória: configure alertas no servidor, especialmente em hospedagem VPS ou cloud.
- Monitoramento de Redis: se estiver usando cache, certifique-se de que a memória não está saturada.
5. Boas práticas de módulos e customizações
Módulos mal programados podem gerar consultas ineficientes:
- Sempre revise queries adicionadas por módulos externos.
- Evite módulos que façam SELECT * em tabelas grandes.
- Teste módulos em staging antes de instalar em produção.
⚠️ Erro comum: alguns módulos de exportação de produtos ou relatórios podem gerar JOINs complexos que travam o banco inteiro durante horários de pico.
6. Checklist completo para MySQL em PrestaShop
Para garantir que sua loja continue rápida, siga este checklist regularmente:
- Limpeza de tabelas de logs e estatísticas antigas
- Revisão de índices e criação de índices compostos quando necessário
- Otimização (
OPTIMIZE) e análise (ANALYZE) de tabelas - Monitoramento do
slow_query_loge identificação de queries problemáticas - Verificação do uso de memória do Redis e cache configurado corretamente
- Revisão de módulos instalados e suas queries SQL
- Arquivamento de dados antigos que não precisam de acesso frequente
- Configuração de alertas de CPU, memória e TTFB
- Testes de carga em staging após atualizações do PrestaShop
- Backup regular do banco e testes de restauração
Seguindo essas etapas, você reduz drasticamente os riscos de lentidão, erros de banco e impacto negativo na experiência do usuário.
Leia também:
- Erro de Banco de Dados no PrestaShop: Como Resolver
- PrestaShop Não Carrega: Principais Causas e Como Resolver
- PrestaShop Lento: como deixar sua loja mais rápida
- Problemas de Cache no PrestaShop: Como Corrigir
Conclusão: Como Garantir Performance Máxima do MySQL no PrestaShop
Manter o MySQL rápido em uma loja PrestaShop exige atenção contínua, mas os resultados valem o esforço. A combinação de otimização de consultas, limpeza de dados antigos, índices bem estruturados e monitoramento constante garante que sua loja ofereça uma experiência rápida e confiável para clientes, mesmo com grande volume de produtos e pedidos.
Principais pontos para consolidar a performance:
- Identifique e corrija consultas lentas – Use o
slow_query_logpara encontrar gargalos. - Mantenha o banco limpo e enxuto – Remova logs, carrinhos abandonados e pedidos antigos.
- Otimize tabelas regularmente – Com
OPTIMIZEeANALYZEpara manter índices e estatísticas atualizadas. - Verifique módulos e customizações – Evite consultas pesadas e JOINs desnecessários.
- Implemente cache e Redis corretamente – Para reduzir carga no MySQL e acelerar respostas.
- Monitore recursos do servidor – CPU, memória e TTFB devem ser acompanhados para prevenção.
Seguindo essas práticas, você não apenas resolve problemas imediatos de lentidão, mas previne futuras quedas de desempenho, garantindo que sua loja PrestaShop continue rápida e competitiva.
Próximos passos recomendados
Se você deseja acelerar ainda mais sua loja e garantir performance consistente, considere:
- Serviços especializados em otimização PrestaShop:
Otimizar PrestaShop – Consultoria prática para ajustes de banco, cache e performance. - Suporte técnico dedicado:
Suporte PrestaShop – Atendimento rápido para resolver lentidão, erros e instabilidades. - Hospedagem adequada para PrestaShop:
Hospedagem PrestaShop – Servidores preparados para alto volume, garantindo TTFB baixo e estabilidade.
🔹 Dica prática: Sempre teste alterações em um ambiente staging antes de aplicar em produção para evitar downtime.





