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