Soy un novato bastante grande cuando se trata de configurar MySQL para el rendimiento. Y, sinceramente, no estoy preocupado por el ajuste fino para exprimir hasta el último rendimiento de MySQL, pero sí sé que lo más importante que proporciona algunos de los mejores resultados es configurar cachés / buffers correctamente.
He tratado de simplificar las cosas usando solo InnoDB como motor de almacenamiento. Y tengo un servidor dedicado para MySQL. Tiene 8 gb de RAM, ¿cómo debo asignar eso para maximizar el rendimiento? Me gustaría poder ajustar toda mi base de datos en la memoria para obtener el mejor rendimiento. La base de datos es de aproximadamente 5 gb. es posible?
¿Cuánta memoria debo asignar al caché de consultas? ¿Cuánto cuesta al grupo de búferes InnoDB? ¿Cuánto para el resto de la computadora (es decir, procesos no relacionados con MySQL)? Etc.
Como no estoy usando MyISAM, ¿realmente no necesito poner mucha memoria en la memoria caché de claves?
En mi humilde opinión deberías poder ir con
Eso sería 62.5% de RAM con una cantidad suficiente de RAM para el SO del servidor más memoria para conexiones DB
@kvisle recomienda usar mysqltuner.pl. Ese script es excelente para juzgar la cantidad de RAM que se dedica a join_buffer_size, sort_buffer_size, read_buffer_size y read_rnd_buffer_size. Esos 4 buffers agregados juntos se multiplican por max_ connections. Esa respuesta se agrega a los buffers estáticos (innodb_buffer_pool_size + key_buffer_size). Se informan las sumas combinadas. Si esa suma combinada excede el 80% de RAM, es cuando debe reducir esos tamaños de búfer. mysqltuner.pl será muy útil a este respecto.
Dado que todos sus datos son InnoDB, puede hacer que key_buffer_size (buffer de clave de caché para índices MyISAM) sea muy bajo (recomiendo 64M).
Aquí hay una publicación que hice en el DBA StackExchange para calcular el tamaño recomendado de innodb_buffer_pool_size .
ACTUALIZACIÓN 2011-10-15 19:55 EDT
Si sabe que tendrá 5 GB de datos, entonces mi primera recomendación fue correcta. Sin embargo, olvidé agregar una cosa:
El tamaño del archivo de registro debe ser el 25% del InnoDB Buffer Pool
ACTUALIZACIÓN 2011-10-16 13:36 EDT
La regla del 25% se basa estrictamente en el uso de dos archivos de registro. Si bien es posible utilizar múltiples archivos de registro innodb, dos generalmente funcionan mejor.
Otros han expresado usar 25%
Sin embargo, para ser justos, alguien de la compañía original de InnoBase Oy expresó que no usaba la regla del 25% debido a que tenía un InnoDB Buffers Pool más grande .
Naturalmente, la regla del 25% no puede funcionar cuando se tienen grandes cantidades de RAM. De hecho, el tamaño más grande de innodb_log_file_size permitido usando solo 2 archivos de registro es 2047M, ya que el tamaño combinado del archivo de registro debe ser inferior a 4G (4096M)
CASO EN PUNTO: Uno de los clientes de mi empleador tiene un servidor de base de datos con 192 GB de RAM. No hay forma de tener archivos de registro 48G. Simplemente uso el tamaño máximo de archivo para un archivo de registro innodb, 2047M. El comentario de @ Kvisle sobre mi respuesta simplemente da un enlace que indica que no tiene que limitarse a dos archivos de registro. Si tiene N archivos de registro, no pueden totalizar 4G. Mi regla del 25% está en un mundo perfecto (Servidor DB con 8GB o menos).
fuente