对于缓冲池在数 GB 范围内的系统,将缓冲池划分为单独的实例可以提高并发性,方法是减少不同线程读取和写入缓存页面时的争用。此功能通常用于缓冲池大小在数 GB 范围内的系统。使用配置选项配置多个缓冲池实例
innodb_buffer_pool_instances
,您也可以调整该
innodb_buffer_pool_size
值。
当InnoDB
缓冲池很大时,很多数据请求可以通过从内存中检索来满足。您可能会遇到多个线程试图同时访问缓冲池的瓶颈。您可以启用多个缓冲池来最大限度地减少这种争用。使用散列函数将存储在缓冲池中或从中读取的每个页面随机分配给其中一个缓冲池。每个缓冲池管理自己的空闲列表、刷新列表、LRU 和连接到缓冲池的所有其他数据结构,并受其自己的缓冲池互斥体保护。
要启用多个缓冲池实例,请将
innodb_buffer_pool_instances
配置选项设置为大于 1(默认值)到 64(最大值)的值。innodb_buffer_pool_size
此选项仅在您设置为 1GB 或更大的大小时生效
。您指定的总大小将分配给所有缓冲池。为了获得最佳效率,请指定 和 的组合,
innodb_buffer_pool_instances
以便innodb_buffer_pool_size
每个缓冲池实例至少为 1GB。
有关修改InnoDB
缓冲池大小的信息,请参阅第 14.8.3.1 节,“配置 InnoDB 缓冲池大小”。