1

У меня есть программа, написанная на Delphi, которая использует SQL Server 2008 в качестве движка базы данных. Я нахожусь на связи p2p, предоставленной двумя нано станциями m5. Когда я запускаю определенный запрос внутри программы, монитор сети показывает, что клиент получает некоторые данные с сервера со скоростью 8 Мбит / с в течение 6 секунд.

Также, когда я подключаю клиента напрямую к серверу по кабелю Ethernet и выполняю тот же запрос, он захватывает те же данные, но быстрее (получение этих данных со скоростью 20 Мбит / с всего за 2 секунды), но когда я копирую большой файл с сервера на клиент, он будет скопирован со скоростью до 55 Мб / с.

Это беспокоит меня, потому что это заставляет клиентское приложение работать так медленно, как реальная пропускная способность сети, я хочу знать, есть ли способ заставить сервер sql использовать максимальную пропускную способность сети?

Windows Server 2012 R2 и SQL Server 2008 работают только с включенным сетевым протоколом tcp/ip и 100 МБ дуплексного сетевого сервера Core i5 с 8 ГБ DDR 3 и 160 ГБ SSD и гигабитной сетевой картой

1 ответ1

0

Вы не получите ту же скорость, что и при передаче файла, но, надеюсь, вы сможете быстрее.

Используйте SQL Profiler для записи запроса в базу данных. Посмотрите на результаты, чтобы убедиться, что программа не отправляет ненужные запросы, сопровождающие основной запрос, что из-за задержки может замедлить работу. В идеале вы хотите увидеть соединение и только один запрос.

Также можете ли вы внести изменения в программу Delphi? Если вы можете, убедитесь, что он использует пул соединений. (Создайте соединение один раз и повторно используйте его, когда нужно выполнить запрос). Для самого SQL-соединения требуется обмен примерно 16 пакетами, умножьте это на вашу задержку, и оно может сложиться. Скажем, у вас задержка 100 мс, тогда соединение может занять 1,6 секунды.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .