Junior — Middle
Jak zidentyfikować i przeanalizować długo trwające zapytanie w PostgreSQL?
sobes.tech AI
Odpowiedź od AI
Aby zidentyfikować zapytania trwające długo w PostgreSQL, można użyć widoku systemowego pg_stat_activity, który pokazuje aktualne aktywne zapytania i ich czas wykonywania. Na przykład, zapytanie:
SELECT pid, now() - query_start AS duration, query
FROM pg_stat_activity
WHERE state = 'active'
ORDER BY duration DESC
LIMIT 5;
pozwoli zobaczyć 5 najdłużej trwających aktywnych zapytań.
Dla głębszej analizy można włączyć logowanie wolnych zapytań w pliku postgresql.conf:
log_min_duration_statement = 1000 # logowanie zapytań trwających dłużej niż 1000 ms
Po tym, w logach będą zapisywane wszystkie zapytania przekraczające ten czas.
Przydatne jest także korzystanie z narzędzi profilowania i EXPLAIN ANALYZE do analizy planu wykonania konkretnych zapytań i wykrywania wąskich gardeł.