14.4.3.2 Configuring Multiple Buffer Pool Instances 配置多个buffer pool 实例: 对于系统 buffer pool 有多个G的范围, 把buffer pool 分成多个单独的实例可以改进并发, 降低不同threads 读取和写到cached pages 的竞争。 这个功能是典型的用于系统有多个G范围的buffer pool size . 多个buffer poll 实例是通过 innodb_buffer_pool_instances 配置选项, 你也需要调整 innodb_buffer_pool_size对应的值 +-------------------------+------------+
| Variable_name | Value |
+-------------------------+------------+
| innodb_buffer_pool_size | 8589934592 |
+-------------------------+------------+
1 row in set (0.00 sec) mysql> show variables like '%innodb_buffer_pool_instances%';
+------------------------------+-------+
| Variable_name | Value |
+------------------------------+-------+
| innodb_buffer_pool_instances | 8 |
+------------------------------+-------+
1 row in set (0.00 sec) 当InnoDB buffer pool 是大的,很多的数据请求可以被满足通过从内存中检索。 你可能遇到多个threads 同时访问buffer pool的瓶颈。 你可以启用多个buffer pools 来最小化竞争。 每个page 存储或者读取是buffer pool 分配到一个随机的buffer pool里, 使用一个hashing function. 每个buffer pool 管理它自己的free lists,flush lists,LRU和所有其他数据结构 又它自己的buffer pool mutex 保护。 启用 multiple buffer pool instances, 设置 innodb_buffer_pool_instances 配置选项 值大于1最大到64. 这个选项生效只有当你设置 innodb_buffer_pool_size 到大于1GB. 你指定的总大小是被分到所有的buffer pools. 为了最好的性能,指定一个组合 innodb_buffer_pool_instances and innodb_buffer_pool_size 每个buffer pool 实例 至少是1GB