通过CloudDBA 的SQL统计功能,发现SQL比较简单,也有索引,所以排除是这两方面设计的问题。

innodb_buffer_pool命中率还不到99%,命中率不高的,而iowait>=2略微高,所以推测是命中率不高,导致数据在内存里换进换出导致。 image.png2

通过查看内存里面的数据和索引的大小,可以看到:

数据和索引已经将近440G,而BP却还是1G,更加可以印证上面的推测(数据在内存里面被频繁的换进换出)。 再来验证下:

过十多分钟再看,BP里面的内容已经不一样了: image.png4

看到innodb_buffer_pool才1G,所有问题都已经明朗,那么如何解这个问题呢?

我们再进一步看这个实例下面其实是有几十个库的,解决这个问题有两种方法:

  1. 直接升级整个实例规格

这么大的磁盘空间,又这么低的tps,所以我推荐第2种方法,拆分后其实也相当于变相地达到了升级实例规格的目的。把大实例拆成小实例后,再来看下对比: