¿Cómo aumentar el uso de memoria en el servidor MySQL para mejorar la velocidad?

28

Tengo un servidor Windows 2008 con 8 GB de RAM con IIS7 y MySQL. He estado rastreando el uso de la memoria, la CPU y el disco en el servidor y descubrí que MySQL usa solo 250 MB de RAM, manteniendo los discos muy ocupados, a pesar de que tengo un montón de memoria RAM libre.

En SQL Server puedo configurar fácilmente la cantidad de memoria que quiero que use, estoy buscando la misma configuración en MySQL.

¿Cómo puedo configurar MySQL para usar más memoria y reducir el uso de CPU y disco?

holiveira
fuente

Respuestas:

20

table_cachees la directiva de configuración más útil para cambiar. Cada vez que MySQL accede a una tabla, carga la tabla en la memoria caché. Si tiene una gran cantidad de tablas, es más rápido tenerlas en caché.

Eche un vistazo a las variables de su servidor ejecutando:

show status;

y eche un vistazo a la variable open_tables. Si esto es lo mismo que su table_cachevalor y opened_tablessigue subiendo, entonces necesita aumentar el table_cachevalor en su archivo de configuración. Encontrará un equilibrio al experimentar con estas variables durante las horas pico. Desea configurarlo para que, en las horas pico, haya una cantidad baja opened_tablesincluso después de que el servidor haya estado activo durante mucho tiempo.

key_buffer_sizeTambién es una buena variable para experimentar. Esta variable afecta el tamaño del búfer de índice, y hacer que esta variable sea más grande aumenta la velocidad de manejo de índice de MySQL. Puede mirar las variables con el show variables;comando nuevamente y compararlas key_read_requestscon key_reads. Idealmente, desea que la relación entre estas dos variables sea lo más baja posible, y puede hacerlo aumentando el tamaño de key_buffer_size. Si configura esta variable más alta, tendrá menos escrituras y lecturas directamente desde y hacia el disco, que era su principal preocupación.

James
fuente
11
En realidad, el comando es show status; ver variables de estado como Open_tablesy Opened_tables. table_cacheparece haberse eliminado en versiones recientes de MySQL.
Matt Fenwick el
5

Debe cambiar los valores en el my.cnfarchivo y reiniciar MySQL, aunque también puede cambiar muchos de ellos mientras MySQL se está ejecutando ('SET GLOBAL VARIABLE = value ').

Usted probablemente tendrá que buscar a aumentar key_buffer_size, sort_buffer, read_buffery table_cachepara empezar, y probablemente innodb_buffer_pool_size, si tiene alguna tablas InnoDB. Algunos de estos valores los puede aumentar en gran medida (incluso dos órdenes de magnitud) especialmente dado su hardware. Los valores predeterminados de MySQL son extremadamente conservadores y parecen estar dirigidos a escritorios comunes de uso mixto de hace aproximadamente diez años. Ah, y tenga en cuenta que la versión de 32 bits tendrá problemas para usar más de 2 GB de RAM.

Consulte el Manual de MySQL para obtener más información y orientación.

staticsan
fuente