在服务器上运行查询时,mysqld进程会占用大量iowait CPU。我已经读过关于innodb_buffer_pool_size设置的内容,使这个值高于默认的128M应该对减少iowait有积极的影响(因为它会将数据库信息缓存在内存中)。
我已经将innodb_buffer_pool_size的值更改为3GB(并通过检查运行中的mysql中的变量来验证设置),并且mysqld进程的虚拟内存使用也相应增加,但我仍然看到很高的iowait数字(而且mysql只有很小的驻留内存占用)。
除了innodb_buffer_pool_size之外,还有什么可以帮助减少iowait(读取操作)。

最佳答案

结果发现,我正在运行的一个查询中有一个Order By子句,由于我返回的数据太大,Order By强制在磁盘(而不是内存)上进行排序。我的修复方法是从查询中删除Order By,并在应用程序的内存中进行排序。

10-08 15:23