Skip to content

Identificando consultas lentas no MySQL (slow-queries) tutorial mysql

O MySQL pode geralmente causar grandes problemas num servidor quando existem consultas que abusam do sistema.

Neste artigo ensinaremos a você como identificar corretamente as consultas (queries) que estão causando problemas para o servidor.

O servidor MySQL pode escrever um log contendo as consultas que demoram mais que “X” segundos. Porém, por padrão este recurso vem desabilitado.

Vamos ver como habilitar o recurso:

1. Log no seu servidor como root
2. Abra o arquivo my.cnf:

pico /etc/my.cnf

3. Dentro da seção [mysqld] adicione as seguintes linhas

log-slow-queries = /var/log/mysql-slow.log
long_query_time = 3

Isto é apenas um exemplo. Você pode usar qualquer nome de arquivo para o log. Você também pode estipular o tempo máximo de uma consulta. A partir deste tempo,a consulta será gravada. No nosso exemplo, colocamos 3 segundos.

4. Após as alterações, salve o arquivo.

No pico, faça: CTRL+X e YES

5. Agora nós temos que criar o arquivo de log.

touch /var/log/mysql-slow.log

6. Agora vamos mudar o dono do arquivo, para que o mysql tenha permissão de escrever nele.

chown mysql.root /var/log/mysql-slow.log

7. E então, reiniciamos o mysql

service mysql restart

O serviço deverá reiniciar corretamente. Caso não reinicie, veja se você fez tudo corretamente no arquivo my.cnf.

8. Aguarde alguns minutos e então examine o conteúdo do arquivo de log que foi criado.

Um exemplo de como fazer isto:

cat /var/log/mysql-slow.log
tail /var/log/mysql-slow.log
tail -50 /var/log/mysql-slow.log

Depois de identifica a consulta, otimize ou elimine ela.

Depois que identificar o problema, é recomendado que você remova a entrada referente a slow-queries no my.cnf (ou comente ela). Isto é importante, pois o uso de slow-queries degrada a performance do mysql. Você pode comentar o arquivo my.cnf:

#log-slow-queries = /var/log/mysql-slow.log

fonte: http://www.servidorgerenciado.com.br/identificando-consultas-lentas-no-mysql-slow-queries/
#long_query_time = 3

Não se esqueça de reiniciar o MySQL em seguida.

service mysql restart

One Comment

  1. Olá, gostei muuuuito do seu tutorial e coloquei-o no meu blog.
    Já passei por isso e na ocasião não achei uma solução prática como essa.
    Valeu!
    OBS:Citei seu blog ao final do artigo.
    deblugando.wordpress.com

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.