Sobes.tech
Back to questions
Junior — Middle
85

Каким образом выявить и проанализировать долго выполняющийся запрос в PostgreSQL?

Companies where asked
Магнит Тех

Answer from AI

sobes.tech AI

Для выявления долго выполняющихся запросов в PostgreSQL можно использовать системный представление pg_stat_activity, которое показывает текущие активные запросы и их время выполнения. Например, запрос:

SELECT pid, now() - query_start AS duration, query
FROM pg_stat_activity
WHERE state = 'active'
ORDER BY duration DESC
LIMIT 5;

позволит увидеть 5 самых долгих активных запросов.

Для более глубокого анализа можно включить логирование медленных запросов в postgresql.conf:

log_min_duration_statement = 1000  # логировать запросы дольше 1000 мс

После этого в логах будут записываться все запросы, выполняющиеся дольше указанного времени.

Также полезно использовать инструменты профилирования и EXPLAIN ANALYZE для анализа плана выполнения конкретных запросов и выявления узких мест.