对于用户核心业务相关的但是配置相对较低的数据库实例
建议您扩容实例规格,具体请参见规格扩容。
对于非用户核心业务相关的数据库实例
查看实例虚拟机内存使用率的相关监控,内存使用率曲线持续平缓,则无需处理。
对于用户核心业务相关但是数据库规格配置高的数据库实例
- 通过控制台监控,观察实例的内存使用趋势情况,如果实例的内存使用率仍持续保持较高:
- 扩容实例规格。
- 调整数据库参数innodb_buffer_pool_size的值:
- 数据库实例内存为2GB规格,参考值256MB。
- 数据库实例内存为4GB规格,参考值1GB。
- 数据库实例内存为8GB规格,参考值3GB。
- 数据库实例内存大于8GB规格,则无需调整。
说明
-
根据实际业务实际情况和内存使用情况,调整参数innodb_buffer_pool_size的值。
-
MySQL本身具有内存动态平衡机制,系统内存使用率90%以下时可无需关注。
-
MySQL的内存分配可划分为Engine层与Server层。
- Engine层的内存包括InnoDB Buffer Pool、Log Buffer、Table Cache、Table definition Cache,其中InnoDB Buffer Pool主要用于缓存表数据页、索引页、数据字典等常用数据,数据库的绝大部分内存都被此占用,这类缓存一般都为常驻内存。InnoDB缓冲池是一个内存区域,可以通过参数innodb_buffer_pool_size改变缓冲池大小。
- Server层的内存占用较高的包括Thread Cache、Binlog Cache、Sort Buffer、Read Buffer、Join Buffer,read buffer等线程缓存,针对每个数据库连接会话独立分配的缓存,独立缓存的总量与连接数成正比,连接数越高,总的独立缓存便越大,但是这类缓存往往会随着连接关闭而释放,并非常驻内存。
以上内存的分配导致MySQL实例运行时内存使用率在80%左右。