我们有一个查询,当您从远程计算机的 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 或命名管道。
- 打开 Management Studio
- 单击“连接”->“数据库引擎”
- 单击“选项”
- 在连接属性下更改网络协议
您的查询运行速度还一样慢吗?
另外,当您远程连接时,初始连接是否很慢?我的想法是,这可能是身份验证。
答案3
当您尝试以其他方式(例如远程桌面等)连接到计算机时,性能如何?如果您尝试访问计算机时一切都很慢,则可能是网络问题,例如网卡/电缆损坏、路由器/防火墙问题等。(我见过几台服务器在千兆网卡上使用 10Mbit 模式 :D )
从本地服务器运行时和远程运行时使用相同的用户吗?是 AD 帐户还是 SQL 帐户?
在 Sys.dm_os_waiting_tasks 中查找 waittypes