Sobes.tech
Junior — Middle

Как да идентифицирате и анализирате дълго изпълняващ се заявка в PostgreSQL?

sobes.tech AI

Отговор от 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 ms

След това, всички заявки, които надхвърлят този времеви лимит, ще бъдат записани в логовете.

Също така е полезно да използвате инструменти за профилиране и EXPLAIN ANALYZE за анализ на плана за изпълнение на конкретни заявки и откриване на тесни места.