Czy możliwe jest uzyskanie historii zapytań wykonanych w postgres
Czy możliwe jest uzyskanie historii zapytań wykonanych w postgres? i czy można uzyskać czas potrzebny na każde zapytanie? Obecnie próbuję zidentyfikować wolne zapytania w aplikacji, nad którą pracuję.
Używam Postgres 8.3.5
8 answers
Nie ma historii w samej bazie danych, jeśli używasz psql, możesz użyć "\ s", aby zobaczyć tam historię poleceń.
Możesz uzyskać przyszłe zapytania lub inne rodzaje operacji w plikach dziennika, ustawiając log_statement w postgresql.plik conf. To, co prawdopodobnie chcesz zamiast tego, to log_min_duration_statement , które Jeśli ustawisz na 0, zarejestruje wszystkie zapytania i ich czas trwania w dziennikach. Może to być pomocne, gdy twoje aplikacje wejdą w życie, jeśli ustawisz to na wyższa wartość zobaczysz tylko długie zapytania, które mogą być pomocne w optymalizacji(możesz uruchomić EXPLAIN ANALYZE na zapytaniach, które tam znajdziesz, Aby dowiedzieć się, dlaczego są powolne).
Kolejną przydatną rzeczą w tej dziedzinie jest to, że jeśli uruchomisz psql i powiesz mu "\timing", pokaże on, jak długo trwa każde polecenie po tym. Więc jeśli Masz plik sql, który wygląda tak:
\timing
select 1;
Możesz uruchomić go z odpowiednimi flagami i zobaczyć każde polecenie przeplatane z tym, jak długo ono wziął. Oto jak i jak wygląda wynik:
$ psql -ef test.sql
Timing is on.
select 1;
?column?
----------
1
(1 row)
Time: 1.196 ms
Jest to przydatne, ponieważ nie musisz być superużytkownikiem bazy danych, aby go używać, w przeciwieństwie do zmiany pliku konfiguracyjnego, i jest łatwiejsze w użyciu, jeśli tworzysz nowy kod i chcesz go przetestować.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-10-06 04:37:04
Jeśli chcesz zidentyfikować wolne zapytania, niż Metoda jest użycie ustawienia log_min_duration_statement (w postgresql.conf lub set per-database with ALTER DATABASE SET).
Po zalogowaniu danych możesz użyć grepa lub niektórych specjalistycznych narzędzi-takich jakpgFouine lub mój własnyanalyzer - który nie ma odpowiednich dokumentów, ale mimo to działa całkiem dobrze.
Jeśli pytaniem jest Zobacz historię zapytań wykonanych w wierszu poleceń. Odpowiedź to
Zgodnie z Postgresql 9.3
, Spróbuj \?
w wierszu poleceń znajdziesz wszystkie możliwe polecenia, w tym przeszukiwaniu historii,
\s [FILE] display history or save it to file
W linii poleceń spróbuj \s
. Spowoduje to wyświetlenie historii zapytań, które zostały wykonane w bieżącej sesji. możesz również zapisać do pliku, Jak pokazano poniżej.
hms=# \s /tmp/save_queries.sql
Wrote history to file ".//tmp/save_queries.sql".
hms=#
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-06-17 09:29:42
Możesz użyć jak
\s
Pobierze ci całą historię poleceń terminala, aby wyeksportować go do pliku za pomocą
\s filename
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-08-18 12:06:03
PgBadger to kolejna opcja-również tutaj: https://github.com/dhamaniasad/awesome-postgres#utilities
Wymaga dodatkowej konfiguracji z wyprzedzeniem, aby przechwycić niezbędne dane w dziennikach postgres, zobacz oficjalną stronę internetową.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-29 06:20:31
Dla tych, którzy używają UI Navicat:
Musisz ustawić swoje preferencje, aby używać pliku jako where
do przechowywania historii.
Jeśli to jest puste, Navicat będzie pusty.
PS: nie mam powiązania ani związku z Navicat lub jego oddziałów. Szukam pomocy.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-09 23:45:58
Nie ma historii w samej bazie danych, ale jeśli używasz narzędzia do zarządzania danymi DataGrip, możesz sprawdzić historię twojego uruchomienia w datagrip.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-09-17 06:26:36
Nie loguje się, ale jeśli rozwiązujesz problemy z wolno działającymi zapytaniami w czasie rzeczywistym, możesz odpytywać widok pg_stat_activity
, aby zobaczyć, które zapytania są aktywne, użytkownik/połączenie, z którego pochodzą, kiedy zostały uruchomione, itp. Np...
SELECT *
FROM pg_stat_activity
WHERE state = 'active'
Zobacz pg_stat_activity
Zobacz dokumenty .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2021-02-10 03:28:10