需要您的帮助来理解这一点。我正在运行一个具有 100GB 存储空间的 RDS MySQL 实例(SSD 上的 db.m3.large)。
我有点害怕,我的记忆只有 50%:
图表 http://f.cl.ly/items/2130242A0K040E392h0L/10.png
我肯定做错了什么,因为目前服务器的使用率并不高。以下是过去两周的图表:
2周使用图表 http://f.cl.ly/items/2y411W0z0I1V1T0T3O3T/11.png
如您所见,CPU 大部分处于 0%,DB 连接数较低,写/读操作也较低。
我确实运行了所有 InnoDB 表。我唯一想到的(可能将内存增加得如此之高)是我的分析功能。我有一张表(分片)用于存储分析计算的每日摘要。该表有 4 个mediumtext
字段,因此我已将 InnoDB 更改为对该表使用 Barracuda 文件格式(这样我就可以拥有row_format=compressed
)。这是该实例唯一非默认的 DB 参数(其他所有参数都是现成的)。
我甚至没有在那个表中记录很多行,目前最大的行可能最多只有 35kb。最大的客户有 56 行(我也没有很多客户)。所以令我惊讶的是,这可能是导致这种情况的原因……
您能告诉我为什么我的内存占用这么高吗(也就是我搞砸了什么)?是因为 MySQL 缓存了我的分析查询/结果吗?还是其他原因?
答案1
关于发生了什么的提示在“可用内存”图表中。如果您的数据库在进程内存中保存了大量表数据和索引数据,那么这个数字会比现在小很多。就目前而言,可用内存几乎与总内存一样大。
按设计工作,这里没什么可看的。请设置 PANIC = FALSE。