Оптимизация балансировки нагрузки SQL Server. Хит или оптимизация запроса - PullRequest
0 голосов
/ 07 января 2012

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

Учитывая эту простую проблему, как бы вы решили ее масштабируемым образом.

1. ProjectResource - это класс (инкапсуляция ресурсов, назначенных для Project)

2. Каждому ресурсу, назначенному для Project, является User Class

3.EachUser в Project также имеет ReportingHead и ProjectManager, которые также являются экземплярами User

4. Наконец, существует класс Project, содержащий детали проекта

Обозначения используемых классов

  • Пользователь

  • Проект

  • ProjectResource

Диаграмма таблицы

  1. ProjectResource

    • ResourceId

    • ProjectId

    • UserId

    • ReportingHead

    • ProjectManager

Диаграмма классов

  1. ProjectResource

    • ResourceId: String / Guid

    • Проект: Проект

    • Пользователь: пользователь

    • ReportingHead: Пользователь

    • ProjectManager: Пользователь

примечание:

Вся пользовательская информация хранится в таблице User

Вся информация о проекте хранится в таблице Project

Вот проблема

Когда запросы приложения на ресурс в проекте выполняются ниже

  • Сначала получите записи для проекта

  • Получите ID пользователя, сделайте запрос (используя Users DAL), чтобы получить экземпляр пользователя

  • Получите ProjectId, сделайте запрос (используя Projects DAL), чтобы получитьинформация о проекте

  • Наконец, присвойте Users и Project экземпляру ProjectResource

, ясно, что вы можете видеть 3 Db Calls сделаныздесь для populating single ProjectResource но проблемы и кто управляет объектами четко определены. Это способ, которым я запланировал , поскольку в Sql Server & ADO.net

& 1139 ** также имеется connection pooling. Есть также другой способ, где все детали извлекаются в одном виде.нажмите «Внутренние объединения таблиц», а затем «Заполнение».

Какой путь мне следует выбрать и почему?

Дополнительно:

.NET 2.0, ASP.net 2.0, C #,Sql Server 2005, БД на том же компьютере, на котором размещено приложение.

1 Ответ

1 голос
/ 07 января 2012

Для лучшей производительности и масштабируемости вы должны минимизировать количество обращений к БД.Чтобы доказать это себе, просто запустите несколько тестов;это становится ясно очень быстро.

Один из подходов к одному циклу - использование объединений.Другой - вернуть несколько наборов результатов.Последнее может помочь в устранении возможных дубликатов данных.

...