22 votos

Puede MySQL efectivamente tomar ventaja de 64 GB de RAM?

Hemos estado corriendo en un problema donde consultando una tabla que tiene aproximadamente 50 millones de filas, y tiene un índice de tamaño de 4 GB (tamaño de la tabla de alrededor de 6 GB) resultados en la base de datos del servidor de intercambio de memoria, y ralentizar drásticamente. Estoy bastante seguro de que esto tiene que ver con la temp tamaño de la tabla se superó, y que se intercambian en el disco.

Si he actualizado mi servidor de base de datos de 32 GB de RAM, 64 GB de RAM, me pregunto si la base de datos MySQL será capaz de tomar ventaja de esta memoria adicional y no de intercambio. He ido a través de algunas de las variables (por ejemplo, KEY_BUFFER_SIZE, etc...), y que parecen apoyar los valores de ajuste de más de 64 GB. Sin embargo, la documentación de MySQL dice que el tmp_table_size se maximiza a 4 GB.

Por lo que la actualización de la memoria merece la pena? La "consulta-grande-tabla" problema beneficiarse de esta, o es que no ayuda porque el límite de 4 GB? Sé que hay otras posibles soluciones, como la reestructuración de la tabla con particiones en diferentes formas, etc..., pero sin cambiar nada sobre la mesa, sería de memoria adicional de ayuda?

También, en general, hay otros relacionados con la memoria de variables que MySQL no sería capaz de aprovechar al pasar de 32 a 64 GB de RAM?

Estamos utilizando de 64 bits en linux (Ubuntu) como nuestro servidor de base de datos.

Gracias, Galeno

11voto

Steve Mould Puntos 141

Sí - si utiliza InnoDB y he leído intensivo de la carga de trabajo que absolutamente puede tomar ventaja de las grandes cantidades de RAM [suponiendo que el conjunto de datos de ajuste en la mem - su servidor será increíblemente rápida ardiente].

Estoy usando MySQL con InnoDB almacenamiento en 8-16 GB servidores con el trabajo conjunto de montaje en la memoria.

9voto

Martin Puntos 425

Tal vez valdría la pena poner algo más de tiempo y esfuerzo en la investigación de lo que está causando que el sistema de intercambio antes de gastar dinero en la memoria?

32 gb de memoria deja un montón de memoria disponible incluso después de cargar toda la tabla, el índice, y el máximo temp_table en la memoria. Una búsqueda rápida traído hasta estas dos piezas de la documentación que puede ser relevante:

5voto

vmfarms Puntos 2219

Si usted está usando InnoDB, la variable más importante para establecer la es innodb_buffer_pool_size. Yo le pondría a aproximadamente el 80% de la memoria del sistema. Una vez que usted está cachés de calentamiento después de algún uso, su más activo de datos (trabajo conjunto de datos) será en la memoria (innodb_buffer_pool_size) y sus operaciones en que debe ser muy rápido. Con 64 gb de memoria, que sin duda puede caber mucho allí. La memoria es siempre una buena compra para DB servidores.

0voto

MarkR Puntos 2323

Si usted piensa que es debido a una muy grande temp tabla que se ha creado, puede que desee considerar la posibilidad de maneras que usted puede mejorar la consulta para evitar que las tablas temporales.

Usted podría publicar en Stackoverflow un post que contiene el esquema, la consulta, el explicar el plan y algunos detalles fo el problema.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: