2015-07-28 2 views
1

Я понимаю, что это не очень конкретный вопрос, но все еще спрашивающий в надежде, поскольку это то, о чем я не очень хорошо знаю.Разделение ресурсов между процессами - сайты становятся медленными при интенсивной загрузке файлов csv на сервер sql

У нас есть настольное приложение .net, которое работает как служба расписания ежедневно на сервере, загружает около 80 миллионов записей из файлов csv. то, во всяком случае, у нас есть много алгоритмов, идущих по данным после загрузки. весь этот процесс занимает около 7 часов.

В качестве настройки сервера у нас есть выделенный оконный сервер с SQL Server 2008 R2. Таким образом, у нас есть наш сайт и наше приложение (загрузка данных). Но когда приложение работает, наш сайт становится медленнее, а иногда и не реагирует Я полностью понимаю причину. но не знают выхода.

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

В моем сознании я могу думать о следующем .. Просто мысли, я даже не знаю, если это возможно.

  1. Возможно, это может быть как две машины. один для загрузки данных и один для обслуживающих сайтов. но как-то оба могут использовать один и тот же сервер sql. Я надеюсь, что с такой структурой ресурсы, используемые настольным приложением, не замедлят работу сайта, поскольку у него есть собственные ресурсы для использования

2.) Возможно, я могу ограничить процессор/память, которая может быть используемых приложением.

Примечание: некоторые из запросов get очень сложны и длится долго. иногда до 30 минут. Использование IIS в качестве веб-сервера.

+0

Я бы выбрал решение с двумя машинами. Три машины были бы еще лучше. Наличие вашего SQL Server в том же физическом поле, что и ваш веб-сервер, далек от оптимального. –

+0

@TabAlleman Я хотел бы узнать больше об этом, если можно. Как это работает. имеет сервер sql на другой машине, замедлит процесс загрузки данных? это уже 7 часов. – Ankit

+0

какое издание вы? –

ответ

0

Я попытаюсь решить ваши 2 очка один на один:

Вариант 2 машины

Это может быть жизнеспособным решением, но вам нужно будет иметь в виду, что вам нужно дополнительное окон и дополнительной лицензии SQL Server +, возможно, дополнительного оборудования, я не уверен, что это самый экономичный вариант;

Ограничение ресурсов

То есть также возможность, если у вас есть SQL Server Enterprise Edition, смотрите в Resource Governor для получения дополнительной информации о том, как установить, что.

SQL Server Resource Governor - это функция, которая позволяет использовать нагрузку на SQL Server и расход системных ресурсов. Регулятор ресурсов позволяет указать ограничения на объем памяти CPU, физического IO и , которые могут использовать входящие запросы приложений.

Если у вас нет выпуска Enterprise, это не вариант.

Возможно, существует третий вариант, который доступен также со стандартной версией.

Несколько экземпляров

Вы можете установить 2 экземпляра SQL на том же поле и присвоить им различные ограничения памяти.

Если IO является вашим узким местом, вы также можете выбрать разные диски данных/журналов для каждого экземпляра.

+0

у нас есть стандартное издание. Я не понимаю, почему по первому варианту нам потребуется две лицензии? Мое настольное приложение и веб-сайт используют одну и ту же базу данных, поэтому я не буду хранить их в одном экземпляре сервера sql? Infact Я думал, что у нас будет сервер sql только на одной машине (с приложением для загрузки данных) и на другом сайте. Предполагая, что подключение к серверу sql на другой машине не будет замедлять работу сайта много .. – Ankit

+0

в вашем вопросе вы явно указываете «Просто для того, чтобы быть более понятным, у нас есть две базы данных. В то время как загрузка происходит на сайте, используется вторая база данных " –