Re: Velocidad MySQL
Te recomiendo seguir estos pasos para encontrar el problema:
1. ¿Estás realmente haciendo la misma consulta con los mismos datos? Puedes comprobarlo activando el general query log.
2. ¿Todas las tablas de tu base de datos son *idénticas*? Puedes comprobarlo haciendo SHOW CREATE TABLE. Para poder comparar el rendimiento, las tablas deben ser idénticas caracter por caracter, índices y todo.
3. ¿Los datos son los mismos? Podrías parar los MySQLs y copiar el directorio de datos de uno a otro; así te aseguras de que son idénticos.
4. ¿Tienes memoria libre? Puedes comprobarlo en los linuces con el top. Ejecutando top en una terminal, verás una lista de procesos y una cabecera con 2 líneas, Mem y Swap. La memoria disponible para procesos es la suma de lo que ves en la fila Mem, columna free (3ª), y lo que ves en la fila Swap, columna cached (última). Deberías tener al menos 100 MB en total. De no tener memoria libre, elimina procesos y servicios inútiles o consigue más memoria RAM.
5. Probablemente será un problema de configuración o de thrashing, porque MySQL debería ser más rápido en Linux, y más aún si el hardware es más rápido. Repasa que las opciones de tuning (todas las que no sean de directorios, puertos y cosas así) sean iguales en los archivos de configuración de MySQL de las 3 máquinas (en Linux, típicamente /etc/my.cnf; en Windows, típicamente my.ini en el directorio de instalación).
6. Intenta hacer benchmarks para asegurarte de que no son las máquinas o algo de software. Por ejemplo, puedes probar la CPU en Linux con:
time perl -e 'for($i=10000000;$i;--$i){}'
(también tienes Perl para Windows, pero hay que instalarlo).
Para probar el disco, puedes coger un archivo comprimido, pasarlo a las 2 máquinas, leerlo enteramente con
cp archivo /dev/null
y luego descomprimirlo, midiendo con time lo que tarda.
Supongo que en algún lugar entre los puntos 1 y 6 encontrarás la razón.
Un saludo,
Miguel Pérez
Afina Sistemas - Partner de MySQL en España