Sobes.tech
Junior — Middle

Come individuare e analizzare una query che richiede molto tempo in PostgreSQL?

sobes.tech AI

Risposta dell'AI

Per individuare query che richiedono molto tempo in PostgreSQL, si può utilizzare la vista di sistema pg_stat_activity, che mostra le query attive correnti e il loro tempo di esecuzione. Ad esempio, la query:

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

permetterà di vedere le 5 query attive più lunghe.

Per un'analisi più approfondita, si può abilitare il logging delle query lente nel file postgresql.conf:

log_min_duration_statement = 1000  # loggare le query che durano più di 1000 ms

Dopo di che, tutte le query che superano questo tempo verranno registrate nei log.

È anche utile usare strumenti di profiling e EXPLAIN ANALYZE per analizzare il piano di esecuzione di query specifiche e individuare i colli di bottiglia.