对于缓冲池在数 GB 范围内的系统,将缓冲池划分为单独的实例可以通过减少不同线程读取和写入缓存页面时的争用来提高并发性。此功能通常适用于缓冲池大小在多 GB 范围内的系统。使用innodb_buffer_pool_instances 配置选项配置多个缓冲池实例 ,您也可以调整该 innodb_buffer_pool_size值。
当InnoDB缓冲池很大时,可以通过从内存中检索来满足很多数据请求。您可能会遇到试图同时访问缓冲池的多个线程的瓶颈。您可以启用多个缓冲池以最大程度地减少这种争用。使用散列函数将存储在缓冲池中或从缓冲池中读取的每个页面随机分配给其中一个缓冲池。每个缓冲池管理自己的空闲列表、刷新列表、LRU 以及连接到缓冲池的所有其他数据结构。在 MySQL 8.0 之前,每个缓冲池都由自己的缓冲池互斥锁保护。在 MySQL 8.0 及更高版本中,缓冲池互斥锁被多个列表和哈希保护互斥锁替换,以减少争用。
要启用多个缓冲池实例,请将innodb_buffer_pool_instances配置选项设置为 大于 1(默认值)到 64(最大值)的值。此选项仅在您设置innodb_buffer_pool_size为 1GB 或更大的大小时生效 。您指定的总大小在所有缓冲池之间分配。为了获得最佳效率,指定的组合 innodb_buffer_pool_instances 和innodb_buffer_pool_size,使得每个缓冲池实例是至少为1GB。
有关修改InnoDB缓冲池大小的信息,请参阅第 15.8.3.1 节,“配置 InnoDB 缓冲池大小”。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




