Реализация многопоточности в вызовах БД с использованием TPL - PullRequest
0 голосов
/ 26 октября 2011

В веб-приложении, над которым я сейчас работаю, я должен сделать несколько обращений к базе данных и, наконец, объединить результаты для отображения в пользовательском интерфейсе. Прямо сейчас .. Я делаю звонки один за другим и наконец объединяю результаты. Поскольку веб-приложение будет размещаться на многоядерном компьютере (Intel i5), я думаю, что могу использовать TPL для параллельных вызовов БД. Это хорошая идея? Какие вещи / подводные камни я хочу учитывать, когда я делаю параллельные вызовы db?

1 Ответ

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

Здесь нужно запомнить две вещи.Во-первых, вы используете БД, если API не может быть поточно-ориентированным, например, ADO.NET явно не на 100% поточно-ориентирован.Во-вторых, делая это, вы перемещаете нагрузку из клиники в БД.Другими словами, если ваш клиент создает 5 одновременных подключений к БД одновременно, это окажет большее влияние на нагрузку БД.Задержка отдельного клиента для пользователя может быть уменьшена, но за счет общей пропускной способности с точки зрения количества клиентов, которое может поддерживать отдельная БД.

Если в значительной степени зависит от вашего сценария относительно того, считаете ли вы этоявляется хорошим компромиссом.

Вы говорите «мы приложение», если вы имеете в виду веб-приложение, то это схожие компромиссы, я бы рекомендовал этот пост в блоге об использовании TPL из веб-приложения.

http://blogs.msdn.com/b/pfxteam/archive/2010/02/08/9960003.aspx

Это та же проблема.Вы торгуете задержкой индивидуального запроса для пропускной способности или наоборот.

...