2009-05-05 71 views
2

我們有一臺開發服務器運行C#並在同一臺機器上與SQL服務器交談。在網絡中確定網絡開銷多少錢

我們有另一臺服務器運行相同的代碼並與另一臺機器上的SQL服務器通信。

作業執行60,000次讀取(即它調用存儲過程60,000次 - 每次讀取返回一行)。

作業在第一臺服務器上運行的時間比在第二臺服務器上運行時間的四十分之一長。

我們已經在研究兩個SQL Server(碎片,tempdb,內存等)之間的「內部」差異,但是確定第二個配置的速度有多慢的一個好方法就是因爲它必須通過網絡?

[相當容易混淆我發現了一個「SQL Server的平安」的工具,但它實際上並沒有嘗試任何定時測量其中,據我所看到的,就是我們需要]

+0

是同一網段上的所有機器嗎? – 2009-05-05 02:48:15

+0

它們實際上位於兩個完全不同的網絡上 - 只是運行相同的過程並使用具有相同結構和相同數據庫的數據庫(一個是單個程序員使用的開發環境,另一個是分段環境) – shearichard 2009-05-05 05:14:57

回答

1

打開遠程計算機上的SQL Server Management Server。開始一個新的查詢。點擊查詢,包括客戶統計。運行你的存儲過程。在結果的「客戶端統計」選項卡中,您將看到一些基本信息,說明有多少數據包在網絡上發回&。我的猜測是,對於一次閱讀,你不會看到那麼多的開銷。

爲了得到一個更好的主意,我試着從遠程機器上通過網絡簡單地選擇60,000條記錄(因爲你說它是一個接一個地返回60,000條記錄)。同樣,這並不能給你一個關於存儲過程開銷的想法,但它會給你一個機器間網絡速度的快速座椅概念。

0

SQL Server附帶的探查效用。這將告訴您查詢的執行時間在每個SQL Server實例上。請注意任何差異。無論在什麼時間(在執行時間欄中)都不能計入傳輸時間或客戶端顯示時間。也許你的客戶端機器需要更長的時間來渲染結果或計算結果。

+0

感謝您的回覆。我不是100%確定我理解它。當你說'尋找差異'時,你的意思是比較兩個數據庫服務器上Profiler所顯示的給定動作的時間?我必須承認我沒有想過嘗試。在查看當前的分析器結果時,在對SP的60,000個調用中已經有顯着差異,所以我不確定我可以從中提取多少信息。然而,正如我所說,我沒有嘗試過,也許我應該。我真正喜歡的只是一個工具來衡量一個數據包進出數據庫服務器的時間。 – shearichard 2009-05-05 05:20:24

+0

你在一個。我確實的意思是尋找執行時間的差異。 儘管如果你想要的只是一個工具來衡量一個數據包需要多長時間才能進出數據庫服務器,那麼我是否應該建議使用ping.exe。 – 2009-05-05 18:11:35

0

你期待什麼結果?在一臺機器上運行一切,通過網絡運行一定會給你不同的時間。您最大的時間差異將是網絡吞吐量。您需要以兩種方式與網絡服務器通信。

如果您可以將NOCOUNT設置爲打開,這將有助於減少網絡流量。