Czy istnieje odpowiednik PostgreSQL dla programu profilującego SQL Server?


84

Muszę zobaczyć zapytania przesłane do serwera PostgreSQL. Zwykle użyłbym programu profilującego SQL Server, aby wykonać tę akcję w środowisku SQL Server, ale jeszcze nie znalazłem, jak to zrobić w PostgreSQL. Wygląda na to, że jest sporo płatnych narzędzi, mam nadzieję, że istnieje wariant open source.

Odpowiedzi:


59

Możesz użyć ustawienia konfiguracji log_statement, aby uzyskać listę wszystkich zapytań do serwera

https://www.postgresql.org/docs/current/static/runtime-config-logging.html#guc-log-statement

Po prostu ustaw to i ścieżkę do pliku logowania, a będziesz mieć listę. Możesz również skonfigurować go tak, aby rejestrował tylko długo działające zapytania.

Następnie możesz wziąć te zapytania i uruchomić na nich EXPLAIN, aby dowiedzieć się, co się z nimi dzieje.

https://www.postgresql.org/docs/9.2/static/using-explain.html


1
idealnie, rzucił ogon -f przeciwko niemu
BozoJoe

6
Cóż, trudno nazwać pliki dziennika .csv „odpowiednikiem programu SQL Server profiler” ...
Feofilakt

31

Dodając do odpowiedzi Joshua, aby zobaczyć, które zapytania są aktualnie uruchomione, po prostu wydaj następującą instrukcję w dowolnym momencie (np. W oknie zapytania PGAdminIII):

SELECT datname,procpid,current_query FROM pg_stat_activity;

Przykładowe dane wyjściowe:

     datname    | procpid | current_query
 ---------------+---------+---------------
  mydatabaseabc |    2587 | <IDLE>
  anotherdb     |   15726 | SELECT * FROM users WHERE id=123 ;
  mydatabaseabc |   15851 | <IDLE>
 (3 rows)

4
W mojej wersji PG (9.3) użyłem następującego zapytania: SELECT nazwa_danych, pid, nazwa_użytkownika, nazwa_aplikacji, adres_klienta, zapytanie FROM pg_stat_activity; pg_stat_activity to widok bazy danych 'postgresql'
mrmuggles

3
SELECT client_addr, state_change, zapytanie FROM pg_stat_activity;
Dmitry Dyachkov

3
Długość kolumny „zapytanie” jest za krótka, aby wyświetlić długie zapytania.
Dejan Janjušević

25

Odkryłem pgBadger ( http://dalibo.github.io/pgbadger/ ) i jest to fantastyczne narzędzie, które wielokrotnie uratowało mi życie. Oto przykład raportu: http://dalibo.github.io/pgbadger/samplev4.html . Jeśli go otworzysz i przejdziesz do menu „górnego”, zobaczysz najwolniejsze zapytania i czasochłonne zapytania. Następnie możesz zapytać o szczegóły i zobaczyć ładne wykresy, które pokazują zapytania według godziny, a jeśli użyjesz przycisku szczegółów, możesz zobaczyć tekst SQL w ładnej formie. Widzę więc, że to narzędzie jest bezpłatne i doskonałe.


2
Całkiem niezłe narzędzie. Użyłem tego samouczka, aby go zainstalować, ponieważ oficjalny dokument jest dość rozwlekły
mrmuggles

5
Tylko uwaga, narzędzie jest przeznaczone tylko dla systemów * nix, co jest do bani dla użytkowników systemu Windows
Alex Klaus

+1, ponieważ OP poprosił o narzędzie takie jak Sql Server Profiler, a nie opcje konfiguracji, aby ręcznie wyodrębnić potrzebne informacje o wydajności.
EAmez

17

Muszę zobaczyć zapytania przesłane do serwera PostgreSQL

Opcjonalnie, jeśli używasz pgAdmin (na moim zdjęciu jest to pgAdmin 4 v2.1). Zapytania można obserwować na karcie „Pulpit nawigacyjny”: zapytanie pgadmin4 z aplikacji, dashboard


2
To nie może pokazać długich instrukcji SQL. Kod SQL zostaje obcięty.
Dejan Janjušević

0

Możesz użyć rozszerzenia pg_stat_statements .

Jeśli uruchamiasz bazę danych w dockerze, po prostu dodaj to polecenie, w docker-compose.ymlprzeciwnym razie po prostu spójrz na instrukcje instalacji dla swojej konfiguracji:

command: postgres -c shared_preload_libraries=pg_stat_statements -c pg_stat_statements.track=all -c max_connections=200

A następnie w bazie danych uruchom zapytanie:

CREATE EXTENSION pg_stat_statements;

Teraz, aby zobaczyć operacje, które zajęły więcej czasu:

SELECT * FROM pg_stat_statements ORDER BY total_time/calls DESC LIMIT 10;

Lub baw się innymi zapytaniami dotyczącymi tego widoku, aby znaleźć to, czego szukasz.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.