Uzyskaj statystyki wolno działających zapytań

10

Moja aplikacja bazy danych uruchamia wiele różnych zapytań. Mam ustawiony log_min_duration_statementna 1000. Ale zapytań zalogowany nie zawsze są powolne, większość czasu po prostu potrwać kilka ms.

Czy można uzyskać statystyki wszystkich zapytań i jak często trwały dłużej niż 1000 ms?

użytkownik2047809
źródło
1
Sprawdź, czy to pomoże: ustawienie log_min_duration_statement jest ignorowane . Lub zapomniałeś ponownie załadować konfigurację po zmianie ustawienia.
Daniel Vérité

Odpowiedzi:

11

Zainstaluj rozszerzenie pg_stat_statements za pomocą polecenia SQL

CREATE EXTENSION pg_stat_statements

Możesz się upewnić, że utworzysz to za pomocą odpowiedniego użytkownika (takiego jak użytkownik aplikacji lub konto dba). Pamiętaj, że każdy użytkownik, który utworzy to rozszerzenie, będzie również jego właścicielem.

Będzie to wymagało ponownego uruchomienia serwera, aby był użyteczny (ponieważ musisz zmienić konfigurację w postgresql.conf trochę, co wpływa na zużycie pamięci), ale da ci statystyki dotyczące wszystkich zapytań.

Zobacz stronę dokumentacji, aby uzyskać więcej informacji o tym, co zapewnia pg_stat_statements. Zobacz tutaj, aby uzyskać szybkie odniesienie do konfiguracji pliku konfiguracyjnego postgresql.conf dla pg_stat_statements.

Po zainstalowaniu i uruchomieniu można wyświetlić statystyki, sprawdzając widok pg_stat_statements.

select * from pg_stat_statements;
-- or
select * from pg_stat_statements where total_time / calls > 200; -- etc ..
Joishi Bodio
źródło
2

Jak @JoishiBodio powiedział, że możesz użyć pg_stat_statementsrozszerzenia, aby zobaczyć statystyki powolnych zapytań. Dla tych, którzy mają problem z instalacją (tak jak ja):

  1. Sprawdź, czy pg_stat_statementsznajduje się na liście dostępnych rozszerzeń:

    SELECT * FROM pg_available_extensions;
  2. Spróbuj zainstalować postgresql-contribpakiet za pomocą menedżera pakietów systemowych na Debian / Ubuntu:

    sudo apt-get install postgresql-contrib-9.5

Następnie ponownie wykonaj krok 1.

  1. Dodaj pg_stat_statementsdo shared_preload_librariesw konfiguracji PostgreSQL:

przez postgres.conf:

    shared_preload_libraries = 'pg_stat_statements'

za pomocą argumentów wiersza poleceń (bez cudzysłowów!):

    postgres -c shared_preload_libraries=pg_stat_statements
  1. Następnie utwórz rozszerzenie w bazie danych:

    CREATE EXTENSION pg_stat_statements;
Andrey Semakin
źródło