您可以根据业务情况调整RDS MySQL实例的innodb_buffer_pool_size大小,以便提升实例性能。
前提条件
实例系列如下:
RDS MySQL高可用系列
RDS MySQL基础系列
RDS MySQL集群系列
应用限制
RDS MySQL Serverless实例不支持手动修改innodb_buffer_pool_size参数,实例会根据规格变化自动调整InnoDB Buffer Pool的大小。
InnoDB Buffer Pool大小
RDS实例可以通过参数innodb_buffer_pool_size来调整InnoDB Buffer Pool的大小,当前仅支持通过公式进行修改。公式如下:
{DBInstanceClassMemory*X/Y}
示例
{DBInstanceClassMemory*7/10}
DBInstanceClassMemory为RDS实例规格内存系统变量。
X、Y为分子和分母。
可调整范围为:[128MB, DBInstanceClassMemory * 8 / 10],即最小调整到128 MB,最大调整到RDS实例规格内存的80%。
RDS实例默认InnoDB Buffer Pool大小如下:
如果RDS实例为云盘版通用规格,或RDS实例为本地SSD盘,默认
InnoDB Buffer Pool = RDS实例规格内存 * 3 / 4
。如果RDS实例为云盘版独享规格,默认
InnoDB Buffer Pool = (RDS实例规格内存 - RDS系统预留内存)* 3 / 4
。说明云盘版独享规格中的RDS系统预留内存计算公式如下(单位为MB):
MIN(RDS实例规格内存 / 2, 2048) + MAX(RDS实例规格CPU * 64, RDS实例规格内存 / 64) + (RDS实例规格内存 / 64) + 285
Buffer Pool的默认值是128的整数倍,如果计算出的结果非128的整数倍,则取近似值。如:1024MB内存的默认Buffer Pool计算结果为268,其最接近128整数倍的值为256,则1024MB内存的默认Buffer Pool为256MB。
为方便您设置,下表中提供了云盘版独享规格对应的默认Buffer Pool和推荐最大Buffer Pool。
实例CPU核数 | 实例内存大小(单位:MB) | 默认Buffer Pool(单位:MB) | 推荐最大Buffer Pool(单位:MB) |
2 | 4096 | 1024 | 1024 |
2 | 8192 | 4096 | 4096 |
2 | 16384 | 9216 | 10240 |
4 | 8192 | 4096 | 4096 |
4 | 16384 | 9216 | 10240 |
4 | 32768 | 21504 | 22528 |
8 | 16384 | 9216 | 10240 |
8 | 32768 | 21504 | 22528 |
8 | 65536 | 45056 | 48128 |
12 | 24576 | 15360 | 16384 |
12 | 49152 | 33792 | 35840 |
12 | 98304 | 69632 | 73728 |
16 | 32768 | 21504 | 22528 |
16 | 65536 | 45056 | 48128 |
16 | 131072 | 93184 | 99328 |
24 | 49152 | 32768 | 34816 |
24 | 98304 | 69632 | 73728 |
24 | 196608 | 140288 | 149504 |
32 | 65536 | 45056 | 47104 |
32 | 131072 | 93184 | 99328 |
32 | 262144 | 188416 | 200704 |
52 | 98304 | 67584 | 72704 |
52 | 196608 | 140288 | 149504 |
52 | 393216 | 283648 | 302080 |
64 | 262144 | 188416 | 200704 |
64 | 524288 | 378880 | 403456 |
102 | 786432 | 569344 | 607232 |
104 | 196608 | 138240 | 147456 |
104 | 393216 | 282624 | 302080 |
InnoDB Buffer Pool大小始终为innodb_buffer_pool_chunk_size * innodb_buffer_pool_instances
的倍数,如果不为倍数关系时,会自动修改为倍数关系。例如innodb_buffer_pool_chunk_size * innodb_buffer_pool_instances
= 1 GB,如果将innodb_buffer_pool_size设置为1.5 GB,系统会自动修改innodb_buffer_pool_size为2 GB。
调整单个实例的InnoDB Buffer Pool大小
- 访问RDS实例列表,在上方选择地域,然后单击目标实例ID。
在左侧导航栏单击参数设置。
找到参数innodb_buffer_pool_size,单击右侧进行修改,然后单击确定。
单击提交参数,在弹出的提示框中单击确定。
说明RDS MySQL 5.6的innodb_buffer_pool_size参数修改需要重启,RDS MySQL5.7和8.0则不需要重启。
使用模板调整InnoDB Buffer Pool大小
您可以新建参数模板修改innodb_buffer_pool_size,然后应用到需要修改的实例。如果已有模板,可以修改模板后应用到需要修改的实例。详情请参见使用参数模板。