Servidores Cloud Mysql Banco de dados

Queries lentas no MySQL: diagnóstico prático

Queries lentas no MySQL pedem log, EXPLAIN, índices e checagem de VPS antes de aumentar custo com servidor ou banco gerenciado.

Ricardo Souza
Ricardo Souza

VPS, backups e operação de pequenos negócios

Ele compara VPS, backups, painéis, suporte, tráfego e custos operacionais para empresas pequenas.

6 min de leitura

Para corrigir queries lentas no MySQL, registre primeiro as consultas problemáticas, leia o plano de execução e só então mexa em índices, cache ou servidor. Trocar plano sem medir costuma mascarar o erro: consulta ruim continua cara em qualquer VPS.

Onde a lentidão realmente aparece

O sintoma quase nunca nasce no painel do provedor. Ele aparece no tempo de resposta da aplicação, na fila de conexões, no uso de CPU do MySQL e nas leituras de disco que sobem quando uma consulta varre tabela demais.

O erro comum é procurar um plano maior antes de separar consulta ruim, índice ausente, cache pequeno e recurso insuficiente. Cada causa pede uma correção diferente. Misturar tudo encarece a hospedagem e deixa o gargalo esperando na mesma cadeira.

Em projeto brasileiro pequeno, a pressão costuma vir de WordPress, loja virtual, painel interno ou API que cresceu sem revisar consultas. O banco fica no mesmo VPS da aplicação, o horário comercial concentra acessos e qualquer busca sem índice vira fila.

O roteiro de diagnóstico

Comece pelo log de consultas lentas. Ele mostra quais consultas passaram do limite aceitável para a aplicação. Depois use o plano de execução para entender se o MySQL está usando índice, ordenando em disco ou lendo linhas demais.

Um fluxo seguro fica assim:

  • Capture antes de mexer: guarde a consulta, o tempo percebido pela aplicação e o horário da ocorrência.
  • Leia o plano de execução: procure varredura completa de tabela, índice ausente e estimativa de linhas muito alta.
  • Corrija uma coisa por vez: altere índice, filtro ou ordenação e compare a mesma consulta de novo.
  • Revise o cache: se as consultas melhoram depois da primeira execução, o gargalo pode estar no cache do InnoDB.
  • Só escale servidor depois: CPU, RAM e disco entram na conta quando a consulta já está tecnicamente razoável.

Para investigação pontual, um administrador costuma começar com comandos como estes:

SHOW FULL PROCESSLIST;
EXPLAIN SELECT id, nome, status FROM pedidos WHERE status = 'pendente';

Em produção, não rode alteração de índice no impulso. Em tabelas grandes, criar índice também consome I/O e pode travar escrita se a janela for mal escolhida.

O que olhar no plano de execução

O plano de execução não é enfeite de console. Ele diz como o otimizador pretende chegar ao resultado. Se o banco lê quase tudo para devolver pouca coisa, a query está cobrando pedágio demais.

Sinal no diagnósticoO que costuma significarCorreção provável
Índice não usadoO filtro não conversa com a estrutura da tabelaCriar ou ajustar índice nas colunas de filtro e junção
Ordenação pesadaO banco ordena resultado grande antes de limitarCombinar filtro, índice e paginação coerente
Função no filtroA coluna indexada vira expressão e perde eficiênciaReescrever a condição para preservar o índice
Campos demais no retornoA aplicação busca dado que não usaSelecionar apenas as colunas necessárias
Muitas consultas parecidasA aplicação repete leitura que poderia ser cacheadaUsar cache de aplicação ou rever a camada de acesso

O melhor índice não é o índice em toda coluna. Índice acelera leitura, mas pesa escrita e ocupa armazenamento. Em sistemas com pedidos, sessões, carrinhos e logs, índice sem critério vira custo permanente.

Índice, cache ou servidor maior

Use índice quando a consulta filtra, junta ou ordena sempre pelas mesmas colunas. Use cache quando a mesma leitura se repete muito e não precisa refletir cada alteração instantânea. Use servidor maior quando a consulta já foi otimizada e ainda falta CPU, RAM ou I/O.

No Brasil, a troca de plano precisa considerar preço mensal e proximidade do público. KingHost, UOL Host e Locaweb têm ofertas locais nos dados da HostScout. Vultr aparece como opção global com região em São Paulo.

ProvedorPlano usado como referênciaRecursos informadosPreço mensal em reais
KingHostVPS 4 GB Linux4 GB RAM, 2 vCPU, 70 GB SSDR$ 47,90
UOL HostCloud Server 4 GB4 GB RAM, 4 vCPU, 50 GB SSDR$ 218,20
LocawebVPS 4 GB Linux4 GB RAM, 2 vCPU, 70 GB SSDR$ 53,90
Vultrvhp-4c-8gb-amd8 GB RAM, 4 vCPU, 180 GB SSDR$ 249,61

Essa tabela não escolhe vencedor. Ela mostra o ponto incômodo: se a query faz varredura desnecessária, pagar mais por CPU pode só comprar alguns minutos de folga. O ganho real vem de reduzir leitura e concorrência.

Quando mexer na consulta

Mexa na consulta quando o plano mostra leitura ampla, filtro sem índice ou retorno maior do que a aplicação usa. Troque SELECT com todas as colunas por uma lista explícita e revise filtros que aplicam função sobre a coluna.

Também desconfie de paginação profunda. Listagens com deslocamento muito alto obrigam o banco a caminhar por muitos registros antes de entregar a página pedida. Para telas operacionais, paginação por cursor costuma ser mais previsível.

JOIN lento não é culpa automática do MySQL. Verifique se as colunas ligadas têm tipos compatíveis, se a cardinalidade faz sentido e se a tabela principal foi escolhida por seletividade, não por hábito do desenvolvedor.

Quando mexer na infraestrutura

O servidor entra no diagnóstico quando consultas já enxutas continuam competindo por memória, CPU ou disco. Em VPS pequeno, MySQL e aplicação dividem o mesmo sistema operacional, os mesmos picos e a mesma margem de erro.

Escolha um plano com folga quando o banco precisa manter mais dados quentes em memória, quando relatórios concorrem com tráfego real ou quando backups e restaurações já atrapalham o horário de uso. Teste a restauração; backup sem teste é extintor com lacre bonito e utilidade duvidosa.

Evite trocar de provedor no escuro. Antes, compare latência para o público, janela de suporte, rotina de snapshot, política de backup, custo de migração e como o plano lida com uso sustentado de CPU. Suporte conta no relógio quando a loja está parada.

Lista de verificação

  • Slow Query Log: defina um limite alinhado ao tempo aceitável da aplicação e revise o risco de registrar volume inútil.
  • EXPLAIN: confirme índice usado, linhas examinadas e ordenação antes de criar índice que pode pesar escrita.
  • Cache do InnoDB: compare leitura fria e leitura repetida para separar disco lento de consulta mal escrita.
  • Plano VPS: valide CPU, RAM, SSD e backup antes de pagar por escala que não corrige consulta ruim.

Como saber se a correção funcionou

Uma correção boa reduz tempo, linhas examinadas e variação sob carga parecida. Não basta a consulta parecer rápida uma vez no console. O banco pode estar com cache quente, pouca concorrência e nenhum relatório rodando junto.

Guarde uma amostra antes e depois. Compare a mesma rota da aplicação, com filtros equivalentes e volume parecido. Se a consulta melhora, mas o sistema segue lento, procure bloqueio de escrita, fila de conexão ou chamada externa travando a resposta.

Método e atualização dos dados

Os dados de planos e preços citados aqui vêm da base monitorada da HostScout e estavam atualizados nas datas indicadas nos metadados do artigo. Para decisão de compra, revise também backup, suporte, localização e custo de migração no momento da contratação.

Perguntas frequentes

Como descubro qual query está lenta no MySQL?
Ative o log de consultas lentas e cruze o horário do log com a rota lenta da aplicação. Depois rode o plano de execução da consulta encontrada.
EXPLAIN sozinho resolve performance?
Não. EXPLAIN mostra o caminho escolhido pelo MySQL. A correção vem depois, com índice, reescrita da consulta, cache ou ajuste de servidor.
Todo WHERE precisa de índice?
Não. Índice vale quando a coluna é usada com frequência e reduz bem o conjunto de linhas. Índice demais piora escrita e aumenta armazenamento.
Quando devo trocar de VPS por causa do MySQL?
Troque quando as consultas já foram medidas e otimizadas, mas CPU, RAM, disco ou backup ainda ficam no limite durante uso real.

Preparado por

Ricardo Souza
Ricardo Souza

VPS, backups e operação de pequenos negócios

Ele compara VPS, backups, painéis, suporte, tráfego e custos operacionais para empresas pequenas.

Fatos verificados

HostScout editorial

Artigos relacionados