Meine Datenbankanwendung führt viele verschiedene Abfragen aus. Ich habe log_min_duration_statement
auf 1000 gesetzt . Aber dort protokollierte Abfragen sind nicht immer langsam, meistens dauern sie nur ein paar ms.
Ist es möglich, eine Statistik aller Abfragen zu erhalten und wie oft haben sie länger als 1000 ms gedauert?
postgresql
performance
user2047809
quelle
quelle
Antworten:
Installieren Sie die Erweiterung pg_stat_statements mit dem SQL-Befehl
CREATE EXTENSION pg_stat_statements
Möglicherweise möchten Sie sicherstellen, dass Sie dies mithilfe eines geeigneten Benutzers erstellen (z. B. des Benutzers, den Ihre Anwendung verwendet, oder eines DBA-Kontos). Beachten Sie, dass jeder Benutzer, der die Erweiterung erstellt, diese auch besitzt.
Dies erfordert einen Neustart des Servers, damit er verwendet werden kann (da Sie die Konfiguration in postgresql.conf geringfügig ändern müssen, was sich auf den Speicherverbrauch auswirkt), aber Sie erhalten Statistiken zu allen Abfragen.
Weitere Informationen zu den Funktionen von pg_stat_statements finden Sie auf der Dokumentationsseite . Siehe hier für eine schnelle Referenz auf Konfiguration der postgresql.conf Konfigurationsdatei für pg_stat_statements.
Sobald Sie es installiert und ausgeführt haben, können Sie Statistiken anzeigen, indem Sie die Ansicht pg_stat_statements abfragen.
quelle
Wie @JoishiBodio sagte, können Sie die
pg_stat_statements
Erweiterung verwenden, um Statistiken für langsame Abfragen anzuzeigen . Für diejenigen, die mit der Installation zu kämpfen haben (wie ich):Überprüfen Sie, ob
pg_stat_statements
in der Liste der verfügbaren Erweiterungen enthalten ist:Versuchen Sie, das
postgresql-contrib
Paket über Ihren Systempaket-Manager unter Debian / Ubuntu zu installieren :Führen Sie dann Schritt 1 erneut aus.
pg_stat_statements
zushared_preload_libraries
in PostgreSQL - Konfiguration:via
postgres.conf
:über Befehlszeilenargumente (keine Anführungszeichen!):
Erstellen Sie dann die Erweiterung in einer Datenbank:
quelle