Sobes.tech
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ł.