Answers:
有趣的是,在MySQL 5.5中,您现在可以拥有多个innodb缓冲池。
您关心的参数是
在大约一个月的时间里,我计划为客户端实现112个innodb缓冲池。我会让你知道这是怎么回事。
我发现innodb_buffer_pool_instances的最大值是64,我决定配置144 GB,因此我将innodb_buffer_pool_instances设置为18,将innodb_buffer_pool_size设置为8。我当前正在为服务器加载450GB
我尝试了多个InnoDB缓冲池。线程锁定和争用过多。我切换到一个162GB的缓冲池+将read_io_threads和write_io_threads设置为64(最大值)。这工作得更好。
我学到了一些关于MySQL的惊人知识。如果您分配的单个整体式InnoDB缓冲池大于已安装的总数量除以物理CPU数量,则由于InnoDB缓冲池已满,将促使操作系统定期更换内存。MySQL 5.5的选项innodb_buffer_pool_instances可用于拆分缓冲池。昨天,我为去年在回答中提到的客户正确实施了此操作。我的客户端缓冲池还有162GB。我已将服务器的innodb_buffer_pool_instances选项设置为2,因为每个数据库服务器都是双六核的。我原本打算将其设置为12,但后来一位同事向我展示了Jeremy Cole的有关MySQL和Swappiness的博客。阅读后,我立即为我的客户将其付诸实践。我跑了这个命令
numactl --hardware
我看到了192GB的服务器RAM和96GB到每个物理核心的映射。因此,我将innodb_buffer_pool_instances设置为2。现在情况看起来很好。我将更新答案,以了解这如何影响接下来2个月的内存交换。
您最常更改哪些配置参数的默认值?
内存配置