pg_stat_statements
La extensión de PostgreSQL que responde a la pregunta "qué es lo que realmente consume tiempo en esta base de datos". Lo primero que hay que activar en producción, y casi siempre lo único que hace falta.
La extensión normaliza cada sentencia SQL sustituyendo las constantes por marcadores de posición, de modo que mil llamadas con IDs distintos cuentan como una sola entrada. Para cada entrada recoge el número de llamadas, el tiempo total y medio de ejecución, la desviación estándar, el número de filas, y las lecturas y escrituras contra buffers y disco. Ordenar por tiempo total en lugar de por media es lo que revela al verdadero culpable — una consulta de dos milisegundos ejecutada un millón de veces cuesta más que el informe que tarda un minuto una vez por noche. Requiere cargar la librería en shared_preload_libraries, y por tanto un reinicio.