web-dev-qa-db-fra.com

Comment utiliser pg_stat_activity?

Je voudrais voir quelles requêtes sont exécutées sur une application live Django, et combien de mémoire elles occupent. J'ai lu que pg_stat_activity peut être utile pour surveiller une base de données Postgres.

J'ai regardé la documentation Postgres , mais j'ai une question très simple à laquelle il ne semble pas y répondre.

Comment puis-je réellement commencer avec pg_stat_activity? Que dois-je taper pour l'utiliser et où dois-je le taper?

25
Richard

Voir cette réponse étroitement liée .

pg_stat_activity est une vue dans le pg_catalog schéma.

Vous pouvez l'interroger en SELECTing comme n'importe quelle autre table, par exemple SELECT * FROM pg_stat_activity. La page de manuel à laquelle vous avez lié explique ses colonnes.

Vous aurez parfois envie de rejoindre d'autres tables comme pg_class (les tables), pg_namespace (schémas), etc.

pg_stat_activity n'expose pas des informations sur l'utilisation de la mémoire principale. Vous devez utiliser des fonctionnalités au niveau du système d'exploitation pour cela. Il vous vous indique l'ID du processus, l'utilisateur actif, la requête en cours d'exécution, le statut de l'activité, l'heure à laquelle la dernière requête a démarré, etc. fonctionnement idle in transaction sessions, requêtes très longues, etc.

Franchement, la surveillance intégrée de PostgreSQL est plutôt rudimentaire. C'est l'un des domaines sur lesquels il n'est pas si excitant de travailler, et les clients commerciaux ne sont pas souvent prêts à le financer. La plupart des gens couplent des outils comme check_postgres avec Icinga et Munin, ou utilisez Zabbix ou d'autres agents de surveillance externes.

Dans votre cas, il semble que vous souhaitiez vraiment pg_stat_statements, et/ou analyse du journal PgBadger avec les paramètres de journalisation appropriés et éventuellement le auto_explain module.

42
Craig Ringer