Как уменьшить нагрузку на удаленный SQL Server? - PullRequest
7 голосов
/ 13 июля 2011

Я хочу создать приложение на C # со стороны клиента и сервера. Это будет работать через локальную сеть. Стороны клиента должны проверять наличие обновлений на удаленном сервере SQL. Допустим, мы установили интервал обновления 2 секунды. Если у меня есть 20 клиентских приложений, они будут отправлять запросы на удаленный SQL Server каждые 2 секунды, и это будет загружать сервер довольно много. Теперь я хочу знать, есть ли способ уменьшить нагрузку на сервер или это единственный способ проверить наличие обновлений?

1 Ответ

14 голосов
/ 13 июля 2011

С моей точки зрения, нет необходимости разрешать клиентам подключаться к серверу БД напрямую.Здесь должен быть еще один уровень, который будет подключаться только к серверу и кэшировать информацию об обновлениях.Ваши клиенты должны подключиться к этой дополнительной информации и работать с кэшированной информацией.

ОБНОВЛЕНИЕ Насколько я понимаю, проблема возникает потому, что все ваши клиенты пингуют ваш сервер БД каждые две секунды.Решением этой проблемы является создание специального модуля, который будет иметь доступ только к серверу БД и запрашивает его обновление.Например, каждые две секунды.Если обновление готово, оно должно быть в состоянии извлечь его из БД и сохранить.Это то, что я имел в виду под дополнительным уровнем.

Теперь давайте вернемся к вашим клиентам.Они должны иметь возможность общаться с этим модулем и получать от него информацию о готовом обновлении (эта информация кэшируется, и поэтому ее очень быстро получить. Кроме того, вам не нужно пинговать сервер при каждом запросе клиента).Если обновление готово, загрузите его на стороне клиента и работайте на стороне клиента.

Что касается связи между этим дополнительным уровнем и клиентами.Поскольку вы работаете с .NET, я бы посоветовал вам взглянуть на WCF, который, с моей точки зрения, становится стандартным подходом для реализации межпроцессного взаимодействия в .NET.В сети много информации об этом, я скоро опубликую ссылки.

Вот моя любимая книга WCF:

Программирование служб WCF

MSDN-запись:

Windows Communication Foundation

...