Obter estatísticas de consultas de execução lenta

10

Meu aplicativo de banco de dados executa muitas consultas diferentes. Eu configurei log_min_duration_statementpara 1000. Mas as consultas registradas nem sempre são lentas, na maioria das vezes elas levam apenas alguns ms.

É possível obter uma estatística de todas as consultas e com que frequência elas demoravam mais de 1000 ms?

user2047809
fonte
11
Veja se isso ajuda: a configuração log_min_duration_statement é ignorada . Ou você esqueceu de recarregar a configuração depois de alterar a configuração.
Daniel Vérité 16/02

Respostas:

11

Instale a extensão pg_stat_statements com o comando SQL

CREATE EXTENSION pg_stat_statements

Você pode querer criar isso usando um usuário apropriado (como o usuário que seu aplicativo usa ou alguma conta dba). Esteja ciente de que qualquer usuário que criar a extensão também será o proprietário.

Isso exigirá uma reinicialização do servidor para que seja utilizável (porque você precisa alterar um pouco a configuração do postgresql.conf que afeta o consumo de memória), mas fornecerá estatísticas sobre todas as consultas.

Por favor, consulte a página da documentação para obter mais informações sobre o que o pg_stat_statements fornece. Veja aqui uma referência rápida sobre a configuração do arquivo de configuração postgresql.conf para pg_stat_statements.

Depois de instalá-lo e executando, você pode visualizar as estatísticas consultando a visualização pg_stat_statements.

select * from pg_stat_statements;
-- or
select * from pg_stat_statements where total_time / calls > 200; -- etc ..
Joishi Bodio
fonte
2

Como @JoishiBodio disse que você pode usar a pg_stat_statementsextensão para ver estatísticas de consultas lentas. Para aqueles que lutam com a instalação (como eu fiz):

  1. Verifique se pg_stat_statementsestá na lista de extensões disponíveis:

    SELECT * FROM pg_available_extensions;
  2. Tente instalar o postgresql-contribpacote através do gerenciador de pacotes do sistema, no Debian / Ubuntu:

    sudo apt-get install postgresql-contrib-9.5

Em seguida, execute o passo 1 novamente.

  1. Adicione pg_stat_statementsà shared_preload_librariesconfiguração do PostgreSQL:

via postgres.conf:

    shared_preload_libraries = 'pg_stat_statements'

via argumentos da linha de comando (sem aspas!):

    postgres -c shared_preload_libraries=pg_stat_statements
  1. Em seguida, crie a extensão em um banco de dados:

    CREATE EXTENSION pg_stat_statements;
Andrey Semakin
fonte