我的登台服务器上运行的查询速度比本地开发机器慢5倍。
Stackoverflow不希望与格式很好地配合;查询,描述和解释位于here
查看describe
语句,我看不出本地和远程模式之间的任何区别。
2台机器的记录数量处于同一数量级(500k vs 600k)
编辑以回应评论
将查询抛入MySQL Workbench并查看查询时间是我非常不科学的方法。本地查询时间大约为1.3秒,远程查询时间大约为5.2秒(因此其4x为慢速)。我确信有更好的方法来测试这个查询时间。
机器不同。我的开发机器是Mac Book Pro,有8个内存。登台服务器是一个具有512兆字节RAM的linode VPS。登台服务器上应该没有太多负载(我是唯一使用它的人)。我注意到大多数查询在本地计算机和登台服务器上的大致相同的时间范围内运行,所以我很困惑为什么这个查询具有如此截然不同的时间框架。
内存问题
由于没有使用临时表(EXPLAINS
中没有提及),RAM的数量是否仍然存在问题?
free
total used free shared buffers cached
Mem: 508576 453880 54696 0 4428 254200
-/+ buffers/cache: 195252 313324
Swap: 262140 19500 242640
分析已添加到Gist
看起来遥控器需要2.5秒“发送数据”,而本地只需要0.5秒。这是一个I / O问题吗? (完整的分析信息)
答案 0 :(得分:4)
您的登台服务器只有Mac Book Pro拥有的十六分之一。
在不知道你的两个MySQL实例有多少可用RAM的情况下,很难确定,但这是我看的第一个。
另外,如果您从MySQL命令行本地运行这些查询,那么时间比较如何? 可能是时间的增加是网络传输而不是查询处理。
实际上......网络传输时间是我看的第一个......然后是MySQL内存使用。
“发送数据”阶段是服务器将数据发送到客户端ref的阶段。我不确切知道你的数据集有多大,但2.5s似乎相当高,可能是50kB左右的数据。 看过分析数据后,几乎所有的时间都花在发送数据上,所以我强烈怀疑这里的网络。
有些研究引导我this page,这表明“发送数据”具有误导性,并且实际执行查询的时间。
因此,我真的认为您需要关注服务器上的CPU和内存使用情况,因为它的调整水平远低于MacBook。