2011-12-21 14 views
19

Vorrei monitorare le query inviate al mio database da un'applicazione. A tal fine, ho trovato pg_stat_activity, ma più spesso poi no, le righe che vengono restituite leggere "in transazione". Sto facendo qualcosa di sbagliato, non sono abbastanza veloce per vedere le domande, confuso, o tutto quanto sopra!App per monitorare le query PostgreSQL in tempo reale?

Qualcuno può consigliare il modo più a prova di idiota per monitorare le query in esecuzione su PostgreSQL? Preferirei una sorta di soluzione basata su interfaccia utente di facile utilizzo (esempio: "Profiler" di SQL Server), ma non sono troppo esigente.

risposta

15

Con PostgreSQL 8.4 o superiore è possibile utilizzare il modulo contrib per raccogliere statistiche di esecuzione delle query del server di database.

eseguire lo script SQL di questo modulo contrib pg_stat_statements.sql (su Ubuntu può essere trovato in /usr/share/postgresql/<version>/contrib) nel database e aggiungere questa configurazione di esempio al tuo postgresql.conf (richiede re-start):

custom_variable_classes = 'pg_stat_statements' 
pg_stat_statements.max = 1000 
pg_stat_statements.track = top # top,all,none 
pg_stat_statements.save = off 

Per vedere quali query vengono eseguite in tempo reale, si potrebbe voler semplicemente configurare il log del server per mostrare tutte le query o query con un tempo di esecuzione minimo. Per fare ciò, imposta il logging configuration parameterslog_statement e log_min_duration_statement nel tuo postgresql.conf di conseguenza.

+0

Mentre è una buona risposta, non copre come si potrebbe raccogliere i dati da pg_stat_statements, perché sta cambiando sempre e ha solo statistiche cumulative sulle esecuzioni di query. Per questo è possibile utilizzare alcuni strumenti come https://pganalyze.com/ o https://okmeter.io che mostreranno grafici e informazioni dettagliate sull'esecuzione e il rendimento delle query. Disclaimer - Lavoro per Okmeter. –

0

Purtroppo non l'ho provato, ma penso che pgFouine possa mostrarti delle statistiche.

Sebbene, a quanto pare, non mostra le query in tempo reale, ma genera in seguito un report di query, forse soddisfa ancora la tua richiesta?

Si può dare un'occhiata al http://pgfouine.projects.postgresql.org/

22

PgAdmin offre uno strumento chiamato server monitor abbastanza facile da usare

(Strumenti -> ServerStatus)

+4

Questo strumento sembra essere scomparso in PgAdmin 4. – Lasf

+0

@Lasf - D'accordo ... qualche idea sul perché questo è andato? –