mysql5.7动态调整buffer pool

块更改:InnoDB缓冲池大小调整

自MySQL 5.7.5以来,我们已经能够动态调整InnoDB缓冲池的大小。这个新功能还引入了一个新变量 - innodb_buffer_pool_chunk_size - 它定义了缓冲池被放大或缩小的块大小。此变量不是动态的,如果配置不正确,可能会导致不希望出现的情况。

先来看看innodb_buffer_pool_size,innodb_buffer_pool_instances和innodb_buffer_pool_chunk_size如何交互:
缓冲池可以容纳多个实例,每个实例被分成块。我们需要考虑一些信息:实例数量从1到64,总块数不应超过1000。

因此,对于具有3GB RAM的服务器,具有8个实例的2GB缓冲池和默认值(128MB)的块,我们将获得每个实例2个块:

这意味着将会有16块。

我不打算解释拥有多个实例的好处,我将专注于调整操作大小。你为什么要调整缓冲池的大小?那么,有几个原因,比如:

    在虚拟服务器上,您可以动态添加更多内存
    对于物理服务器,您可能希望减少数据库内存使用量以让其他进程取而代之
    在数据库大小小于可用RAM的系统上
    如果您预计会有巨大的增长并希望按需增加缓冲池
    减少缓冲池


我们开始减少缓冲池
| innodb_buffer_pool_size | 2147483648 |
| innodb_buffer_pool_instances | 8     |
| innodb_buffer_pool_chunk_size | 134217728 |
 
mysql> set global innodb_buffer_pool_size=1073741824;
Query OK, 0 rows affected (0.00 sec)
 
mysql> show global variables like 'innodb_buffer_pool_size';
+-------------------------+------------+
| Variable_name           | Value      |
+-------------------------+------------+
| innodb_buffer_pool_size | 1073741824 |
+-------------------------+------------+
1 row in set (0.00 sec)


如果我们试图将其降低到1.5GB,那么缓冲池不会改变,并会显示警告:
mysql> set global innodb_buffer_pool_size=1610612736;
Query OK, 0 rows affected, 1 warning (0.00 sec)
 
mysql> show warnings;
+---------+------+--------------------------------------------------------------------------

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值