磁盘空间利用率使我认为您在磁盘上的临时表中排序的查询结果集非常大.要检查,请在峰值发生时查找计数器状态变量Created_tmp_disk_tables的增加.
mysql> show global status like 'Created%';
+-------------------------+-------+
| Variable_name | Value |
+-------------------------+-------+
| Created_tmp_disk_tables | 56 |
| Created_tmp_files | 23 |
| Created_tmp_tables | 3177 |
+-------------------------+-------+
如果是,您可能会遇到一些查询,这些查询会导致临时表大到足以使它们无法容纳在内存中,并且必须假脱机到磁盘.不幸的是你无法找出这些临时结果集的大小,但我猜它大约是15 GiB.
您应该弄清楚哪些查询正在生成巨大的临时表并尝试优化这些查询.不幸的是,MySQL没有良好的日志记录信息来跟踪这一情况,而且Amazon RDS不允许您使用增强的MySQL分支替换MySQL的存储,例如Percona Server,它会在慢查询日志中提供此信息.
因此,您必须转到开发环境并对SQL查询进行一些代码检查,逐个运行它们,并确定哪一个是瓶颈.