Junior — Middle
Jak identifikovat a analyzovat dlouhotrvající dotaz v PostgreSQL?
sobes.tech AI
Odpověď od AI
Pro identifikaci dlouhotrvajících dotazů v PostgreSQL lze použít systémový pohled pg_stat_activity, který zobrazuje aktuální aktivní dotazy a jejich dobu běhu. Například dotaz:
SELECT pid, now() - query_start AS duration, query
FROM pg_stat_activity
WHERE state = 'active'
ORDER BY duration DESC
LIMIT 5;
umožní zobrazit 5 nejdelších aktivních dotazů.
Pro hlubší analýzu lze povolit zaznamenávání pomalých dotazů v souboru postgresql.conf:
log_min_duration_statement = 1000 # zaznamenávat dotazy trvající déle než 1000 ms
Po tomto budou všechny dotazy překračující tuto dobu zaznamenány do logů.
Také je užitečné používat nástroje profilování a EXPLAIN ANALYZE k analýze plánu provádění konkrétních dotazů a identifikaci úzkých míst.