GaussDB(for MySQL)标准版数据库内存使用率过高怎么处理
对于用户核心业务相关的库
请扩容实例规格,具体请参见变更GaussDB(for MySQL)标准版实例的CPU和内存规格。
对于非用户核心业务相关的库
查看本地计算机的内存使用率,如果使用率曲线持续平缓,则无需处理。
对于用户核心业务相关但是数据库规格配置很高的库
- 在业务低峰期,将数据库参数“performance_schema”的值调整为“OFF”。
- 通过CES监控面板,观察实例的内存使用情况。具体请参见查看GaussDB(for MySQL)标准版实例监控指标。
如果实例的内存使用率仍持续保持较高:
- 请扩容实例规格。
- 调整数据库参数“innodb_buffer_pool_size”的值。参数建议值见表1,实际可修改的取值范围以控制台界面为准。
表1 不同内存规格对应的参数建议值 内存(GB)
5.7建议值
8.0建议值
2
536,870,912 Byte(512 MB)
536,870,912 Byte(512 MB)
4
1,073,741,824 Byte(1 GB)
1,073,741,824 Byte(1 GB)
8
4,294,967,296 Byte(4 GB)
5,368,709,120 Byte(5 GB)
16
8,589,934,592 Byte(8 GB)
9,663,676,416 Byte(9 GB)
32
22,548,578,304 Byte(21 GB)
21,474,836,480 Byte(20 GB)
64
47,244,640,256 Byte(44 GB)
47,244,640,256 Byte(44 GB)
128
94,489,280,512 Byte(88 GB)
94,489,280,512 Byte(88 GB)
192
146,028,888,064 Byte(136 GB)
146,028,888,064 Byte(136 GB)
256
193,273,528,320 Byte(180 GB)
193,273,528,320 Byte(180 GB)
384
300,647,710,720 Byte(280 GB)
300,647,710,720 Byte(280 GB)
512
412,316,860,416 Byte(384 GB)
412,316,860,416 Byte(384 GB)
768
618,475,290,624 Byte(576 GB)
618,475,290,624 Byte(576 GB)
1024
824,633,720,832 Byte(768 GB)
824,633,720,832 Byte(768 GB)
- 请根据业务实际情况,调整参数“innodb_buffer_pool_size”的值。
- MySQL本身具有内存动态平衡机制,内存使用率在90%以下您可无需关注,同时建议内存使用率告警阈值设置不低于90%。
- 在业务运行中缓冲池内存会逐渐增大至“innodb_buffer_pool_size”的值,可通过监控指标“缓冲池利用率”查看缓冲池内存的增长趋势。
- GaussDB(for MySQL)标准版的内存分配可划分为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等线程缓存,这类缓存非常驻内存,往往会随着连接关闭而释放。
以上内存的分配导致GaussDB(for MySQL)标准版实例运行时内存使用率在80%左右。
- Engine层的内存包括InnoDB Buffer Pool、Log Buffer、Full Text Index Cache,其中InnoDB Buffer Pool为常驻内存,占用内存较大。