MySQL 8.3 Release Notes
对于缓冲池大小在多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
缓冲池大小的信息,请参阅 第 17.8.3.1 节,「配置 InnoDB 缓冲池大小」。