更新时间:2024-09-05 GMT+08:00
RDS for MariaDB数据库内存使用率过高怎么处理
对于用户核心业务相关的库
请扩容实例规格。
对于非用户核心业务相关的库
查看本地计算机的内存使用率,如果使用率曲线持续平缓,则无需处理。
对于用户核心业务相关但是数据库规格配置很高的库
- 在业务低峰期,将数据库参数“performance_schema”的值调整为“OFF”,需要重启数据库才能生效。
- 通过智能DBA助手查看实例的内存使用情况,具体请参见查看性能指标。
如果实例的空间使用率仍持续保持较高:
- 请扩容实例规格。
- 调整数据库参数“innodb_buffer_pool_size”的值:
- 数据库实例为2GB规格,参考值268,435,456 Byte(256MB)。
- 数据库实例为4GB规格,参考值1,073,741,824 Byte(1GB)。
- 数据库实例为8GB规格,参考值3,221,225,472 Byte(3GB)。
- 数据库实例内存大于8GB规格,则无需调整。
- 请根据业务实际情况,调整参数“innodb_buffer_pool_size”的值。
- MariaDB本身具有内存动态平衡机制,90%以下您可无需关注。
- RDS for MariaDB的内存分配可划分为Engine层与Server层。
- Engine层的内存包括InnoDB Buffer Pool、Log Buffer、Full Text Index Cache,其中InnoDB Buffer Pool为常驻内存,占用内存较大。
InnoDB缓冲池是一个内存区域,用于保存InnoDB表、索引和其他辅助缓冲区的缓存数据,可以通过参数“innodb_buffer_pool_size”定义缓冲池大小。
- Server层的内存占用较高的包括Thread Cache、BinLog Cache、Sort Buffer、Read Buffer、Join Buffer等线程缓存,这类缓存非常驻内存,往往会随着连接关闭而释放。
以上内存的分配导致RDS for MariaDB实例运行时内存使用率在80%左右。
- Engine层的内存包括InnoDB Buffer Pool、Log Buffer、Full Text Index Cache,其中InnoDB Buffer Pool为常驻内存,占用内存较大。