Po połączeniu z naszym serwerem produkcyjnym (SQL Server 2008, bardzo mocna maszyna), instrukcja SELECT zajmuje 2 sekundy , zwracając wszystkie pola (łącznie 4 MB danych).
SELECT TOP (30000) *
FROM person
WITH(NOLOCK);
Z dowolnego innego urządzenia w tej samej sieci (łączenie za pomocą uwierzytelniania SQL lub Windows) to samo zapytanie zajmuje 1 minutę i 8 sekund .
Testuję tę bardzo prostą instrukcję, aby zilustrować, że nie jest to problem z indeksowaniem ani problem związany z zapytaniami. (W tej chwili mamy problemy z wydajnością wszystkich zapytań ...)
Rzędy występują w kawałkach i nie wszystkie naraz. Natychmiast otrzymuję pierwsze rzędy, a następnie czekam ponad 1 minutę na pojawienie się partii rzędów.
Oto statystyki klienta zapytania, które jest uruchamiane ze zdalnego pola:
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
Widzimy, że „Czas przetwarzania klienta” jest równy całkowitemu czasowi wykonania.
Czy ktoś wie, jakie kroki mogę podjąć, aby zdiagnozować, dlaczego transfer rzeczywistych danych zajmuje dużo czasu?
Czy istnieje parametr konfiguracyjny SQL, który ogranicza lub ogranicza szybkość przesyłania danych między komputerami?