mysql innodb_buffer_pool_size 大小设置问题

**

mysql innodb_buffer_pool_size 大小设置问题

**

前几天测试环境起了个新的实例由于测试环境服务器配置较低打算把innodb_buffer_pool_size设置为500M,发生报错 ERROR 1231 (42000): Variable ‘innodb_buffer_pool_size’ can’t be set to the value of ‘536870912’
,记录一下问题和解决的方案。

作者:zhou

mysql版本:5.7

在这里插入图片描述
看一下原来的innodb_buffer_pool_size为10G,和设置为500M的时候报错ERROR 1231 (42000): Variable ‘innodb_buffer_pool_size’ can’t be set to the value of ‘536870912’。
查看了一下官方文档发现innodb_buffer_pool_size的大小设置和innodb_buffer_pool_chunk_size还有innodb_buffer_pool_instances参数设定有关系。

innodb_buffer_pool_size 参数为innodb_buffer_pool的大小设置。
innodb_buffer_pool_chunk_size参数为InnoDB缓冲池块大小。
innodb_buffer_pool_instances参数为缓冲池实例的个数。

在这里插入图片描述

可以看到现在innodb_buffer_pool_chunk_size的大小为默认的大小128M,innodb_buffer_pool_instances的设置为 9 。

但是呢,innodb_buffer_pool_size的大小是怎么计算的?
innodb_buffer_pool_size = innodb_buffer_pool_chunk_size * innodb_buffer_pool_instances * N(N为正整数),这个计算方式是什么意思呢为什么N要为正整数?,在启动Mysql的时候,Mysql会读取配置文件的innodb_buffer_pool_size 的大小,例如你设置为了10G innodb_buffer_pool_size/innodb_buffer_pool_chunk_size/innodb_buffer_pool_instances (10737418240/134217728/9) 要为正整数,否则系统会将你设置的innodb_buffer_pool_size调整为大于你设定的参数的最接近缓冲池块大小*缓冲池实例的个数的正整数倍数。


看图片就明白了如果你设置的buffer_pool大小不为 innodb_buffer_pool_chunk_size * innodb_buffer_pool_instances的正整数的话系统会把你设置的参数调整为大于你设定的参数的正整数倍数。

注意了innodb_buffer_pool_chunk_size和innodb_buffer_pool_instances参 数在5.7版本和8.0版本都是不支持在线修改的,后面不知道会不会加上online 修改 。

介绍了一下innodb_buffer_pool_size的大小设定规则,还是没解决到一开始的问题,为什么设置大小为 500M 会报错呢?

其实和一开始介绍的innodb_buffer_pool_instances还有innodb_buffer_pool_chunk_size参数的设定有关系,系统默认的innodb_buffer_pool_chunk_size为128M, innodb_buffer_pool_instances参数我设置的是9,两个参数相乘大于500M的设定,要设定buffer_pool大小为500M或者更小的话只需要在配置文件中调整innodb_buffer_pool_instances的个数或者innodb_buffer_pool_chunk_size的大小即可。

题外:
innodb_buffer_pool_instances参数的默认设置为1 最大设置为64 ,但是将innodb_buffer_pool_size大小设置为1GB或更大时,此选项才生效。

这篇写的是有关innodb_buffer_pool的文章,后面有机会的话会尝试写写深入点或者介绍更多有关innodb_buffer_pool的文章,innodb_buffer_pool是mysql及其重要的一个参数。

我是zhou,如果需要转发请注明出处。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值