Curiosamente, en MySQL 5.5, ahora puede tener múltiples grupos de búferes innodb.
Los parámetros que le interesan son
En aproximadamente un mes, estoy programado para implementar 112 grupos de búferes innodb para un cliente. Te diré cómo te fue.
ACTUALIZACIÓN 2011-02-27 21:57 EDT
Descubrí que el valor máximo para innodb_buffer_pool_instances es 64 Decidí configurar 144 GB, así que configuré innodb_buffer_pool_instances en 18 e innodb_buffer_pool_size en 8. Actualmente estoy cargando el servidor con 450 GB
ACTUALIZACIÓN 2011-04-28 13:44 EDT
Probé varios InnoDB Buffer Pools. Había demasiado enhebrado de bloqueo y contención. Cambié a un único grupo de búfer de 162 GB + configuración de read_io_threads y write_io_threads a 64 (valor máximo). Esto funcionó mucho mejor.
ACTUALIZACIÓN 2012-07-03 17:27 EDT
Aprendí algo sorprendente sobre MySQL. Si asigna un único conjunto de búferes InnoDB monolítico que es más grande que el total instalado dividido por el número de CPU físicas , incitará al sistema operativo a intercambiar la memoria a intervalos regulares debido a un conjunto de búferes InnoDB completo. La opción de MySQL 5.5 conocida como innodb_buffer_pool_instances se puede usar para dividir el grupo de búferes. Ayer, implementé esto correctamente para el cliente que mencioné en mi respuesta el año pasado. Todavía tengo 162GB para el Buffer Pool del cliente. He configurado la opción innodb_buffer_pool_instances del servidor en 2 porque cada servidor de base de datos es hexacore dual. Estaba pensando en configurarlo en 12, pero un colega me mostró un blog de Jeremy Cole sobre MySQL y Swappiness.. Después de leerlo, lo puse en práctica inmediatamente para mi cliente. Ejecuté este comando
numactl --hardware
Vi una asignación de 192 GB de RAM del servidor como 96 GB a cada núcleo físico. Por lo tanto, configuré innodb_buffer_pool_instances en 2. Las cosas se ven bien en este momento. Actualizaré mi respuesta para ver cómo esto afecta el intercambio de memoria para los próximos 2 meses.