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