2013-07-15 15 views
20

Mi piacerebbe vedere quali query sono in esecuzione su un'applicazione diretta Django, e quanta memoria stanno prendendo. Ho letto che pg_stat_activity può essere utile per monitorare un database Postgres.Come usare pg_stat_activity?

ho looked at the Postgres documentation, ma ho una domanda molto semplice che non sembra essere risolta lì.

Come posso effettivamente iniziare con pg_stat_activity? Cosa digito per usarlo e dove lo digito?

+0

Probabilmente è necessario il [modulo pgstatstatements] (http://www.postgresql.org/docs/current/static/pgstatstatements.html), invece. –

risposta

27

Vedi this closely related answer.

pg_stat_activity è una vista nello schema pg_catalog.

È possibile interrogarlo tramite SELECT da esso come qualsiasi altra tabella, ad esempio SELECT * FROM pg_stat_activity. La pagina di manuale che hai collegato spiega le sue colonne.

Vi talvolta trovate a voler aderire su altri tavoli come pg_class (tabelle), pg_namespace (schemi), ecc

pg_stat_activity fa non esporre le informazioni circa l'uso della memoria di back-end. È necessario utilizzare le strutture a livello di sistema operativo per questo. Si fa dirà l'ID di processo, utente attivo, in esecuzione di query, stato di attività, ora l'ultima query iniziato, ecc E 'un bene per l'identificazione di lunga durata idle in transaction sessioni, l'esecuzione di query molto lunghi, ecc

Francamente Il monitoraggio integrato di PostgreSQL è piuttosto rudimentale. È una delle aree su cui non è così eccitante lavorare e spesso i clienti commerciali non sono disposti a finanziarlo. Molte persone accoppiano strumenti come check_postgres con Icinga e Munin, o usano Zabbix o altri agenti di monitoraggio esterni.

Nel tuo caso sembra che tu voglia veramente l'analisi del registro pg_stat_statements e/o PgBadger con le impostazioni di registrazione adeguate e possibilmente il modulo auto_explain.

+0

Grazie per questa risposta! Quindi, solo per coprire le vere basi .... dovrei cominciare a correre il mio script, quindi in una nuova scheda console, aprire una connessione Postgres al mio database e digitare 'select * from pg_stat_activity' e appariranno le varie dichiarazioni. È corretto? – Richard

+1

@Richard No, solo l'istruzione * attualmente in esecuzione *. 'pg_stat_activity' è una visione di ciò che sta accadendo * adesso *. Sembra che tu voglia l'estensione 'pg_stat_statements' e/o PgBadger + auto_explain per me. –

+4

Ancora più corto: 'TABELLA pg_stat_activity;' –