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.
źródło
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)
źródło
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.
źródło
Opcjonalnie, jeśli używasz pgAdmin (na moim zdjęciu jest to pgAdmin 4 v2.1). Zapytania można obserwować na karcie „Pulpit nawigacyjny”:
źródło
Możesz użyć rozszerzenia pg_stat_statements .
Jeśli uruchamiasz bazę danych w dockerze, po prostu dodaj to polecenie, w
docker-compose.yml
przeciwnym razie po prostu spójrz na instrukcje instalacji dla swojej konfiguracji: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.
źródło