我在服务器上运行查询时,mysqld
进程看到了大量的iowait CPU使用情况。我已经阅读了innodb_buffer_pool_size
设置,并且使此值高于默认值128M应该会对减少iowait产生积极影响(因为它会将数据库信息缓存在内存中)。
我已将innodb_buffer_pool_size
的值更改为3GB(并通过检查正在运行的mysql
中的变量来验证设置),并且我的mysqld
进程的虚拟内存使用已经相应地增加,但我仍然看到非常高的iowait数字(并且mysql只有一个小的驻留内存占用)。
除了innodb_buffer_pool_size
之外还有什么可以帮助减少iowait(用于读取操作)。
答案 0 :(得分:0)
事实证明我运行的其中一个查询中有一个Order By
子句,由于我返回的数据大小,Order By
强制在磁盘上完成排序(不在记忆中)。我的修复是从查询中删除Order By
,然后在我的应用程序的内存中进行排序。