innodb_buffer_pool_size 不减少 iowait

innodb_buffer_pool_size not reducing iowait

当 运行 在我的服务器上查询时,我看到 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,然后在我的应用程序的内存中进行排序。