【大白话系统】MySQL 学习总结 之 缓冲池(Buffer Pool) 如何支撑高并发和动态调整 (2)

由于 Buffer Pool 的实例数是不可以变的,所以是每个 Buffer Pool 增加 2G 的大小,此时只要给每个 Buffer Pool 申请 (2000M/128M)个chunk就行了,但是要注意的是,新增的每个 chunk 都是连续的128M内存。

四、生产环境中,应该给 Buffer Pool 设置多大的内存 1、如何设置 Buffer Pool 的总内存大小

我们都知道,给 Buffer Pool 分配越大的内存,MySQL 的并发性能就越好。那是不是都应该将百分之九十九的机器的内存都分配给 Buffe Pool 呢?

那当然不是了!

先不说操作系统内核也需要几个G内存,MySQL 除了 Buffer Pool 还有很多别的内存数据结构呢,这些都是需要内存的,所以说,上面的想法是绝对不行的!

比较合理的比例,应该是 Buffer Pool 的内存大小占机器总内存的 50% ~ 60%,例如机器的总内存有32G,那么你给 Buffer Pool 分配个20G左右就挺合理的了。

2、如何设置 Buffer Pool 的实例数

Buffer Pool 的总大小搞定了,那应该设置多少个实例数呢?

这里有一个公式:Buffer Pool 总大小 = (chunk 大小 * Buffer Pool数量)* n倍

上个例子解释一下。

假设此时 Buffer Pool 的总大小为 8G,即 8192M,那么 Buffer Pool 的数量应该是多少个呢?

8192 = ( 128 * Buffer Pool 数量)* n

64 个:也是可以的,但是每个 Buffer Pool 就只要一个 chunk。

16 个:也是可以的,每个 Buffer Pool 拥有四个 chunk。

8 个:也是可以的,每个 Buffer Pool 拥有八个 chunk。

所以说,只要你的 Buffer Pool 数量符合上面的公式,其实都是可以的,看你们根据业务后怎么选择了。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpxwxf.html