me gusta la herramienta mytop. Es como top
en el mundo * nix, pero para MySQL. Y básicamente hace exactamente lo que está pidiendo ...
En cuanto a otras técnicas de optimización, personalmente me gusta usar Apache Bench para probar las consultas de MySQL. Básicamente, creo un script simple que no hace más que ejecutar la consulta que quiero mejorar. Luego, ejecuto AB en él con diferentes configuraciones de concurrencia. El beneficio es que se hace una idea de cómo se escala la consulta, no solo qué tan rápido se ejecute. A quién le importa si una consulta es rápida para una sola ejecución. Lo que realmente te importa es qué tan rápido en carreras con carga. Por lo tanto:
<?php
$my = new MySQLi($host, $user, $pass);
$my->query('SELECT foo');
Luego, utilizando AB:
ab -c 10 -n 10000 http://localhost/path/to/my/test.php
Entonces, ajustando el parámetro de concurrencia (-c 10
) se puede comprobar la diferente carga concurrente. De esta forma, realmente puede ver cómo los ajustes afectan la consulta exacta en lugar de adivinar con otras métricas.