¿Tu API es lenta aunque el servidor tenga recursos?

Analizo consultas, relaciones, índices, N+1 queries y acceso a datos para encontrar cuellos de botella reales, y entrego la latencia medida antes y después.

El problema

Por qué esto acaba costando más de lo que parece

La escena se repite: el panel del servidor está tranquilo —CPU baja, memoria de sobra— y aun así la petición tarda ocho segundos. Se compra una máquina más grande y mejora un diez por ciento. Se añade caché por encima y el problema reaparece en cuanto los datos cambian.

El servidor no está saturado: está esperando. Casi siempre porque una sola respuesta se construye con cientos o miles de idas y vueltas a la base de datos, porque falta un índice en la columna por la que se filtra, o porque el ORM trae la tabla entera para usar dos campos.

Nada de eso se ve leyendo el código. Se ve midiendo, que es lo que hace este servicio.

Cuándo contratar este servicio

Cuatro situaciones en las que este servicio encaja

04 señales

Hay endpoints que tardan segundos

Y el servidor va sobrado de CPU y de memoria mientras tanto.

Todo se degrada según crece la base

Lo que iba bien con mil registros dejó de ir con un millón.

El ORM genera consultas que nadie ha visto

Django, Prisma, Sequelize o Eloquent escribiendo SQL a tu espalda.

Escalar te está saliendo caro

Cada pico de tráfico se resuelve pagando más servidor en vez de arreglar la causa.

Qué se analiza

De la consulta concreta al patrón de acceso que la genera

Cómo se trabaja

Cuatro fases, y lo que pasa en cada una

04 fases
  1. Medición inicial

    Se identifican los endpoints lentos y se registra su latencia actual. Sin esa foto de partida no hay forma de demostrar después que algo mejoró.

  2. Diagnóstico

    Cada consulta crítica pasa por EXPLAIN ANALYZE y se revisa el código que la origina. El resultado es una causa concreta por cada espera, no una sospecha.

  3. Corrección

    Se aplican los cambios: consultas reescritas, índices con su justificación, acceso a datos corregido. Cada cambio se mide por separado para saber cuánto aportó.

  4. Medición final y entrega

    La misma medición del principio, con los mismos datos, y el informe con la diferencia. Si algo no mejoró, también aparece.

Qué recibes

Lo que queda en tus manos cuando esto termina

Caso relacionado

Trabajo propio, con las cifras que se pueden comprobar

PostgreSQL · Rendimiento

De 62 segundos a 0,29 segundos

Un endpoint de listado que disparaba más de 9.000 consultas para construir una sola respuesta: el servidor no estaba saturado, estaba esperando. Reescribí el acceso a datos hasta resolverlo en una única consulta, con los índices que le faltaban.

Latencia
62 s → 0,29 s
Consultas
9.000+ → 1
  • PostgreSQL
  • EXPLAIN ANALYZE
  • Índices
Ver el caso completo

Los tres casos, con su contexto completo, están en su propia sección. Ver todos los casos

Preguntas frecuentes

Lo que se suele preguntar sobre este servicio

04 preguntas

¿Necesitas acceso a producción?

No hace falta escribir en producción para medir. Con una copia de la base con volumen parecido, o con los planes de ejecución reales de las consultas, es suficiente. Los cambios se aplican donde tú decidas y cuando decidas.

¿Garantizas una mejora concreta?

No prometo un número antes de medir: quien lo hace está adivinando. Lo que sí entrego es la medición antes y después con los mismos datos. Si un cambio no aportó nada, aparece en el informe igual que los que sí.

¿Y si el problema no está en la base de datos?

Entonces el informe lo dice y señala dónde está: código de la aplicación, red, serialización o un servicio externo lento. La medición sirve precisamente para dejar de suponer.

¿Trabajas solo con PostgreSQL?

Es donde tengo más profundidad y por eso da nombre al servicio. El patrón N+1 y los problemas de índices se parecen mucho en MySQL, pero si tu motor es otro lo hablamos antes.

Empecemos por el diagnóstico

Cuéntame tu caso. Respondo en menos de 24 h, de lunes a viernes.

Precio orientativo de partida. El alcance se fija tras ver el sistema.