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 за анализ на плана за изпълнение на конкретни заявки и откриване на тесни места.