Imagine que seu sistema acesse uma base de dados PostgresSQL e que esta esteja a cada dia demorando mais e mais para retornar as queries. Você sabe que seu banco cresce dia após dia. Então você precisa saber quais as queries são mais lentas para então otimizar/limpar o banco.

Existe um recurso no postgres que faz log destas queries mais lentas a configuração é bem simples e exige o reinicio do serviço de postgres

Edite o arquivo /home/pgsql/data/postgresql.conf
Encontre a configuração “log_min_duration_statement”. Provavelmente estará com o valor marcado como “-1″
Ou seja, está desligado.

Troque o valor para Zero caso queira “logar” todas as queries.
Ou troque para um valor maior que Zero para capturar queries lentas no diretório “pg_log” .

Ex:
Geração de logs desativadas

# log_min_duration_statement = -1

Loga todas as queries. Pois nenhuma querie vai ser menor que Zero segundos.

# log_min_duration_statement = 0 

Loga todas as queries que demorem mais de 250ms (mílisegundos) para ser executada.

# log_min_duration_statement = 250 

Loga todas as queries que demorem mais de 1000ms (1 segundo) para ser executada.

# log_min_duration_statement = 1000 

Após a alteração do parametro, salve o arquivo, reinicie o serviço de postgres.
Agora basta acompanhar o log sendo gerado. Provavelmente no caminho abaixo

tail -f /home/pgsql/data/pg_log/postgresql-<ano>-<mes>-<dia>_<hora do ultimo restart>.log

No link temos a documentação oficial sobre o parametro:

http://www.postgresql.org/docs/8.3/interactive/runtime-config-logging.html#RUNTIME-CONFIG-LOGGING-WHEN

É isso ai pessoal comentarios são bem vindos.