For systems with buffer pools in the multi-gigabyte range,
dividing the buffer pool into separate instances can improve
concurrency, by reducing contention as different threads read
and write to cached pages. This feature is typically intended
for systems with a buffer
pool size in the multi-gigabyte range. Multiple buffer
pool instances are configured using the
configuration option, and you might also adjust the
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. 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 multiple buffer pool instances, set the
option to a value greater than 1 (the default) up to 64 (the
maximum). This option takes effect only when you set the
innodb_buffer_pool_size to a size of 1
gigabyte or more. The total size you specify is divided among
all the buffer pools. For best efficiency, specify a combination
that each buffer pool instance is at least 1 gigabyte.
For more information about the InnoDB buffer pool, see
Section 8.9.1, “The
InnoDB Buffer Pool”.