Ich möchte sehen, welche Abfragen in einer Live-Anwendung Django ausgeführt werden und wie viel Speicher sie belegen. Ich habe gelesen, dass pg_stat_activity
Nützlich sein kann, um eine Postgres-Datenbank zu überwachen.
Ich habe in der Postgres-Dokumentation nachgesehen , aber ich habe eine sehr einfache Frage, die dort nicht beantwortet zu sein scheint.
Wie fange ich eigentlich mit pg_stat_activity
An? Was gebe ich ein, um es zu verwenden, und wo gebe ich es ein?
Siehe diese eng verwandte Antwort .
pg_stat_activity
Ist eine Ansicht im Schema pg_catalog
.
Sie können es abfragen, indem Sie wie jede andere Tabelle SELECT
daraus abrufen, z. B. SELECT * FROM pg_stat_activity
. Auf der von Ihnen verlinkten Handbuchseite werden die Spalten erläutert.
Sie werden manchmal feststellen, dass Sie anderen Tabellen wie pg_class
(Tabellen), pg_namespace
(Schemata) usw. beitreten möchten.
pg_stat_activity
Macht keine Informationen über die Verwendung des Back-End-Speichers verfügbar . Sie müssen dafür Einrichtungen auf Betriebssystemebene verwenden. Es gibt Ihnen die Prozess-ID, den aktiven Benutzer, die aktuell ausgeführte Abfrage, den Aktivitätsstatus, den Zeitpunkt, zu dem die letzte Abfrage gestartet wurde usw. an. Ausführen von idle in transaction
- Sitzungen, sehr lange laufenden Abfragen usw.
Ehrlich gesagt ist die in PostgreSQL integrierte Überwachung eher rudimentär. Es ist einer der Bereiche, an denen es nicht so spannend ist, zu arbeiten, und gewerbliche Kunden sind nicht oft bereit, ihn zu finanzieren. Die meisten Leute kombinieren Tools wie check_postgres
mit Icinga und Munin oder verwenden Zabbix oder andere externe Überwachungsagenten.
In Ihrem Fall klingt es so, als ob Sie wirklich pg_stat_statements
Und/oder PgBadger-Protokollanalyse mit geeigneten Protokollierungseinstellungen und möglicherweise dem Modul auto_explain
Möchten.