Estou no processo de revisar todas as instruções SQL que um aplicativo faz no banco de dados, por razões de desempenho. Existe uma maneira fácil de registrar todas as instruções executadas pelo servidor de banco de dados PostgreSQL? Obrigado.
Estou no processo de revisar todas as instruções SQL que um aplicativo faz no banco de dados, por razões de desempenho. Existe uma maneira fácil de registrar todas as instruções executadas pelo servidor de banco de dados PostgreSQL? Obrigado.
Respostas:
A opção de configuração que você está procurando é log_statement = "all"
(se você apenas deseja as instruções) ou log_min_statement_duration = <some number>
se está apenas após consultas "lentas" (para algum valor de "lento"). Consulte http://www.postgresql.org/docs/current/static/runtime-config-logging.html para obter mais detalhes sobre a configuração de log.
explain analyze
uma consulta lenta no empate em que foi executado. Você pode começar a testar com isso, pois o 8.4 ainda não foi lançado, mas é uma boa opção saber que aconteceu no momento da execução. , se a analisar explicar saída é OK você provavelmente está correndo em problemas com I / o ou limites de CPU, mas pelo menos você vai saber que não é a própria consulta
O auto_explain
módulo é muito útil para isso. Ele não apenas registra as instruções, mas também registra seus planos de execução e pode até registrar as instruções executadas nas funções do PL / PgSQL. O impacto no desempenho é razoavelmente baixo, a menos que você ative a análise; nesse caso, você incorre em um pouco de tempo para todas as consultas.
Veja auto_explain
na documentação.
auto_explain
, está na lista de módulos abençoados. Consulte a documentação em docs.aws.amazon.com/AmazonRDS/latest/UserGuide/…
Obviamente, você pode detectar as consultas mais lentas por conta própria, mas eu recomendo que você use o pgFouine - um analisador de logs do PostgreSQL. É fácil de instalar e realmente útil.