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

内存分配说明

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 ],即最小调整到128MB,最大调整到RDS实例规格内存的80%。

RDS实例默认InnoDB Buffer Pool大小如下:

  • 如果RDS云盘实例规格内存<16GB,默认InnoDB Buffer Pool = (RDS实例规格内存 - RDS相关管理服务内存 - 底层操作系统内存)* 0.7。
  • 如果RDS云盘实例规格内存 ≥ 16GB,或RDS实例为本地SSD盘,默认InnoDB Buffer Pool = RDS实例规格内存 * 0.7。

为了保障实例稳定性,对于1核1GB、1核2GB等小规格实例,innodb_buffer_pool_size默认设置为256MB。

InnoDB Buffer Pool大小始终为innodb_buffer_pool_chunk_size * innodb_buffer_pool_instances的倍数,如果不为倍数关系时,会自动修改为倍数关系。例如innodb_buffer_pool_chunk_size * innodb_buffer_pool_instances=1GB,如果将innodb_buffer_pool_size设置为1.5GB,系统会自动修改innodb_buffer_pool_size为2GB。

调整单个实例的InnoDB Buffer Pool大小

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

使用模板调整InnoDB Buffer Pool大小

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

参数模板修改