您可以根据业务情况调整RDS MySQL实例的innodb_buffer_pool_size大小,以便提升实例性能。

前提条件

实例系列如下:
  • RDS MySQL高可用版
  • RDS MySQL基础版

内存分配说明

RDS MySQL不同存储类型实例的内存分配情况如下表。

存储类型 mysqld服务 RDS相关管理服务 底层操作系统
本地SSD盘 MySQL服务内存包含很多部分,其中主要为InnoDB Buffer Pool和数据库连接占用内存。MySQL服务内存的更多信息,请参见MySQL官方文档
注意 数据库连接越多,消耗内存越多,请根据实际情况,升级实例内存。
不占用实例规格内存。 不占用实例规格内存。
SSD云盘或ESSD云盘 约占用500MB内存。 约占用500~700MB内存。

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云盘实例规格内存 < 64 GB,默认InnoDB Buffer Pool = (RDS实例规格内存 - RDS系统预留内存) * 0.7
    说明 RDS系统预留内存的计算公式如下:
    MIN(RDS实例规格内存 * 0.65, ((RDS实例规格内存/16384) + 1) * 2048)
  • 如果RDS云盘实例规格内存 ≥ 64 GB,或RDS实例为本地SSD盘,默认InnoDB Buffer Pool = RDS实例规格内存 * 0.7

为方便您设置,下表中提供了各实例内存大小对应的默认Buffer Pool和推荐最大Buffer Pool。

实例内存大小(单位:MB) 默认Buffer Pool(单位:MB) 推荐最大Buffer Pool(单位:MB)
1024 256 256
2048 512 512
4096 1536 1536
8192 4352 4608
16384 8704 9216
24576 14336 15360
32768 18688 19968
49152 28672 30720
65536 45952 49152
98304 68864 73728
131072 91776 98304
196608 137728 147456
229376 160640 172032
262144 183552 196608
393216 275328 294912
491520 344064 368640
786432 550528 589824

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大小

  1. 进入参数设置页面。
    1. 访问RDS实例列表,在上方选择地域,然后单击目标实例ID。
    2. 在左侧导航栏单击参数设置
  2. 找到参数innodb_buffer_pool_size,单击右侧修改进行修改,然后单击确定
    警告 修改innodb_buffer_pool_size会重启实例,请谨慎操作。
    修改参数
  3. 在右上角单击提交参数,在弹出的提示框中单击确定,等待实例重启完成。
    提交参数

使用模板调整InnoDB Buffer Pool大小

您可以新建参数模板修改innodb_buffer_pool_size,然后应用到需要修改的实例。如果已有模板,可以修改模板后应用到需要修改的实例。详情请参见使用参数模板

参数模板修改