Сколько стоит сеть - определяя нагрузку на сеть в SQL Server - PullRequest
2 голосов
/ 05 мая 2009

У нас есть dev-сервер, работающий на C # и говорящий с SQL-сервером на той же машине.

У нас есть другой сервер, выполняющий тот же код и общающийся с сервером SQL на другом компьютере.

Задание выполняет 60 000 операций чтения (то есть вызывает хранимую процедуру 60 000 раз - каждое чтение возвращает одну строку).

Задание выполняется в 1/40-й раз на первом сервере по сравнению с заданием на втором сервере.

Мы уже рассматриваем «внутренние» различия между двумя SQL-серверами (фрагментация, tempdb, память и т. Д.), Но как определить, насколько медленнее вторая конфигурация, просто потому, что она должна передаваться по сети ?

[довольно странно, что я нашел инструмент «SQL Server Ping», но на самом деле он не пытается выполнить какие-либо измерения времени, которые, насколько я вижу, - то, что нам нужно]

Ответы [ 3 ]

1 голос
/ 06 мая 2009

Откройте SQL Server Management Server на удаленном компьютере. Начать новый запрос. Нажмите Query, Включить статистику клиента. Запустите вашу хранимую процедуру. На вкладке «Статистика клиента» результатов вы увидите некоторую основную информацию о том, сколько пакетов было отправлено туда и обратно по сети. Я предполагаю, что за одно чтение ты не увидишь слишком много накладных расходов.

Чтобы получить лучшее представление, я бы попробовал сделать простой выбор из 60000 записей (поскольку вы сказали, что он возвращает 60 000 записей по одной) по сети с удаленного компьютера. Опять же, это не даст вам представление о накладных расходах хранимой процедуры, но даст вам быстрое представление о скорости сети между компьютерами.

0 голосов
/ 05 мая 2009

Каких результатов вы ожидаете? Запуск всего на одной машине по сравнению с сетью, безусловно, даст вам разные сроки. Ваша самая большая разница во времени - пропускная способность сети. Вам необходимо связаться с сетевым сервером обоими способами.

Если вы можете включить NOCOUNT, это поможет уменьшить сетевой трафик.

0 голосов
/ 05 мая 2009

SQL Server поставляется с утилитой Profiler. Это скажет вам, каково время выполнения вашего запроса на каждом из ваших экземпляров SQL Server. Обратите внимание на любые несоответствия. Какое бы время (в столбце ExecutionTime) не могло быть учтено, здесь время передачи ... или время отображения клиента Возможно, вашему клиентскому компьютеру требуется больше времени для визуализации результатов или их вычисления.

...