Escolha uma Página

Introdução

Estamos aqui na empresa a realizar algumas importações de dados que levam muiiito tempo para serem executadas, ai surge aquelas questões básicas, o banco está traavado?  qual query está sendo executada nesse momento?

Essa técnica que será apresentada abaixo deve ser utilizada com cuidado pois ela ocasiona um overhead no banco então eu sugiro que a use apenas no seu ambiente de desenvolvimento e não no ambiente de produção.

A Solução

Por padrão o postgres não vem com as funções de log de query habilitado então antes de ver as query rodando você terá que alterar as configurações do postgre, para isso edite o arquivo postgres.conf e altere as seguintes variáveis para true

# - Query/Index Statistics Collector -
stats_start_collector = true
stats_command_string = true
stats_block_level = true
stats_row_level = true
stats_reset_on_server_start = true

Depois de editar reinicie o banco, tem como fazer sem reiniciar mas como vc vai usar só no ambiente de desenvolvimento então uptime não é problema :).

Para  exibir todas as query execute a SQL:

SELECT * FROM pg_stat_activity

Caso vocês queira contar quantas query estão sendo executadas por usuário

SELECT datname,procpid,current_query FROM pg_stat_activity

Conclusão

O Postgres como bom SGBD relacional que é, permite a vocês manipule suas estruturas de controle apenas com SQL ai está mais uma prova disso. Me lembrei agora do post sobre como desabilitar a integridade do postgres!

Bom por hoje é só até mais pessoal

Referências

  1. http://chrismiles.info/systemsadmin/databases/articles/viewing-current-postgresql-queries/
  2. http://archives.postgresql.org/pgadmin-support/2006-03/msg00042.php