前言
innodb_buffer_pool_size能够调大,却不能调小至1GB以内,这是为什么?
MySQL 版本:5.7.30
测试环境有台 MySQL 服务器反馈很慢,查看零碎后发现内存使用量已超过90%,并且有大量的SWAP占用:
运行top按内存占用排序,查看系统资源应用状况
能够看到内存占用最多的是java过程和4个mysqld过程。
因为短期内无奈加内存,java内存大小利用不让调整,那就只能想方法压缩mysqld应用的内存大小了。
这台服务器部署了4个 MySQL 实例,其中两个是轻量级利用,数据量非常少,但过后创立的时候配置文件应用的是雷同的配置,所以先拿这两个开刀。
执行上面的命令查看以后innodb buffer pool值
mysql>show global variables like 'innodb_buffer_pool%';
给调配1GB,并不算大(服务器内存16G),但这个实例里交易量和数据量都很小,先试试砍半吧。
从MySQL 5.7开始,innodb_buffer_pool_size必须等于innodb_buffer_pool_chunk_size *innodb_buffer_pool_instances的整数倍才行,详见官网阐明(https://dev.mysql.com/doc/ref...)。
mysql>set global innodb_buffer_pool_size=13421772822;
没想到,竟然报错了!难道是BUG?试试调大innodb_buffer_pool_size
mysql>set global innodb_buffer_pool_size=13421772825;
调大不报错,正百思不得其解,经共事点播,可能是 innodb_buffer_pool_instances 的设置值导致的(官网形容 innodb_buffer_pool_instances 必须在 innodb_buffer_pool_size 大于等于 1G 时才失效),也就是说:
因为innodb_buffer_pool_instances 值为 2,因而 innodb_buffer_pool_size必须大于1GB。
为印证猜想,将innodb_buffer_pool_instances改成1,批改配置文件后重启实例,查看innodb_buffer_pool相干变量值
能够看到innodb_buffer_pool_instances已变成1,再次调低 innodb_buffer_pool_size
mysql>set global innodb_buffer_pool_size=13421772814;
这次设置胜利了,阐明咱们的猜想是正确的。
总结及倡议
- 当 innodb_buffer_pool_size 值低于 1GB时,没必要也不能设置 innodb_buffer_pool_instances 值大于等于 2。
- 一般而言,当 innodb_buffer_pool_size 值不高于 8GB时,没必要设置 innodb_buffer_pool_instances 值大于 1。
- 通常,当 innodb_buffer_pool_size 较大时(大于64GB),innodb_buffer_pool_instances 设置为 8 是个比拟正当的值。
Enjoy MySQL :)
文章举荐:
技术分享 | MGR最佳实际(MGR Best Practice)
https://mp.weixin.qq.com/s/66...
技术分享 | 万里数据库MGR Bug修复之路
https://mp.weixin.qq.com/s/Ia...
Macos零碎编译percona及局部函数在Macos零碎上运算差别
https://mp.weixin.qq.com/s/jA...
技术分享 | 利用systemd治理MySQL单机多实例
https://mp.weixin.qq.com/s/iJ...
产品 | GreatSQL,打造更好的MGR生态
https://mp.weixin.qq.com/s/By...
产品 | GreatSQL MGR优化参考
https://mp.weixin.qq.com/s/5m...
对于 GreatSQL
GreatSQL是由万里数据库保护的MySQL分支,专一于晋升MGR可靠性及性能,反对InnoDB并行查问个性,是实用于金融级利用的MySQL分支版本。
Gitee:
https://gitee.com/GreatSQL/Gr...
GitHub:
https://github.com/GreatSQL/G...
微信&QQ群:
可扫码增加GreatSQL社区助手微信好友,发送验证信息“加群”退出GreatSQL/MGR交换微信群,亦可间接扫码退出GreatSQL/MGR交换QQ群。
本文由博客一文多发平台 OpenWrite 公布!