查询在本地运行速度极快,在远程机器上运行速度极慢

查询在本地运行速度极快,在远程机器上运行速度极慢

我们有一个查询,当您从远程计算机的 SQL Server Management Studio 运行它时,需要 24-38 秒才能运行,但当使用 SQL Server Management Studio 从本地计算机运行它时,运行时间只需 <1 秒。

SQL Server 2005 Windows Server 2003 R2 标准版在 VMWare 3.5.0 上虚拟化,配备 4GB 内存和单个 CPU。

我还要补充一点,同样的查询在应用程序中运行也很慢 - 而不仅仅是在 SQL Mgmt Studio 中。

知道为什么它在本地运行速度超快,但在远程机器上运行速度却超慢吗?

编辑:SQL Server 处理结果缓存的方式是否不同?我之所以问这个问题,是因为导致问题的软件供应商在表中添加了索引,导致结果在远程显示的速度与在本地显示的速度一样快。我曾使用 SQL Profiler 查看查询完成所需的时间,远程查询确实需要更长的时间才能完成,而现在添加索引后,它们似乎花费了相同的时间。

答案1

我的期望是以下之一:

  • 大量数据正在返回,但数据传输需要很长时间。
  • 远程机器的性能问题。

单击查询窗口中的工具栏按钮“包括客户端统计信息”,查看运行查询后返回的内容。您可以看到从服务器接收到了多少字节、执行时间等。

Client Execution Time                                   12:08:38
Query Profile Statistics                                                                        
  Number of INSERT, DELETE and UPDATE statements        0
  Rows affected by INSERT, DELETE, or UPDATE statements 0
  Number of SELECT statements                           3
  Rows returned by SELECT statements                    15
  Number of transactions                                0
Network Statistics                                                                      
  Number of server roundtrips                           3
  TDS packets sent from client                          3
  TDS packets received from server                      7
  Bytes sent from client                                240
  Bytes received from server                            21306
Time Statistics                                                                 
  Client processing time                                31
  Total execution time                                  61093
  Wait time on server replies                           61062

编辑:

您的评论说它只返回 39 行,所以它可能不是客户端和服务器之间的数据传输。

我会考虑针对过滤到客户端的服务器运行 SQL Profiler,看看可能发生了什么。以下是一些关于使用 SQL Profiler 的精彩文章:

答案2

默认情况下,SQL Server 在进行本地连接时使用共享内存进行连接,在进行远程连接时则使用 TCP/IP 或命名管道。要测试它是否与所使用的协议有关,请尝试进行本地连接,但强制使用 TCP/IP 或命名管道。

  1. 打开 Management Studio
  2. 单击“连接”->“数据库引擎”
  3. 单击“选项”
  4. 在连接属性下更改网络协议

您的查询运行速度还一样慢吗?

另外,当您远程连接时,初始连接是否很慢?我的想法是,这可能是身份验证。

答案3

当您尝试以其他方式(例如远程桌面等)连接到计算机时,性能如何?如果您尝试访问计算机时一切都很慢,则可能是网络问题,例如网卡/电缆损坏、路由器/防火墙问题等。(我见过几台服务器在千兆网卡上使用 10Mbit 模式 :D )

从本地服务器运行时和远程运行时使用相同的用户吗?是 AD 帐户还是 SQL 帐户?

在 Sys.dm_os_waiting_tasks 中查找 waittypes

http://technet.microsoft.com/en-us/library/cc966413.aspx

相关内容