Почему соединение с базой данных приводит к очень медленной загрузке данных - PullRequest
0 голосов
/ 01 августа 2011

Это моя строка подключения:

<add name="ConnectionString" connectionString="Data Source=server;Initial Catalog=databaseName;Persist Security Info=True;User ID=username;Password=password" providerName="System.Data.SqlClient" />

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

Я имею в виду, что этомедленно но работаетЯ думаю, что есть проблема с типом строки подключения, потому что другое приложение, использующее OleDb, работает очень хорошо.как я могу это исправить?Я не хочу менять код моего приложения.

Ответы [ 2 ]

1 голос
/ 01 августа 2011

Были ли недавно внесены изменения в ваш DNS?

Попробуйте одно из этих двух изменений

  • Измените источник данных на IP-адрес:

    • команда shell: ping (имя сервера) - это даст вам IP-адрес сервера
  • Измените имя сервера, чтобы оно было полностью квалифицированным, включая доменимя

    • вместо 'имя_сервера', установите его 'servername.mydomain.com'
1 голос
/ 01 августа 2011

Нет ничего принципиально неправильного в этой строке подключения. Это оставляет два вероятных сценария:

  • две машины имеют разную топологию сети - возможно, одна географически удалена, маршрутизируя через VPN-туннель по медленному каналу связи (делая абсурдно преувеличенный пример только для иллюстрации)
  • возможно, одно приложение разумно написано с точки зрения доступа к данным, а другое - не

Полагаю, второй вариант более вероятен. Если код вашего приложения не фильтруется в соответствующих местах (т. Е. Загружается целая таблица для выбора одной строки в памяти), тогда да: он будет плохим.

Я не хочу менять код моего приложения.

Если мое предположение выше (второй пункт) верное, то плохая производительность является полностью ошибкой кода приложения, и единственным исправлением будет изменение кода приложения; «хочу» имеет очень мало общего с этим. Если бы вы могли показать некоторый пример кода доступа к базе данных, который, очевидно, помог бы, но будьте уверены: никакой медлительности , вызванной ADO.NET, нет. Однако плохо записанный доступ к данным приложение код будет всегда приводить к снижению производительности.

Если проблема на самом деле в сетевой топологии, то для этого необходимо design ; Приложения, разработанные для быстрого локального соединения, имеют тенденцию работать плохо, когда БД и приложение находятся далеко. Единственное исправление заключается в том, чтобы снова изменить код приложения, чтобы он был менее болтливым и, как мы надеемся, менее подверженным влиянию как задержек (много небольших запросов), так и проблем с пропускной способностью (большие запросы).

...