Ottieni statistiche sulle query a esecuzione lenta


10

La mia applicazione di database esegue molte query diverse. Ho impostato log_min_duration_statement1000. Le query registrate non sono sempre lente, la maggior parte delle volte impiegano solo pochi ms.

È possibile ottenere una statistica di tutte le query e con quale frequenza hanno impiegato più di 1000 ms?


1
Verifica se ciò aiuta: l'impostazione log_min_duration_statement viene ignorata . Oppure hai dimenticato di ricaricare la configurazione dopo aver modificato l'impostazione.
Daniel Vérité,

Risposte:


11

Installa l'estensione pg_stat_statements con il comando SQL

CREATE EXTENSION pg_stat_statements

Si consiglia di assicurarsi di crearlo utilizzando un utente appropriato (come l'utente utilizzato dall'applicazione o un account DBA). Tieni presente che anche l'utente che crea l'estensione ne sarà il proprietario.

Ciò richiederà un riavvio del server affinché sia ​​utilizzabile (poiché è necessario modificare un po 'la configurazione in postgresql.conf che influisce sul consumo di memoria), ma fornirà statistiche su tutte le query.

Per ulteriori informazioni su ciò che offre pg_stat_statements, consultare la pagina della documentazione . Vedere qui per un rapido riferimento sulla configurazione del file di configurazione postgresql.conf per pg_stat_statements.

Una volta installato e in esecuzione, è possibile visualizzare le statistiche eseguendo una query sulla vista pg_stat_statements ..

select * from pg_stat_statements;
-- or
select * from pg_stat_statements where total_time / calls > 200; -- etc ..

2

Come @JoishiBodio ha detto che puoi usare l' pg_stat_statementsestensione per vedere le statistiche delle query lente. Per coloro che lottano con l'installazione (come ho fatto io):

  1. Controlla se pg_stat_statementsè presente nell'elenco delle estensioni disponibili:

    SELECT * FROM pg_available_extensions;
  2. Prova a installare il postgresql-contribpacchetto tramite il gestore dei pacchetti di sistema, su Debian / Ubuntu:

    sudo apt-get install postgresql-contrib-9.5

Quindi ripetere il passaggio 1.

  1. Aggiungi pg_stat_statementsa shared_preload_librariesnella configurazione PostgreSQL:

tramite postgres.conf:

    shared_preload_libraries = 'pg_stat_statements'

tramite argomenti da riga di comando (senza virgolette!):

    postgres -c shared_preload_libraries=pg_stat_statements
  1. Quindi creare l'estensione in un database:

    CREATE EXTENSION pg_stat_statements;
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.