MySQL 5.5 Reference Manual

13.7.7.18. Improvements to Performance from Multiple Buffer Pools

This performance enhancement is primarily useful for people with a
large buffer pool size,
typically in the multi-gigabyte range. To take advantage of this
speedup, you must set the new
innodb_buffer_pool_instances configuration
option, and you might also adjust the
innodb_buffer_pool_size value.

When the InnoDB buffer pool is large, many data requests can be
satisfied by retrieving from memory. You might encounter
bottlenecks from multiple threads trying to access the buffer pool
at once. Starting in InnoDB 1.1 and MySQL 5.5, you can enable
multiple buffer pools to minimize this contention. Each page that
is stored in or read from the buffer pool is assigned to one of
the buffer pools randomly, using a hashing function. Each buffer
pool manages its own free lists, flush lists, LRUs, and all other
data structures connected to a buffer pool, and is protected by
its own buffer pool mutex.

To enable this feature, set the
innodb_buffer_pool_instances configuration
option to a value from 1 (the default) to 64 (the maximum). This
option only takes effect when you set the
innodb_buffer_pool_size to a size of 1 gigabyte
or more. The total size you specify is divided up among all the
buffer pools. We recommend specifying a combination of
innodb_buffer_pool_instances and
innodb_buffer_pool_size so that each buffer
pool instance is at least 1 gigabyte.