Contamos con una aplicación web respaldada por MySQL que atiende cientos de consultas por segundo. Estoy buscando una forma de medir el "costo" de cada consulta en producción. Estoy imaginando alguna opción en la que, para cada consulta, MySQL devuelva los resultados de la consulta junto con el costo de CPU y E/S de ejecutar esa consulta.
El objetivo final es agregar esos costos por punto final (p. ej., "/buscar") y por el ID de usuario que inició sesión. De esa manera, cuando tengamos problemas con el sitio, podemos ver rápidamente si hay una acción en particular o una ID de usuario que esté utilizando una gran parte de nuestros recursos de MySQL.
Cerca pero no del todo (AFAICT):
Esta respuesta se acerca: https://stackoverflow.com/a/12880997/163832
Describe los problemas de precisión y exactitud con EXPLAIN
y recomienda una alternativa que mide lo que realmente sucedió en lugar de estimar lo que sucederá.
La alternativa parece mejor para mi caso de uso, pero todavía hay problemas:
FLUSH STATUS
y luego SHOW SESSION STATUS ...
en cada consulta.