Sobes.tech
Junior — Middle

Πώς να εντοπίσετε και να αναλύσετε ένα ερώτημα που διαρκεί πολύ στο PostgreSQL;

sobes.tech AI

Απάντηση από AI

Para identificar consultas que tardan mucho en ejecutarse en PostgreSQL, se puede utilizar la vista del sistema pg_stat_activity, que muestra las consultas activas actuales y su tiempo de ejecución. Por ejemplo, la consulta:

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

permitirá ver las 5 consultas activas más largas.

Para un análisis más profundo, se puede habilitar el registro de consultas lentas en postgresql.conf:

log_min_duration_statement = 1000  # registrar consultas que duren más de 1000 ms

Después de esto, todas las consultas que superen ese tiempo se registrarán en los logs.

También es útil usar herramientas de perfilado y EXPLAIN ANALYZE para analizar el plan de ejecución de consultas específicas y detectar cuellos de botella.