Como DBA MySQL, na maioria das vezes, devemos otimizar servidores MySQL com baixo desempenho.
Agora, minha pergunta é por onde começar, pois precisaremos descobrir muitas coisas como
1.Find the duplicate indexes.
2.Find unused indexes on the basis of selectivity.
3.Monitor the Server Parameters(What should be important parameters).
4.Execute MySQL Server performance tuning script.
5.Slow logs
Então, qual deve ser a ordem de examinar o servidor e quais devem ser as coisas exatas que devem ser monitoradas/analisadas para melhorar o desempenho.
Encontrando Índices Duplicados
Em janeiro de 2012, @gbn respondeu a uma pergunta sobre índices duplicados, onde apresentou 2 visualizações que vieram do blog de Ronald Bradford . Combinei as duas exibições em uma única consulta para apresentar índices duplicados da seguinte maneira:
Obviamente, os índices com menos coluna por agrupamento precisam ser eliminados
Encontre índices não utilizados com base na seletividade.
Não fiz muito com índices não utilizados em meus dias de desenvolvedor. Eu tento fazer apenas índices necessários que correspondam às seguintes cláusulas:
No caso de você precisar limpar um banco de dados procurando índices não utilizados, leia estes:
Monitore os Parâmetros do Servidor (Quais devem ser parâmetros importantes)
Esta é apenas uma amostra do tipo de valores de status globais a serem monitorados. Por favor, leia a documentação do MySQL nas variáveis de status do servidor .
Execute o script de ajuste de desempenho do MySQL Server
O script mais direto é mysqltuner.pl Basta obtê-lo e executá-lo
Registros lentos
Logs lentos podem ser bastante úteis em um ambiente de baixo tráfego. Infelizmente, tenho visto muitas ocorrências do seguinte
Diante desse cenário, tenho consultas que funcionam de forma independente com uma velocidade incrível param quando uma infinidade de consultas precisa de tabelas comuns.
IMHO, o log de consulta lento, na verdade, não é bom porque registra consultas concluídas que são consideradas lentas. O que você realmente deseja fazer é capturar consultas de longa duração no ato de serem de longa duração. Portanto, eu recomendaria usar pt-query-digest para agrupar a lista de processos (ou tmpdump) para consultas em execução descontrolada. Escrevi uma postagem em dezembro de 2011 sobre como criar um script de trabalho crontab que pesquisa a lista de processos a cada 20 minutos usando mk-query-digest (pt-query-digest pode ser inserido nele).