Solução de problemas de SQL lentos para instâncias de BD do RDS for MySQL
Esta seção descreve como solucionar problemas de instruções SQL lentas nas instâncias de BD do MySQL. Para qualquer cenário de serviço específico, a eficiência da consulta depende da arquitetura e do design da tabela e do índice do banco de dados. Arquitetura e índices mal projetados causarão muitas instruções SQL lentas.
Instruções SQL lentas causadas por exceções SQL
- Causas e sintomas
Há muitas causas para exceções SQL, por exemplo, design de estrutura de tabela de banco de dados inadequado, índices ausentes ou muitas linhas que precisam ser verificadas.
Na página de logs de consulta lenta do console de gerenciamento, você pode baixar logs de consulta lenta para identificar as instruções SQL lentas e ver quanto tempo elas levaram para serem executadas. Para obter detalhes, consulte Visualização e download de logs de consultas lentas.
- Solução
Instruções SQL lentas causadas por limites de instância de BD
- Causas e sintomas
O desempenho da instância de BD pode ser limitado porque:
- Suas cargas de trabalho têm aumentado, mas o armazenamento não foi dimensionado de acordo.
- O desempenho da instância de BD vem se deteriorando à medida que o servidor físico da instância envelhece.
- A quantidade de dados vem aumentando e a estrutura de dados vem mudando.
Você pode exibir o uso de recursos da instância de BD no console. Se os valores de todas as métricas de uso de recursos estiverem próximos de 100%, sua instância de BD poderá atingir o desempenho máximo. Para obter detalhes, consulte Exibição de métricas de desempenho.
- Solução
Atualize a classe de instância. Para obter detalhes, consulte Alteração de uma classe de instância de BD.
Instruções SQL lentas causadas por atualizações de versão
- Causas e sintomas
A atualização da instância de BD pode alterar o plano de execução de SQL. Os tipos de junção determinados no plano de execução são, em ordem decrescente de eficiência:
system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > all
Para obter mais informações, consulte Documentação oficial do MySQL.
Se sua aplicação reenvia frequentemente solicitações de consulta que especificam junções de intervalo e índice, mas o RDS processa essas solicitações de consulta lentamente, várias instruções SQL são paralelizadas. Nesse caso, sua aplicação é lenta para liberar threads. Como resultado, as conexões no pool de conexões ficam esgotadas, afetando todas as cargas de trabalho na instância de BD.
Você pode efetuar logon no console para ver quantas conexões atuais sua instância de BD estabeleceu. Para obter detalhes, consulte Exibição de métricas de desempenho.
- Solução
Analise o uso do índice e o número de linhas a serem verificadas, estime a eficiência da consulta, reconstrua as instruções SQL e ajuste os índices. Para obter detalhes, consulte Execução do plano de SQL.
Instruções SQL lentas causadas por configurações de parâmetro inadequadas
- Causas e sintomas
Configurações inadequadas de alguns parâmetros (como innodb_spin_wait_delay) podem afetar o desempenho.
Você pode exibir modificações de parâmetros no console. Para obter detalhes, consulte Visualização do histórico de alterações de parâmetros.
- Solução
Modifique parâmetros relacionados com base no seu cenário de serviço específico.
Instruções SQL lentas causadas por operações de lote
- Causas e sintomas
Um grande número de operações são executadas para importar, excluir e consultar dados.
Você pode visualizar Total Storage Space, Storage Space Usage e IOPS no console. Para obter detalhes, consulte Exibição de métricas de desempenho.
- Solução
Realize operações em lote durante as horas fora de pico ou divida-as.
Instruções SQL lentas causadas por tarefas agendadas
- Causas e sintomas
Se a carga de sua instância de BD mudar regularmente ao longo do tempo, pode haver tarefas agendadas causando isso.
Você pode exibir DELETE Statements per Second, INSERT Statements per Second, INSERT_SELECT Statements per Second, REPLACE Statements per Second, REPLACE_SELECTION Statements per Second, SELECT Statements per Second e UPDATE Statements per Second no console para determinar se a carga está mudando regularmente. Para obter detalhes, consulte Exibição de métricas de monitoramento.
- Solução
Ajuste a hora em que as tarefas agendadas são executadas. Você é aconselhado a executar tarefas agendadas durante o horário fora do horário de pico e alterar a janela de manutenção para o horário fora do horário de pico. Para obter detalhes, consulte Alteração da janela de manutenção.