MySql“;“发送数据”;这个过程太长了

MySql“;“发送数据”;这个过程太长了,mysql,performance,server,debian,mariadb,Mysql,Performance,Server,Debian,Mariadb,我想我的问题是硬件,让我解释一下。我有一个web服务器64GB RAM 16处理器。 在这个web服务器中,我有一个KVM、16GB RAM 8处理器。我在两台服务器(kvm和物理)中都有相同的apache2和mariadb版本和配置。相同的数据库结构、索引、数据等 我的问题出现在KVM上。我有一个php脚本,它执行MySql查询,有时一个查询需要花费大量的时间来发送数据(有时超过60秒才能返回30个结果,有时超过200秒!),有时查询在不到1秒内执行。我不明白为什么 Ps:在我的物理web服务

我想我的问题是硬件,让我解释一下。我有一个web服务器64GB RAM 16处理器。 在这个web服务器中,我有一个KVM、16GB RAM 8处理器。我在两台服务器(kvm和物理)中都有相同的apache2和mariadb版本和配置。相同的数据库结构、索引、数据等

我的问题出现在KVM上。我有一个php脚本,它执行MySql查询,有时一个查询需要花费大量的时间来发送数据(有时超过60秒才能返回30个结果,有时超过200秒!),有时查询在不到1秒内执行。我不明白为什么

Ps:在我的物理web服务器上,我没有问题,我所有的查询执行时间都不到1秒


我在某个地方读到了一条消息,可能是I/o磁盘访问出现了问题,可能吗?

我找到了解决方案,我编辑了
my.cnf
并添加了这些行
innodb\u buffer\u pool\u size=12G innodb\u log\u buffer\u size=8M innodb\u flush\u log\u at\u trx\u commit=0 innodb\u log\u file\u size=256M innodb\u flush\u method=O\u DIRECT
,所有查询的执行时间都少于1秒,甚至1秒也是如此在我的书里慢慢读。您引用的改进意味着它涉及了很多行,因此I/O绑定。有时,可以通过添加复合索引或重新格式化查询来提高性能。让我们看看60年代的一个查询,再加上它的
SHOW CREATE TABLE
EXPLAIN SELECT…
,也许我们可以加快速度。