如何确定查询在生产服务器上花费的时间比在开发机器上花费的时间长?

时间:2014-07-30 21:21:20

标签: mysql sql

我的查询只在我的开发机器上运行0.004s(在硬盘驱动器上运行WampServer的Windows 7)但在生产服务器上运行0.057s(在SSD上运行CENTOS 6.5) - a相差14倍。两个MySQL版本都是一样的。

两个服务器上的explain结果相同,数据库也是如此(我从生产服务器导出数据库并将其导入我的开发机器)。我也在两台服务器上运行了optimize table,并尝试输入SQL_NO_CACHE,但这对任何一台服务器都没有任何影响。

Navicat在“个人资料”标签下显示:

生产

enter image description here

开发

enter image description here

两个服务器上的查询执行时间一致。

数据库版本相同,内容相同,explain结果相同。有没有办法确定为什么查询在我的生产服务器上花了14倍的时间?

编辑:为了确定MySQL服务器是否处于负载状态,我在Navicat中找到了Process List区域,并且可以看到只有少数几个进程,所有这些进程都用于" Sleep"命令。所以我不认为生产服务器有任何负担。

1 个答案:

答案 0 :(得分:1)

生产服务器似乎在列出的每个参数中都较慢。可能涉及很多因素,因此您应该检查每一个因素:

  1. 首先,检查生产服务器上是否还有其他负载。服务器是否在同时做其他事情?使用Linux命令top查看正在运行的进程,并检查它们是否正在使用大量计算能力。使用MySQL命令SHOW STATUS获取有关MySQL服务器状态(内存,打开表,当前连接等)的信息。
  2. 检查硬件:现在有些台式机比廉价虚拟服务器(CPU,RAM频率和访问时间......)更强大。
  3. MySQL可以在两种环境中使用不同的设置
  4. 确保两个数据库都有相同的索引。