Monitorando consultas lentas no PostgreSQL

Em 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, esse recurso é extremamente útil para identificar gargalos em aplicações, principalmente aquelas que recebem um alto tráfego de acesso. Identificar e otimizar consultas com alta duração, como por exemplo criando indíces, irá diminuir a carga de processamento do seu servidor.

Para habilitar o log de consultas lentas no postgres é bem simples. Edite o arquivo postgresql.conf, normalmente localizado em /etc/postgresql/8.4/main/postgresql.conf no caso do Ubuntu com postgresql versão 8.4 e identifique a linha:

#log_min_duration_statement = -1

Substitua por:

log_min_duration_statement = 500

Recarregue a configuração do postgresql:

service postgresql reload

Perceba que colocamos para logar todas consultas que durarem mais que meio segundo (500ms). Você pode ajustar esse valor de acordo com sua necessidade. Por exemplo, caso você tenha um site com alto tráfego de acesso e tiver várias consultas que durem mais que meio segundo, neste caso pode fazer uma grande diferença otimizar essas consultas. Sinta-se livre para aumentar ou diminuir esse valor de acordo com o ambiente de sua aplicação.

Para visualizar o log de consultas lentas, vá para o diretório de log do postgres e edite o arquivo de log mais recente. No meu caso o arquivo é /var/log/postgresql/postgresql-8.4-main.log. Abaixo é um exemplo de um registro que gerou o log de uma consulta com duração de 2041.457 ms:

2011-09-29 11:27:39 BRT LOG: duration: 2051.457 ms execute pdo_stmt_000000b4: select * from backuplog WHERE message LIKE '%xyz%'

Referências

http://www.postgresql.org/docs/8.4/static/runtime-config-logging.html

Please follow and like us:

Follow

Get every new post on this blog delivered to your Inbox.

Join other followers: