Monitorando consultas lentas no MySQL

Posted on abril 6, 2011. Filed under: MySQL, Tuning |

Muitas vezes enfrentamos problemas com desempenho em nossos sites, principalmentes aqueles que recebem muitos acessos. Descobrir onde esta o gargalo é um trabalho um tanto complexo principalmente porquê temos que avaliar uma série de variáveis. (CPU, memória, link, limites no banco de dados, limites no serviço de web, índices, entre outros). Neste post vou focar somente como avaliar problemas com lentidão no MySQL, mais especificamente monitorar consultas lentas. Esse recurso já me ajudou várias vezes a resolver problemas de desempenho. Simples e eficiente.

Para habilitar a monitoração de consultas lentas, basta adicionar as seguintes linhas no arquivo de configuração do MySQL (/etc/my.conf ou /etc/mysql/my.cnf), na seção [mysqld]:

log-slow-queries
long_query_time = 2

A linha log-slow-queries irá habilitar o log de consultas lentas. A linha long_query_time = 2 diz ao mysql considerar consultas lentas aquelas que demorarem mais que 2 segundos para retornar, você pode especificar a quantidade de segundos que quiser.
O valor padrão para essa variável é de 10 segundos. Depedendo da quantidade de acessos ao seu site, o valor de 10 segundos pode ser alto. Em um site com bastantes acessos setei essa variável para 2 segundos.
Cabe você analisar sua situação.

Por padrão, o mysql irá criar o arquivo host_name-slow.log dentro do diretório data do mysql. Caso você queira especificar um caminho para o arquivo de log de consultas lentas que seja diferente do caminho padrão você pode especificar através da diretiva log-slow-queries:

log-slow-queries = [caminho do arquivo de log]

Para finalizar, segue abaixo exemplo de um registro de consulta lenta inserido no arquivo de log:

# Time: 110406 17:00:00
# User@Host: admin[admin] @ usuario.localnet [1.1.1.1]
# Query_time: 9 Lock_time: 0 Rows_sent: 1 Rows_examined: 5643851
select count(*) from backuplog;

O interessante observar nesse log, é o campo Query_time que indica o tempo gasto na consulta (9s) e o campo Time que indica a data/hora da ocorrencia. Logo abaixo segue a consulta que gerou o log — select count(*) from backuplog;

Make a Comment

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

3 Respostas to “Monitorando consultas lentas no MySQL”

RSS Feed for Pasqua Tecnologia Comments RSS Feed

Olá Pasquati,

Muito boa esta dica, eu ja fiz isso a algum tempo e descobri um monte de consulta lenta no meu wordpress, tinha mais de 30.

Você tem alguma dica ai para otimizar banco myqsl de wordpress?

Um abraço

Diego LIma

Olá Diego,

Não tenho nenhuma dica em mãos no momento para otimização do wordpress. Porém sei que existem diversos plugins que ajudam a otimizar o wodpress, através de cache de página e outras técnicas. Vale a pena fazer uma pesquisa por plugins de otimização. Dá uma olhada no link que segue para mais algumas dicas de otimização do próprio site do wordpress:

http://codex.wordpress.org/WordPress_Optimization/WordPress_Performance

Abraço,
Douglas

[…] um post anterior já vimos como monitorar consultas lentas no MySQL, vamos agora ver como habilitar o log de consultas lentas no PostgreSQL. Como já foi discutido, […]


Where's The Comment Form?

Liked it here?
Why not try sites on the blogroll...

%d blogueiros gostam disto: