关于mysql:技术分享-innodbbufferpoolsize为什么无法调低至1GB以内

30次阅读

共计 1977 个字符,预计需要花费 5 分钟才能阅读完成。

前言

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 公布!

正文完
 0