it-swarm.com.de

Abrufen von Statistiken zu langsam laufenden Abfragen

Meine Datenbankanwendung führt viele verschiedene Abfragen aus. Ich habe gesetzt log_min_duration_statement bis 1000. 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?

10
user2047809

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 unter Dokumentationsseite . Unter hier finden Sie eine Kurzreferenz zur Konfiguration der Konfigurationsdatei postgresql.conf 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.

select * from pg_stat_statements;
-- or
select * from pg_stat_statements where total_time / calls > 200; -- etc ..
11
Joishi Bodio

Wie @JoishiBodio sagte, können Sie die Erweiterung pg_stat_statements Verwenden, um Statistiken zu langsamen Abfragen anzuzeigen. Für diejenigen, die mit der Installation zu kämpfen haben (wie ich):

  1. Überprüfen Sie, ob pg_stat_statements In der Liste der verfügbaren Erweiterungen enthalten ist:

    SELECT * FROM pg_available_extensions;
    
  2. Versuchen Sie, das Paket postgresql-contrib Über Ihren Systempaket-Manager unter Debian/Ubuntu zu installieren:

    Sudo apt-get install postgresql-contrib-9.5
    

Führen Sie dann Schritt 1 erneut aus.

  1. Fügen Sie pg_stat_statements Zu shared_preload_libraries In der PostgreSQL-Konfiguration hinzu:

über postgres.conf:

    shared_preload_libraries = 'pg_stat_statements'

über Befehlszeilenargumente (keine Anführungszeichen!):

    postgres -c shared_preload_libraries=pg_stat_statements
  1. Erstellen Sie dann die Erweiterung in einer Datenbank:

    CREATE EXTENSION pg_stat_statements;
    
2
Andrey Semakin