InnoDB buffer pool 是被分成区域的数量, 对于系统 buffer pools在多个G的范围,
把buffer pool 到单独的实例可以改善并发,通过降低竞争因为不同的线程读和写cached pages.
每个page 是存储在或者从buffer pool读取是随机分配到buffer pool实例其中一个,
使用一个hash 函数。每个buffer pool 管理它自己的free lists,flush lists,LRUs和
所有其他数据结构连接到buffer pool,是有它自己的buffer pool mutex保护
这个选项只有当设置 innodb_buffer_pool_size 值大于1G时才生效。
总共你指定的大小是分配给所有的buffer pools。
为了最好的性能, 指定Innodb_buffer_pool_instances 和innodb_buffer_pool_size 的组合
每个buffer pool 实例至少1GB
在MySQL 5.6.6之前,默认是1, 默认值 在MySQL 5.6.6和更高版本在32位系统取决于innodb_buffer_pool_size的值
mysql> show variables like '%innodb_buffer_pool_instances%';
+------------------------------+-------+
| Variable_name | Value |
+------------------------------+-------+
| innodb_buffer_pool_instances | 8 |
+------------------------------+-------+
1 row in set (0.00 sec)