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.