実稼働サーバー(SQL Server 2008、非常に強力なマシン)に接続している間、このSELECTステートメントは2秒かかり、すべてのフィールド(合計4 MBのデータ)を返します。
SELECT TOP (30000) *
FROM person
WITH(NOLOCK);
同じネットワーク上の他のボックスから(SQL認証またはWindows認証を使用して接続)、同じクエリに1分8秒かかります。
私はこの非常に単純なステートメントでテストして、それが索引付けの問題やクエリ関連の問題ではないことを示しています。(現在、すべてのクエリでパフォーマンスの問題があります...)
行はチャンクで提供され、一度にすべてではありません。最初の行をすぐに取得し、行のバッチが入るまで1分以上待ちます。
クエリがリモートボックスから実行されたときのクエリのクライアント統計は次のとおりです。
Query Profile Statistics
Number of INSERT, DELETE and UPDATE statements 0
Rows affected by INSERT, DELETE, or UPDATE statements 0
Number of SELECT statements 2
Rows returned by SELECT statements 30001
Number of transactions 0
Network Statistics
Number of server roundtrips 3
TDS packets sent from client 3
TDS packets received from server 1216
Bytes sent from client 266
Bytes received from server 4019800
Time Statistics
Client processing time 72441 ms (72 seconds)
Total execution time 72441 ms
Wait time on server replies 0
「クライアント処理時間」が合計実行時間に等しいことがわかります。
実際のデータの転送に長い時間がかかる理由を診断するために実行できる手順を誰かが知っていますか?
マシン間のデータ転送速度を制限または制限するSQL構成パラメーターはありますか?