MySQL + Windows 7 + Quad Core = UI Thrashing

0

Estoy ejecutando Windows 7 (profesional) con un Intel Q8400 y MySQL 5.1. Cada vez que tengo una gran cantidad de consultas de MySQL (p. Ej., La inserción o actualización de 10,000-40,000 registros, lo cual toma varios segundos), mi interfaz de usuario tartamudea y se congela. Las aplicaciones generalmente responden (no se congelan) pero no hacen mucho hasta que finaliza la consulta de SQL.

En el uso de la CPU, MySQL consume un procesador completo (25% en el Administrador de tareas) de cada cuatro; Los otros tres están sin usar.

¿Qué puedo hacer para mejorar el rendimiento? Estas consultas se ejecutan durante minutos a veces, por lo que es una molestia bastante importante.

Editar: Tengo un solo SATA HD (Samsung HD502HJ)

ashes999
fuente
Si tuviera que adivinar, diría tu HDD.
Daniel Beck
Tengo un Samsung HD502HJ (SATA, al menos). ¿Cómo puedo saber si es un HDD y, si lo es, qué podría hacer al respecto (aparte de comprar un HDD nuevo / de reemplazo)?
ashes999

Respuestas:

0

Lo más probable es que esto se deba a un cuello de botella en la E / S. Supongo que está utilizando un solo disco duro o un espejo simple. Si cualquiera de los dos es el caso, no tiene un subsistema de disco que proporcione el rendimiento suficiente para soportar consultas tan grandes sin interrupción a otras cosas que se ejecutan en el sistema.

Básicamente, a menos que desee invertir en unos cuantos discos duros más y un buen controlador RAID, tendrá que vivir con él. Las lecturas / escrituras grandes generalmente siempre están vinculadas al disco, no a la CPU en las máquinas modernas.

Edición: A la luz de los comentarios anteriores sobre su OP, no hay mucho que pueda hacer al respecto con un solo disco duro. La mayoría de los servidores que tratan con consultas SQL grandes tienen entre 6 y 8 discos duros. Las mejores prácticas indican que tiene al menos tres conjuntos de discos duros separados físicamente. Una es para el sistema operativo, Swap y la aplicación, otra para las bases de datos y la tercera para los registros de transacciones. Esto evita que se realicen múltiples escrituras de confirmaciones individuales en el mismo volumen.

Básicamente, si desea ejecutar MySQL en un escritorio en lugar de un servidor y hacer consultas grandes, no hay ninguna cantidad de ajuste que pueda hacer para aliviar este cuello de botella.

MDMarra
fuente
¿Cómo puedo verificar si este es el caso? Escuché que Windows 7 tiene algún tipo de característica de "unidad de RAM" incorporada; ¿Podría aprovechar eso para aliviar el problema?
ashes999
@ashes - No, probablemente estés hablando de ReadyBoost. Puedes usar algo como microsoft.com/downloads/en/… para probar su ancho de banda máximo y luego ver el uso del disco durante sus consultas para ver si se completa donde SQLIO dice que lo hará, pero casi puedo garantizar que este es su problema sin que lo ejecute. Las consultas de SQL grandes no estaban destinadas a ejecutarse en un sistema con un solo disco duro.
MDMarra
Ok, voy a tomar su palabra para ello. Sin embargo, decepciona que no hay solución. Estoy usando esta máquina para dev, así que no vale la pena comprar más discos duros.
ashes999
@ashes - Es así como funciona. Puede que valga la pena ver lo que ha establecido para MAXCPU y ejecutar el punto de referencia, sin embargo, solo para estar seguro.
MDMarra
Los discos duros son relativamente baratos, pero para RAID la placa madre tendría que admitirlo, o necesitaría una tarjeta, que se suma.
Bratch
0

Para aprovechar los múltiples procesadores, debe poder crear una aplicación que divida las sentencias de SQL y distribuya el trabajo en varios subprocesos. Esto permitirá que las consultas se inserten esencialmente a 4 veces la velocidad.

g19fanatic
fuente
No es una mala idea...
ashes999