我们有一台运行C#的开发服务器,并在同一台机器上与SQL服务器通信。
我们有另一台服务器运行相同的代码并与另一台机器上的SQL服务器通信。
一个作业执行60,000次读取(即它调用存储过程60,000次 - 每次读取返回一行)。
与第二台服务器上运行的作业相比,作业在第一台服务器上以1/40的时间运行。
我们已经在研究两个SQL Server(碎片,tempdb,内存等)之间的“内部”差异,但是确定第二个配置的速度有多快,因为它必须通过网络?
[相当令人困惑的是我发现了一个'SQL Server Ping'工具,但它实际上并没有尝试任何时序测量,据我所知,这是我们需要的]
答案 0 :(得分:1)
在远程计算机上打开SQL Server Management Server。开始新的查询。单击“查询”,“包含客户端统计”运行存储过程。在结果的“客户端统计信息”选项卡中,您将看到有关已发回的数据包的一些基本信息。通过网络。我的猜测是,对于一次阅读,你不会看到那么多开销。
为了获得更好的想法,我会尝试从远程计算机上通过网络简单地选择60,000条记录(因为你说它一个接一个地返回60,000条记录)。同样,这并不能让您了解存储过程开销,但它会让您快速了解机器之间的网络速度。
答案 1 :(得分:0)
SQL Server附带Profiler实用程序。这将告诉您查询在每个SQL Server实例上的执行时间。注意任何差异。无论何时(在ExecutionTime列中)都不能考虑这里的传输时间......或客户端显示时间。也许您的客户端机器需要更长的时间来呈现结果或计算结果。
答案 2 :(得分:0)
您期待什么结果?在一台机器上运行所有内容而不是通过网络运行一定会给你不同的时间。您最大的时间差异将是网络吞吐量。您需要以两种方式与网络服务器进行通信。
如果您可以将NOCOUNT设置为on,这将有助于减少网络流量。