【问题标题】:MySQL query runs 5x slower on staging server than local dev machingMySQL 查询在登台服务器上的运行速度比本地开发机器慢 5 倍
【发布时间】:2012-12-14 02:20:36
【问题描述】:

我的暂存服务器上的查询运行速度比本地开发机器慢 5 倍。

Stackoverflow 不想很好地处理格式;查询、描述和解释位于here

查看describe 语句,我看不出本地架构和远程架构之间有任何区别。

2 台机器的记录数处于同一数量级(500k 与 600k)

根据评论进行编辑

这是我将查询放入 MySQL Workbench 并查看查询时间的非常不科学的方法。本地查询时间大约为 1.3 秒,远程查询时间大约为 5.2 秒(因此慢了 4 倍)。我确信有更好的方法来测试这个查询时间。

机器不同。我的开发机器是一台配备 8 GB RAM 的 Mac Book Pro。登台服务器是一个具有 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 问题吗? (gist 中的完整分析信息)

【问题讨论】:

  • 嗯,这两台机器是不是规格差不多?
  • 你怎么知道它运行慢了 5 倍?
  • 另外,您的登台服务器上还有其他东西在运行吗?
  • 更新了问题,希望能回答提出的问题
  • @Tyler:是的,它可以。您的开发机器的 RAM 是另一台机器的 16 倍。

标签: mysql performance indexing


【解决方案1】:

您的登台服务器的 RAM 是 Mac Book Pro 的十六分之一。

如果不知道有多少 RAM 可用于您的两个 MySQL 实例,很难确定,但这是我首先要看的地方。

另外,如果您在本地从 MySQL 命令行运行这些查询,时间比较如何? 时间的增加可能是网络传输而不是查询处理。

其实...网络传输时间是我首先要看的地方...然后是 MySQL 内存使用情况。

编辑以下问题更新

“发送数据”阶段是服务器向客户端ref 发送数据的阶段。我不知道你的数据集到底有多大,但是对于大约 50kB 的数据来说,2.5s 似乎相当高。 查看分析数据后,几乎所有时间都花在发送数据上,所以我强烈怀疑这里的网络。

编辑 2

一些研究将我引向this page,这表明“发送数据”具有误导性,这实际上是执行查询所花费的时间。

因此,我真的认为您需要查看服务器上的 CPU 和内存使用情况,因为它的规格比您的 MacBook 低得多。

【讨论】:

  • 如何查看网络传输时间和查询时间?只是通过 ssh 进入机器并从命令行运行这些命令来解决这个问题吗?
  • @TylerDeWitt 是的。我非常同意记忆点。 free 告诉你什么关于交换使用的信息?
  • @Tyler:尝试使用分析推荐,例如SET profiling = 1; SELECT <your time cinsuming query>; SET profiling = 0; SHOW PROFILE;。它提供了 MySQL 在各种操作上花费的时间的分解。比较本地与远程。
  • @TylerDeWitt 是:SSH 进入机器并使用 cli 客户端。查询完成后会报告执行时间。或者,使用 Salman A 建议的分析命令
  • 是的,分析他们。 EXPLAIN 计划看起来相同,因此网络时间可能是问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-02
  • 1970-01-01
  • 2020-10-03
  • 1970-01-01
  • 1970-01-01
  • 2015-01-03
  • 2013-01-15
相关资源
最近更新 更多